A nifty way to make character sheets Aug 8, 2008

Hi everyone!  So as you may have heard, Alleged Entertainment is currently working on a new game called Time Travel Review Board for the Small Games Contest at Intercon Mid-Atlantic.  One of my personal goals for the game is to produce really cool-looking printable materials.

As much as I love my usual LARP-publishing tool, LarpML, it's not so great for producing highly-stylized materials with heavy graphic design elements.  However, I hit almost by accident on what I think is a pretty elegant solution.

I've been using Inkscape, a free vector-drawing tool, to design the printable materials for the game.  I chose Inkscape because it's cross-platform and I'm cheap - let's be honest here.   But one nice bonus is that its native file format is SVG, an up-and-coming standard from the W3 Consortium for storing vector-based illustrations.  SVG is based on XML, which means it's easily readable by computer software, even software that doesn't know about SVG.

Well, hmm, that gives me an idea. :)

I wrote a small Python script that takes a configuration file like this:

[template]
filename: horde-character-template.svg

[values]
acceptedTrigger: 102
rejectedTrigger: 350
name: Testy McTesterpants
affiliation: The Testing Organization
gender: hermaphrodite
citizenId: 123456789-01
destination: August 8, 2008
statedGoal: Stop Nat Budin from making yet another uninteresting blog post about LARP technology.
notes: You actually want to stab Nat Budin in the heart and take his stuff.  Muahahahahahahahaha!

(Note: The "acceptedTrigger" and "rejectedTrigger" fields are for GM use. They're game mechanics. Don't worry about it.)

And produces output that looks like this:

What this is actually doing is simply reading in the file specified under [template], and then going through each item in [values] and substituting into the SVG file based on the XML node ID, which Inkscape lets you set.

I'm pretty happy with this.  Producing the template file itself is no harder than just making a drawing in Inkscape, and the configuration file syntax is dead simple.  Obviously it won't work for longer character sheets that need multiple pages, but this is a horde game - if we need multiple pages, we're doing something wrong.

Once we've released Time Travel Review Board, I'm planning to also release the source code of my script, but it's really, really simple - any Python programmer could easily produce it themselves.