rpgsheet is a CLI/TUI character sheet application for tabletop RPGs.
rolldicefor, uh, rolling dice
- System-agnostic: Character sheets are stored as YAML files, and the data structure is not designed with a particular TTRPG system (ie dnd5e). You can make a template for your favorite system! This is also a bit of a downside;
rpgsheetis quite usable, but you might miss some niceties that it could provide if it knew more about your specific system.
- Flexible: You can define whatever tabs or windows you want for your character sheet! The template is just a starting point.
- Auto-rolling: As long as your system uses dice rolls that can be represented with the standard
NUMdFACES+MODnotation, you can easily define actions which will automatically be rolled.
- Auto-calculation: You can define values in your character sheet which are dependent on other values. For instance, you can define a hard-coded
proficiencyvalue, and then define your shortsword attack modifier as
3+proficiency. (For DnD, you probably actually want a hard-coded
strengthability score, then a
STRvalue defined as
(strength-10)/2, then define your shortsword attack as
Unimplemented planned features
- Configurable controls
- Be able to have a tab with multiple rows of windows
Planned related projects
rpgsheetbut with a streamlined dnd5e-specific interface which, given a sheet following a particular standard, can provide an experience tailored to the system.
Install Nim and run:
nimble install rpgsheet
You can also clone this repo and then run this in the directory:
The sheet format
Sheets are stored as YAML files. Keys are limited to alphanumeric characters, plus
'. When displayed "nicely" in the interface,
_ is converted to a space, and
~ to a hyphen.
All window names and expressions (items that go in windows) must have unique names.
Here is an extremely pared-down design so you can see the structure:
name: Character Name class: Character Class level: 1 tabs: - main: - stats - inventory - attacks: - weapons - spells expressions: # items that appear in the windows strength: modifier: 15 # use `modifier` for flat values window: stats STR: # Modifiers can be defined in terms of # other diceless expressions modifier: (strength-10)/2 window: stats sword_attack: # we cannot have two expressions named `sword` dice: d20 # must be in NUMdSIDES format; no modifiers modifier: STR # here is where your modifier goes window: weapons # Extra information, shown at the bottom of the screen desc: Swing your really cool sword sword: # Note that you don't need to supply dice or modifiers desc: Your really cool sword window: inventory # will be displayed as "Carl's Terrifyingly-hideous Face" carl's_terrifyingly~hideous_face: dice: 8d12 desc: 9th level. Oh god, oh no, look away if you want to live. window: spells