# Slime Genesis - ECS RPG PoC A complete proof of concept for **Slime Genesis: The Awakening of the Entity** built with vanilla JavaScript using an Entity Component System (ECS) architecture. ## Quick Start 1. **Install dependencies:** ```bash npm install ``` 2. **Run the development server:** ```bash npm run dev ``` 3. **Open your browser** to the URL shown (usually `http://localhost:5173`) ## Controls - **WASD** or **Arrow Keys**: Move your slime - **Mouse**: Aim/face direction - **Left Click** or **Space**: Attack - **Shift**: Toggle stealth mode - **1-9**: Activate skills (when you have them) ## Features ### Core Systems - ✅ **ECS Architecture**: Entity Component System for flexible game design - ✅ **Real-time Combat**: Fast-paced action combat with form-specific styles - ✅ **Evolution System**: Three paths (Human, Beast, Slime) that change based on absorption - ✅ **Skill Absorption**: Defeat creatures to gain their abilities - ✅ **Stealth System**: Form-specific stealth mechanics (Social, Hunting, Structural) - ✅ **RPG Systems**: Stats, leveling, XP, inventory, equipment - ✅ **AI System**: Intelligent creature behaviors (wander, chase, combat, flee) - ✅ **Projectile System**: Skills can create projectiles (Water Gun, etc.) ### Graphics & Polish - ✅ **Animated Slime**: Smooth morphing blob with jiggle physics - ✅ **Combat Effects**: Damage numbers, attack indicators, particle effects - ✅ **Absorption Visuals**: Swirling particles and color transitions - ✅ **Stealth Indicators**: Visibility meters and detection warnings - ✅ **Polished UI**: Health bars, XP bars, skill hotbar, stat displays ### Skills - **Water Gun**: Shoot a jet of water at enemies - **Fire Breath**: Breathe fire in a cone - **Pounce**: Leap forward and damage enemies - **Stealth Mode**: Enter stealth mode (form-specific) ## Architecture This game uses a pure ECS (Entity Component System) architecture: - **Entities**: Game objects (player, creatures, projectiles) - **Components**: Data containers (Position, Health, Stats, Evolution, etc.) - **Systems**: Logic processors (RenderSystem, CombatSystem, AbsorptionSystem, etc.) This architecture makes it easy to: - Add new skills and abilities - Create mutations and combinations - Extend creature behaviors - Add new game mechanics ## Project Structure ``` src/ ├── core/ # ECS framework │ ├── Engine.js # Main game loop │ ├── Entity.js # Entity manager │ ├── Component.js # Base component │ └── System.js # Base system ├── components/ # All game components │ ├── Position.js │ ├── Health.js │ ├── Stats.js │ ├── Evolution.js │ └── ... ├── systems/ # All game systems │ ├── RenderSystem.js │ ├── CombatSystem.js │ ├── AbsorptionSystem.js │ └── ... ├── skills/ # Skill system │ ├── Skill.js │ ├── SkillRegistry.js │ └── skills/ # Individual skills ├── items/ # Item system │ ├── Item.js │ └── ItemRegistry.js ├── world/ # World management │ └── World.js └── main.js # Entry point ``` ## Gameplay Loop 1. **Explore**: Move around the cave, discover creatures 2. **Fight**: Engage in real-time combat with creatures 3. **Absorb**: Defeat creatures to gain evolution points and skills 4. **Evolve**: Your form changes based on what you absorb 5. **Level Up**: Gain XP, increase stats, unlock new possibilities 6. **Stealth**: Use form-specific stealth to avoid or ambush enemies ## Evolution Paths - **Human Path**: Absorb humanoids to gain human traits, access to social areas - **Beast Path**: Absorb beasts to become a predator, gain physical power - **Slime Path**: Maintain your original form, gain unique abilities ## Technical Details - **No External Dependencies**: Pure vanilla JavaScript (except Vite for dev server) - **Canvas 2D**: High-performance rendering with Canvas API - **Modular Design**: Easy to extend and modify - **ECS Pattern**: Scalable architecture for complex game mechanics ## Future Enhancements - More skills and mutations - Multiple areas/zones - NPCs with dialogue - Quest system - Equipment system expansion - Save/load functionality - More creature types and behaviors ## License This is a proof of concept. Use as you see fit for your game development.