aether-shards/README.md

207 lines
7.4 KiB
Markdown

# 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
```
specs/ # Detailed feature specifications and design docs
src/
├── assets/
│ ├── data/
│ │ ├── classes/ # Character class definitions (JSON)
│ │ ├── effects/ # Status effects and abilities
│ │ ├── missions/ # Mission configurations
│ │ ├── narrative/ # Dialogue sequences
│ │ ├── skill_trees/ # Class skill tree templates
│ │ └── skills/ # Individual skill definitions
│ └── 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
├── factories/
│ └── SkillTreeFactory.js # Skill tree generation logic
├── 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/
│ ├── InventoryManager.js # Equipment and inventory
│ ├── ItemRegistry.js # Item definitions
│ ├── MarketManager.js # Shop and trading logic
│ ├── MissionManager.js # Mission progression and objectives
│ ├── NarrativeManager.js # Dialogue and story sequences
│ ├── ResearchManager.js # Tech tree and upgrades
│ ├── RosterManager.js # Character roster management
│ ├── SkillRegistry.js # Skill definitions map
│ └── 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
├── utils/
│ ├── SeededRandom.js # Deterministic RNG
│ └── SimplexNoise.js # Noise generation
└── index.js # Application entry point
```
## Getting Started
### Prerequisites
- Node.js (v16+)
- npm
### Installation
```bash
npm install
```
### Development
Start the development server:
```bash
npm start
```
The game will be available at `http://localhost:8000`
### Building
Create a production build:
```bash
npm run build
```
### Testing
Run the test suite:
```bash
npm test
```
Run tests in watch mode:
```bash
npm run test:watch
```
## Game Flow
1. **Main Menu**: Start a new run or continue a saved game
2. **Team Builder**: Select and customize your squad from available classes
3. **Mission Selection**: Choose a mission (currently starts with tutorial)
4. **Deployment Phase**: Place units on designated spawn zones
5. **Tactical Combat**: Turn-based combat with action points, movement, and abilities
6. **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
## Documentation
For detailed specifications of game systems, please see the `specs/` directory:
- [Character Sheet](specs/Character_Sheet.spec.md)
- [Combat System](specs/CombatState.spec.md)
- [Skill Trees](specs/Skill_Tree.spec.md)
- [Inventory](specs/Inventory.spec.md)
- [Procedural Missions](specs/Procedural_Missions.spec.md)
## 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
- ✅ Turn-based combat system
- ✅ AI behavior
- ✅ Skill tree implementation
- ✅ Equipment system
Planned features / In Progress:
- 🔄 Additional biomes (Crystal Spires)
- 🔄 Advanced AI behavior (Pack tactics, Retreat)
- 🔄 Endgame campaign content
## License
ISC