A web-based Tactical Turn-Based Roguelike combining the strategic unit positioning of Fire Emblem with the procedural dungeon exploration and organic party crawling of Mystery Dungeon.
Wardwake is a tactical turn-based roguelike built on Phaser 3 and TypeScript. Players command a squad of heroes exploring procedural 18x18 Chunsoft macro-grid dungeons, managing fog-of-war line-of-sight, picking up consumable loot, and engaging tiered enemy forces with strategic weapon triangle advantages.
-
🏛️ 100% Data-Driven Architecture (
GameDatabase& JSON):- All heroes, monsters, items, floor tiers, and combat rules live in pure data files under
src/data/. - Zero hardcoded entity constants; balance changes and new content are added instantly via JSON!
- All heroes, monsters, items, floor tiers, and combat rules live in pure data files under
-
⚔️ Tactical Weapon Triangle:
$$\text{Sword} \xrightarrow{\quad\text{beats}\quad} \text{Axe} \xrightarrow{\quad\text{beats}\quad} \text{Lance} \xrightarrow{\quad\text{beats}\quad} \text{Sword}$$ -
Advantage:
$+3$ bonus damage & golden battle effects. -
Disadvantage:
$-3$ damage penalty.
-
Advantage:
-
🌫️ Fog of War & Room Discovery:
- 1-tile corridor vision with full-room illumination upon stepping through doorways.
- Minimap radar dynamically updates with discovered rooms and currently visible enemies.
-
🎒 Floor Loot & Tactical Action Menu:
- Collect restorative Vulneraries and Strength Elixirs from the floor.
- Modal action menu popup upon moving:
[⚔️ ATTACK],[🎒 ITEM],[⏳ WAIT].
-
📈 RPG EXP & Level-Up System:
- Gain
$+20$ EXP on hit and$+50$ EXP on kill. Level up at 100 EXP with stat growth rolls (HP,ATK,DEF) and golden floating banners.
- Gain
-
🔊 Web Audio API Procedural Synthesizer:
- Zero-asset 8-bit sound effects (sword slashes, axe crunches, step clicks, potion chimes, level-up fanfares) with in-game mute toggle (
🔊 / 🔇).
- Zero-asset 8-bit sound effects (sword slashes, axe crunches, step clicks, potion chimes, level-up fanfares) with in-game mute toggle (
-
📱 Responsive FIT & Mobile Touch Scaling:
- Pixel-perfect Phaser
Scale.FITauto-centering with touch gesture optimization for mobile browsers and Itch.io.
- Pixel-perfect Phaser
| Control | Action |
|---|---|
| Mouse / Touch Click | Select unit, move, or target enemy |
| Tab | Cycle between available hero squad members |
| M | Toggle tactical minimap overlay |
| [⏳ END] Button | End current player phase immediately |
| [🔊 / 🔇] Button | Toggle procedural sound effects on/off |
Wardwake strictly adheres to Clean Architecture paired with Data-Driven Design:
src/
├── core/
│ └── domain/ # Generic DataRegistry<T> & Centralized GameDatabase
├── data/ # Pure JSON Content Blueprints (Zero hardcoded constants)
│ ├── monsters.json # Enemy stats, weapon types, exp yields, and AI profiles
│ ├── items.json # Consumables, stat herbs, healing values, and drop weights
│ ├── heroes.json # Player character classes, starting stats, and loadouts
│ ├── floors.json # Dungeon floor tiers, spawn counts, and scaling curves
│ └── combat_rules.json # Weapon triangle bonuses, EXP formulas, and damage constants
├── features/
│ ├── ai/ # Follow formation calculator & enemy turn execution
│ ├── combat/ # Units, weapon types, combat resolver, & enemy factory
│ ├── fog/ # Line-of-sight visibility map & fog of war presenter
│ ├── grid/ # 18x18 Macro-Cell dungeon generator & pathfinding
│ ├── inventory/ # Consumables, pickup use cases, & bag presenter
│ ├── turn/ # Phase management state machine
│ └── ui/ # Action menu, minimap, top HUD, & combat forecast
├── scenes/ # Phaser Scenes (PreloaderScene, MainGameScene)
└── main.ts # Game bootstrap & scale configuration
git clone https://github.com/kcoaguila-dev/wardwake.git
cd wardwake
npm install| Command | Action |
|---|---|
npm run dev |
Starts Vite local development server on http://localhost:5173/ |
npm test |
Runs all 84 Jest unit tests across 16 test suites |
npm run test:e2e |
Runs all 7 Playwright browser end-to-end tests |
npx tsc --noEmit |
Strict TypeScript type check (0 errors) |
npm run build |
Compiles production bundle into dist/ |
Copyright © 2026 Kazuo Coaguila. All rights reserved. Proprietary source code and design.