rpgsheet
is a CLI/TUI character sheet application for tabletop RPGs.
Dependencies:
rolldice
for, uh, rolling dicebc
for calculations
Features
- 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;
rpgsheet
is 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+MOD
notation, 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
proficiency
value, and then define your shortsword attack modifier as3+proficiency
. (For DnD, you probably actually want a hard-codedstrength
ability score, then aSTR
value defined as(strength-10)/2
, then define your shortsword attack asSTR+proficiency
.)
Unimplemented planned features
- Configurable controls
- Be able to have a tab with multiple rows of windows
Planned related projects
dndsheet
--rpgsheet
but with a streamlined dnd5e-specific interface which, given a sheet following a particular standard, can provide an experience tailored to the system.
Installation
Install Nim and run:
nimble install rpgsheet
You can also clone this repo and then run this in the directory:
nimble install
The sheet format
Sheets are stored as YAML files. Keys are limited to alphanumeric characters, plus _
, ~
, and '
. 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