Odam
A dice-builder RPG where every face you roll is an ingredient. Spend a sword on a Slash, a sword and a bone on a Strike, or save your faces for something bigger, then build a set of dice that can survive the next fight.
How it plays
- Roll, lock, reroll. Keep the faces you want and throw the rest again. Then spend the locked faces on techniques: attacks, defences, buffs and debuffs.
- Status effects change the rules. Burning hurts you every time you reroll, so you have to commit early. Dodge makes you ignore any hit bigger than half your health, so a single heavy blow is the wrong answer to it.
- Four classes, many builds. Ranger, Fighter, Rogue and Elementalist, each split into archetypes with their own dice and techniques.
- A campaign between fights. A branching map of battles, scouting events and campfires where you rest, recover and prepare.
How it's built
- Svelte 5, TypeScript and Vite, shipped as an installable PWA that works offline on a phone or a desktop.
- The battle engine knows nothing about the screen. The board is a view of it, so the tests run whole battles headless, including AI-against-AI games across every enemy and boss to catch turns that never hand over.
- A dice ledger records exactly one place for every die: the board, the tray, a technique's slot, or used. Drag and drop, undo and redo all read from it, so a die can't be in two places at once.
- Data-driven content. Dice, faces, techniques, enemies and status effects are plain model files, and the in-game glossary is generated from them, so the manual can't drift out of date.
