Some Ideas for a Chraracter Sheet Management Tool
Sat Apr 11, 2020

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.

Pros

Cons

Spreadsheets

Another common way to create a digital character sheet is through the use of spreadsheets.

Pros

Cons

Game-specific tools

Some games have their own specific tools like D&D Beyond or Chummer5a.

Pros

Cons

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.

XABCDEF
1Personal DataStatValueBonus
2NameFredMuscle5=IF(E2>=6, E2+B7, E2)
3RaceDwarfMysticality8=IF(E3>=6, E3+B7, E3)
4ClassClericMoxie4=IF(E4>=6, E4+B7, E4)
5Age24Grit5=IF(E5>=6, E5+B7, E5)
6Favorite FoodHeavy BreadGumption7=IF(E6>=6, E6+B7, E6)
7Stat Boost2Glamor3=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.

Display

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.



photos · music · code · posts · notes · about · home