RPG
A playbook for role-playing games — stats and progression, inventory/equipment, quests, dialogue, and combat. This is a compositional skill: it ties data-driven content, dialogue, and saving together. It does not re-teach those primitives; it defines the systems that make growth and choice feel meaningful, and points to the skills that implement each.
When to use
- Use when building an RPG/JRPG/action-RPG: the player has stats that grow, an inventory, quests, dialogue, and persistent progress.
- Use when designing a leveling curve, a damage formula, an inventory/equipment model, or a quest state machine.
When not to use: permadeath dungeon runs with no persistent character → roguelike.
Pure conversation/branching story → visual-novel. Open-world needs/crafting/base-building →
survival-crafting. For the dialogue engine itself, use dialogue-systems.
Core loop
Explore → encounter (fight / talk / solve) → earn rewards (XP, loot, story) → grow (level up, gear up, unlock) → take on harder content. The fantasy is getting stronger and shaping who your character is; every system should feed that growth-and-choice loop.
Must-have systems
- Stats + leveling — base attributes, derived combat stats, XP curve, level-up gains.
- Inventory + equipment — data-defined items, stacking, slots, stat modifiers.
- Combat — turn-based or action; damage formula, status effects, win/loss.
- Quests — objectives, state machine (available→active→complete→turned-in), rewards.
- Dialogue — branching lines, conditions on game state, choices that matter.
- Save/load — persist character, inventory, quest progress, world flags, with versioning.
- Economy + progression gating — gold/shops; gate power behind level/quest/region.
- UI — HUD, inventory, quest log, dialogue box, character sheet.
Design knobs
Patterns
1. Derived stats from base attributes (recompute, never store as truth)
2. XP curve + level-up
3. Quest objective update driven by game events
Pitfalls / failure modes
- Editing base stats for buffs/gear → values drift and corrupt on save/reload. Keep a modifier layer; push/pop it (Pattern 1).
- Storing derived stats as truth → desync after a stat change. Recompute from base.
- Runaway XP/damage numbers → either an exponential curve with no cap or a subtractive formula at huge values. Pick a curve and a formula family deliberately (refs).
- Content as code → every item/quest hardcoded. Define items, enemies, and quests as
data (
godot-resources/unity-scriptableobjects). - Save format with no version field → old saves break on update. Add a
versionand a migration path from day one (seesave-systems). - Choices without consequences → dialogue branches that reconverge immediately feel hollow. Set flags that actually change later quests/world state.
- Quest progress not persisted → reloading loses mid-quest state. Save quest state, not just completion.
Composition (build it from these skills)
- Dialogue:
dialogue-systems(Yarn Spinner / Ink) — branching lines, conditions, variables. - Persistence:
save-systems— character, inventory, quest flags, world state, versioning. - Content data:
godot-resources/unity-scriptableobjects— items, enemies, quests, skills as assets. - Combat AI:
game-aifor enemy behavior; for turn order reuse the scheduler idea inroguelike. - UI:
game-ui-uxfor HUD/menu layout, resolution scaling, and controller/keyboard nav;godot-ui-controlfor the concrete inventory, quest log, character sheet, and dialogue box. - World:
level-designplus your engine's tilemap/3D skill (godot-tilemap,godot-3d-essentials).
References
- For stat/damage formulas, leveling curves, turn-vs-action combat timelines, inventory/equipment
data shapes, and the quest state model, read
references/stats-combat-quests.md.

