Gaming, Linux, Programming by day. Atheism and tolerance by night. Sci-Fi television all hours of the day.
After some recent fun with The One Ring via Google Hangouts, I’m going to be running a Call of Cthulhu campaign with some of my closest friends. I was unable to find a character sheet management system for Chaosium’s CoC rules like The One Ring had, so I’m working on something simple of my own.
The biggest problem I’m facing is doing this without turning it into Yet Another Open Source Project. Not because I don’t want the source to be freely available to my fellow gamers, but because the last thing I need is another programming project. As I’m coding, all I can think of is, “How can I release some sort of API so that anyone can manage a character sheet from any tabletop game with this system?”
And I need to stop. That being said, that sort of thing is exactly the facet of gaming I want to focus on in order to create a tabletop-based game engine.
I also don’t want to reinvent any wheels. Tabletop Forge is already building a fantastic virtual tabletop (although my one complaint is that their project isn’t open source, and that makes me sad).
In the campaign, we’re going to be using TTF (because it’s awesome), so at least I’m not at all focused on developing a virtual tabletop, but I’m super excited about the character sheet management.
I’m trying very hard to just push through it as a quick and dirty project, and purposely disregarding efficiency and maintainability for the time being. I just want something my friends can create, edit, store, and load character sheets with, without having to deal with PDFs or spreadsheets or dead trees.
I’ve got the base attribute rolls down, and created a “RolledAttribute” class, which takes in a dice set (which is just a vector of Die of <T> sides). Each RolledAttribute also gets an optional modifier (([dice::d6(),dice::d6(), dice::d6()], 6) ) and a ”rolls_left” parameter, so that I can customize how much freedom to give the players in creating their characters. Currently, each of the base Attributes can be rolled three times. I’m a little nervous all the characters might be overpowered this way, so I’ll probably nerf it. However, there is the added catch that none of the previous rolls are cached in any way — once a roll is gone, it’s gone forever. So there’s a slight gamble to re-rolling an attribute.
The rest should be easy, if tedious: connecting the derived attributes to the base attribute modifier signals so that they’ll automatically populate with the calculated values.
After the sheet is created, I also need to come up with a way for certain fields to be modifiable by the player, and others only to be modifiable by me, which I don’t think will be too difficult.
the greatest part will be that using Wt, I’ll have a nice tabbed view of everyone’s character sheets (including creatures and NPC’s) during play, so looking through and managing them will be a simple experience as the GM.
I’ll also be able to separate the sheet itself into different tabs. There’s nothing more frustrating when RPing than having to be all,
"Wait, where is that number listed? I can’t find it."
"It’s in the second column, halfway down the page."
"I’m not seeing it. Oh here it is. Perception is 18."
"No, PASSIVE perception, not standard perception."
Although at least using the Chaosium system, there are far fewer numbers to keep track of, so this will be minimal anyway.
While I certainly don’t need another long-term project, stuff like this is really why I wanted to learn programming to begin with.