A space-themed vertical scrolling shoot-em-up game built with libGDX and Java. Features player-controlled spaceship combat, enemy AI, wave-based progression, and local score persistence.
- Player Controls: WASD movement, mouse aim, left-click to shoot
- Game Modes:
- Campaign: Wave-based progression with increasing difficulty
- Endless: Infinite waves with escalating challenge
- Enemy Types: Multiple enemy behaviors with distinct attack patterns
- Power-ups: Various temporary effects to aid gameplay
- Score Tracking: Local SQLite database for persistent high scores and leaderboards
- Customization: Player and enemy skins with visual variety
- Audio: Sound effects and background music
- UI: Professional menu system with multiple screens
- Framework: libGDX - Cross-platform Java game framework
- Language: Java 17+
- Build Tool: Gradle 7.4+
- Database: SQLite (embedded, file-based, no server required)
- Desktop Platform: LWJGL3 (Lightweight Java Game Library 3)
OrionShip/
├── core/ # Shared game logic
│ └── src/main/java/io/OrionShip/Orion_Ship/
│ ├── Main.java # Game entry point
│ ├── entities/ # Game objects (ships, bullets, enemies)
│ ├── managers/ # Game state managers
│ ├── screens/ # UI screens (menu, game, pause, etc.)
│ ├── services/ # Database service
│ ├── utils/ # Config, hashing, utilities
│ └── spawners/ # Enemy/wave generation
├── lwjgl3/ # Desktop launcher
│ └── src/main/java/io/OrionShip/Orion_Ship/lwjgl3/
│ └── Lwjgl3Launcher.java # Window setup and launch
├── assets/ # Game resources
│ ├── ui/ # UI fonts and skins
│ ├── sfx/ # Sound effects
│ ├── player-skins/ # Player ship variants
│ └── enemy-skins/ # Enemy ship variants
└── build.gradle # Project configuration
- Java 17 or higher
- Git (optional, for cloning)
# Clean build
gradlew clean build
# Build and run immediately
gradlew lwjgl3:run
# Build executable JAR
gradlew lwjgl3:jar
# JAR output: lwjgl3/build/libs/OrionShip-1.0.jar
# Via Gradle
gradlew lwjgl3:run
# Via JAR (after building)
java -jar lwjgl3/build/libs/OrionShip-1.0.jar
- Type: SQLite (embedded, no external server)
- File:
orionship.db(created automatically) - Location: Working directory (game root)
- Features:
- User authentication (signup/login)
- Score persistence
- Leaderboard storage
- Automatic table creation on first run
Migration Note: This project was migrated from PostgreSQL (cloud) to SQLite (embedded) for simplified deployment and offline capability.
Useful tasks for development:
| Command | Purpose |
|---|---|
gradlew lwjgl3:run |
Run the game |
gradlew build |
Build all modules |
gradlew clean |
Remove build artifacts |
gradlew lwjgl3:jar |
Create executable JAR |
gradlew tasks |
List all available tasks |
Task Flags:
--daemon- Use Gradle daemon (faster)--offline- Use cached dependencies--continue- Continue on build errors
- Textures: PNG files for ships, bullets, enemies, backgrounds
- Fonts: Bitmap fonts for UI text rendering
- Audio: WAV files for sound effects and music
- UI Skins: JSON + Atlas definitions for UI theming
- Classes: 45+ organized in logical packages
- Architecture: Object-oriented design with separation of concerns
- Patterns: Singleton (Config), Object Pool (bullets/power-ups), Manager pattern
- Error Handling: Comprehensive exception handling and validation
Edit Config.java to customize:
- Database file path
- Table names
- Enable/disable database (toggle
USE_DATABASE)
This project is available as-is for educational and personal use.
Last Updated: January 26, 2026