Skip to content

SthNoWork/Orionship

Repository files navigation

OrionShip

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.

🎮 Features

  • 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

🛠️ Technology Stack

  • 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)

📋 Project Structure

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

🚀 Quick Start

Prerequisites

  • Java 17 or higher
  • Git (optional, for cloning)

Build

# 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

Run

# Via Gradle
gradlew lwjgl3:run

# Via JAR (after building)
java -jar lwjgl3/build/libs/OrionShip-1.0.jar

💾 Database

  • 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.

📖 Gradle Commands

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

🎨 Game Assets

  • 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

📊 Development

  • 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

🔧 Configuration

Edit Config.java to customize:

  • Database file path
  • Table names
  • Enable/disable database (toggle USE_DATABASE)

📝 License

This project is available as-is for educational and personal use.

🔗 Resources


Last Updated: January 26, 2026

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages