a tactical roguelike web game
Refactor the GameLoop to implement unit death handling through the new handleUnitDeath method, which removes units from the grid and dispatches relevant events to the MissionManager. Set up MissionManager references and event listeners for mission victory and failure. Update the MissionManager to manage secondary objectives and failure conditions, ensuring proper tracking of game events like unit deaths and turn ends. This integration improves gameplay dynamics and mission management. |
||
|---|---|---|
| docs | ||
| specs | ||
| src | ||
| test | ||
| .gitignore | ||
| build.js | ||
| dependency-graph.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| web-test-runner.config.js | ||
Aether Shards
A tactical turn-based roguelike strategy game built with Three.js, featuring procedurally generated voxel worlds, squad-based combat, and a narrative-driven campaign system.
Overview
Aether Shards is a tactical roguelike where players lead a squad of explorers through procedurally generated 3D voxel environments. The game combines turn-based tactical combat with roguelike progression, featuring a class-based unit system, mission objectives, and persistent campaign progression.
Key Features
🎮 Core Gameplay
- Turn-Based Tactical Combat: Strategic positioning and action point management on a 3D voxel grid
- Squad Management: Build and customize teams from multiple character classes (Vanguard, Aether Weaver, Scavenger, Tinker, Custodian, and more)
- Procedural Generation: Multiple biome generators (Caves, Ruins, Crystal Spires) create unique levels each run
- Mission System: Campaign progression with objectives, narrative sequences, and rewards
- Deployment Phase: Pre-battle unit placement on designated spawn zones
🏗️ Technical Architecture
- 3D Voxel Rendering: Three.js-powered voxel grid system with custom texture generators
- Modular Class System: JSON-defined character classes with skill trees, stats, and equipment
- State Management: Persistent save system using IndexedDB for campaign progress
- Component-Based UI: Lit-based web components for HUD, team builder, and dialogue systems
- Input System: Keyboard and gamepad support with cursor-based grid navigation
🎨 Game Systems
- Unit Classes: 10+ character classes with unique roles (Tank, DPS, Healer, Utility, Tech)
- Skill Trees: Active and passive abilities per class
- Equipment System: Gear that modifies unit stats and capabilities
- Narrative System: Dialogue sequences and story integration
- Objective Tracking: Mission goals with real-time progress monitoring
Tech Stack
- Rendering: Three.js (WebGL)
- UI Framework: Lit (Web Components)
- Build Tool: esbuild
- Testing: Web Test Runner
- Language: JavaScript (ES Modules)
Project Structure
src/
├── assets/
│ ├── data/
│ │ ├── classes/ # Character class definitions (JSON)
│ │ ├── missions/ # Mission configurations
│ │ └── narrative/ # Dialogue sequences
│ └── images/ # Character portraits and assets
├── core/
│ ├── GameLoop.js # Main game loop and Three.js setup
│ ├── GameStateManager.js # Application state management
│ ├── InputManager.js # Input handling (keyboard/gamepad)
│ └── Persistence.js # Save/load system
├── generation/
│ ├── BaseGenerator.js # Base class for world generators
│ ├── CaveGenerator.js # Cave biome generator
│ ├── RuinGenerator.js # Ruin biome generator
│ └── textures/ # Procedural texture generators
├── grid/
│ ├── VoxelGrid.js # 3D voxel grid data structure
│ └── VoxelManager.js # Voxel rendering and mesh management
├── managers/
│ ├── MissionManager.js # Mission progression and objectives
│ ├── NarrativeManager.js # Dialogue and story sequences
│ ├── RosterManager.js # Character roster management
│ └── UnitManager.js # Unit lifecycle and combat state
├── ui/
│ ├── deployment-hud.js # Pre-battle deployment interface
│ ├── team-builder.js # Squad composition screen
│ ├── game-viewport.js # 3D game viewport component
│ └── dialogue-overlay.js # Narrative dialogue display
├── units/
│ ├── Unit.js # Base unit class
│ ├── Explorer.js # Player-controlled units
│ └── Enemy.js # Enemy AI units
└── index.js # Application entry point
Getting Started
Prerequisites
- Node.js (v16+)
- npm
Installation
npm install
Development
Start the development server:
npm start
The game will be available at http://localhost:8000
Building
Create a production build:
npm run build
Testing
Run the test suite:
npm test
Run tests in watch mode:
npm run test:watch
Game Flow
- Main Menu: Start a new run or continue a saved game
- Team Builder: Select and customize your squad from available classes
- Mission Selection: Choose a mission (currently starts with tutorial)
- Deployment Phase: Place units on designated spawn zones
- Tactical Combat: Turn-based combat with action points, movement, and abilities
- Mission Completion: Complete objectives to earn rewards and progress the campaign
Game Mechanics
Units
- Action Points (AP): Units spend AP to move, attack, and use abilities
- Charge Meter: Dynamic initiative system (0-100) determines turn order
- Stats: Health, Attack, Defense, Magic, Speed, Willpower, Movement, Tech
- Status Effects: Buffs and debuffs that modify unit capabilities
World Generation
- Seeded Random: Deterministic procedural generation for consistent runs
- Biomes: Different environment types with unique generation rules
- Spawn Zones: Designated areas for player and enemy deployment
- Cover System: Destructible objects provide tactical positioning
Missions
- Objectives: Primary goals (e.g., eliminate all enemies, reach location)
- Rewards: XP and currency (Aether Shards) for completion
- Narrative: Intro and outro sequences that advance the story
- Campaign Progression: Unlock new missions as you complete objectives
Development Status
This is an active development project. Current features include:
- ✅ Core game loop and rendering
- ✅ Voxel grid system
- ✅ Team builder UI
- ✅ Deployment phase
- ✅ Mission system foundation
- ✅ Basic world generation
- ✅ Save/load system
Planned features:
- 🔄 Turn-based combat system
- 🔄 AI behavior
- 🔄 Skill tree implementation
- 🔄 Equipment system
- 🔄 Additional biomes and missions
License
ISC