2.7 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Running the Game
./start_web.sh # Starts Python HTTP server on port 8000
Open http://localhost:8000 in a browser. No build step — all source is raw ES modules. Changes take effect on page refresh.
There are no tests or linting configured.
Architecture
Tyrants Edge is a browser-based deck-building card game built with Phaser 3 (v3.60.0, loaded via CDN). Vanilla JavaScript only — no bundler, no npm.
Scene Flow
BootScene → MainMenuScene → any of:
BattleScene— 1v1 card battles vs AIDeckBuilderScene— customize decks (1 commander + 3–10 assault cards)CampaignScene→ launchesBattleScenewith mission configCollectionScene,StoreScene,FusionScene
BootScene loads all JSON data (data/*.json) and card art images, then instantiates global managers stored in Phaser's game registry.
Global Managers (accessed via this.registry.get(...))
| Key | Class | Purpose |
|---|---|---|
cardManager |
CardManager |
Card definitions and instance creation |
packManager |
PackManager |
Booster pack opening logic |
save |
SaveManager |
localStorage persistence (versioned) |
missions |
raw JSON | Campaign mission data |
Combat System (src/combat/)
CombatEngine.js— Core battle loop. Turn phases: Draw → Deploy → Activation → Rupture → Jam → Commander Skills → Card Attacks → Cleanup. Uses event queue for animation sequencing.SkillProcessor.js— Resolves card skill effects (strike, swipe, pierce, rupture, berserk, siege, rally, heal, protect, jam, enfeeble, weaken, etc.) with triggers:on_turn_start,on_attack,on_kill.CombatAI.js— AI opponent decision-making.
Combat uses RNG.js (seeded random) for deterministic, replayable battles.
Card Rendering
CardObject.js handles all visual card rendering (stats, art, skills). BattleField.js manages the 4-lane battle arena layout.
Data Model
All game content is JSON in data/:
cards.json— Card stats, faction, rarity, skillspacks.json— Booster pack definitionsmissions.json— Campaign missions with enemy decks and rewardsskills.json— Skill reference (skills are also inline in cards)
Card factions: imperial, raider, bloodthirsty, xeno, righteous
Card types: commander, assault
Rarities: common, rare, epic, legendary
Save Format (localStorage)
{
"version": 1,
"gold": 400,
"collection": { "cardId": count },
"decks": [],
"campaignProgress": { "completedMissions": [], "currentChapter": 1 },
"starterDeckReceived": false
}