03SoftwareC# · .NET 8 · WPF · SQLite
CampaignForge
An offline desktop toolkit for tabletop RPG game masters: dice math, linked lore and encounter tracking with no network in sight.
No public build or repository linked for this project yet.
Offline by design
capture pending
Dice math as a real parser
Expressions like 4d6kh3+2 are tokenized into an expression tree and evaluated recursively, which keeps nested modifiers honest instead of hard-coding special cases.
Results land in the encounter tracker, where every action can be undone without corrupting state.
A database that behaves at the table
SQLite in WAL mode lets lookups happen while writes settle; FTS5 powers the random-table engine so finding “that one rumor table” is a search, not a scroll.
Everything runs offline by design: no accounts, no sync, no surprises mid-session. Dapper keeps data access explicit and thin.
What makes it technically interesting
- Recursive dice-expression parser: nested modifiers and keep/drop arithmetic evaluated as a proper expression tree
- Bidirectional entity linking: NPCs, locations and items point at each other from both ends
- Encounter tracker with an undo stack deep enough to trust mid-session
- Random table engine backed by SQLite FTS5 full-text search; WAL journal mode for safe concurrent reads
- Dapper for thin, explicit data access; fully offline architecture