NOTE: This is a bit of a ramble and not a well-formulated specification. Basically, here be dragons.
I like digital character sheets. They're more convenient for me than paper ones and have a lot of advantages.
There are a few ways to create digital character sheets, but they all have major cons.
Form-Fillable Character Sheets
These are by far the most common kind of digital character sheet.
- Very Nice Looking
- Layout is as good as paper sheets * Well-organised
- Good for printing
- No automatic calculation or any other digital advantages (it's literally just the paper sheet)
- Highly game-specific
- Difficult to make your own
- Often can't be used on the fly, need to be printed and then used on paper
Another common way to create a digital character sheet is through the use of spreadsheets.
- Automatic calculations of stats
- Infinitely flexible and usable for all games
- Layouts often become messy and inelegent
- Basically unusable for textual information
- Calculations can be difficult to follow and debug when designing sheets
- Not well organised (more on that later)
Some games have their own specific tools like D&D Beyond or Chummer5a.
- Incredibly featureful - automatic calculations, item databases, stat tracking....
- User experience varies greatly
- Having to learn a new tool for every new RPG system
- Some require accounts or a web connection
- Can be paid-for and closed-source
- Only work with one game
- A lot of systems don't have one
Why Spreadsheets aren't Great
Of the bunch, as somebody who plays a lot of different systems, Spreadsheets are my favorite. They have the flexibility to work with whatever system I need them to, they can do automatic calculations, and are generally my favorite option. However, spreadsheets have some serious issues for character sheets. Some of these I mentioned in the cons section for them, but I think there's a more core issue.
Spreadsheets don't Work like Character Sheets
This might seem really obvious, of course they don't. Spreadsheets are designed for doing your taxes, character sheets are designed for going on adventures. The data representation in a spreadsheet is pretty counter to what you want for a character sheet.
Firstly, while spreadsheets do support text, it's only intended for labels. A spreadsheet isn't going to be great for holding your epic backstory or that long description of a weapon passed down through your family. This isn't a huge issue, because you can store that in a document alongside the spreadsheet with your stats. But then you have two documents for your character, and you're storing the stats for a sword and the description of it in two different places, when it's the same sword.
Secondly, spreadsheets are tabular, and character sheets are not. For example, let's take this simplified character spreadsheet for a fictional RPG.
|2||Name||Fred||Muscle||5||=IF(E2>=6, E2+B7, E2)|
|3||Race||Dwarf||Mysticality||8||=IF(E3>=6, E3+B7, E3)|
|4||Class||Cleric||Moxie||4||=IF(E4>=6, E4+B7, E4)|
|5||Age||24||Grit||5||=IF(E5>=6, E5+B7, E5)|
|6||Favorite Food||Heavy Bread||Gumption||7||=IF(E6>=6, E6+B7, E6)|
|7||Stat Boost||2||Glamor||3||=IF(E7>=6, E7+B7, E7)|
This is a very small character sheet, with very simple rules, yet it's already seeming a little complicated and even disorganised to me. The headers that group the different categories are in with the categories as data. This could be made more obvious in a real spreadsheet with text styling, but that would then confuse the underlying structure of of the sheet. As well as that, those formulas for stats are ugly. They encode a very simple rule (stat bonuses get a boost if they're over 6) but they are very inobvious at first glance. They all reference B7, which may as well be a magic number. You need to look at the whole sheet in order to understand a single, simple rule.
Looking at the structure of the sheet, we can see that it has a few sections, and in each section is a list of pairs and small groups of cells. All the personal data has a cell for the name, and one for the value. All the stats have a name (which I'll call a 'key') a value, and a calculated bonus. So, could we restructure our character sheet to reflect that structure? Firstly, we could take the groups and move them outside of the data, giving us a tree-like structure.
Personal Data: - Name: Fred - Race: Dwarf - Class: Cleric - Age: 24 - Favorite Food: Heavy Bread - Stat Boost: 2 Stats: - Muscle: - Value: 5 - Mysticality: - Value: 8 - Moxie: - Value: 4 - Grit - Value: 5 - Gumption - Value: 7 - Glamor - Value: 3
This structure should be starting to seem quite familiar to some, but we no longer have cell addresses! How are we going to do calculations? Well, we still have addresses, they're just more like file paths than spreadsheet indexes. (I've also made the keys one word, for clarity):
Data: - Name: Fred - Race: Dwarf - Class: Cleric - Age: 24 - FavoriteFood: Heavy Bread - StatBoost: 2 Stats: - Muscle: - Value: 5 - Bonus: =IF(Value>=6, Value + Data/StatBoost, Value) - Mysticality: - Value: 8 - Bonus: =IF(Value>=6, Value + Data/StatBoost, Value) - Moxie: - Value: 4 - Bonus: =IF(Value>=6, Value + Data/StatBoost, Value) - Grit - Value: 5 - Bonus: =IF(Value>=6, Value + Data/StatBoost, Value) - Gumption - Value: 7 - Bonus: =IF(Value>=6, Value + Data/StatBoost, Value) - Glamor - Value: 3 - Bonus: =IF(Value>=6, Value + Data/StatBoost, Value)
These new formulas might be far longer than the spreadsheet ones, but they're also a lot clearer. You can understand them without having to constantly look at the rest of the sheet. (remember that like on a spreadsheet, these are hidden in normal use). The syntax is also subject to change, I just used spreadsheet syntax here to make the link more apparent.
I find this structure to be much more appealing, and I find it naturally reflects the structure of a character sheet very well, and is easily created and used in all modern programming languages, which eases development.
The problem with this structure is that it essentially would display as a long list, which wouldn't be great in terms of screen space usage on landscape displays. The solution to this would be some kind of layout and stylesheet system I haven't thought out yet.
This has been a bit of an idea dump, but a more proper plan and probably an implementation are coming soon-ish.