Moving from InDesign to PrinceXML

I discovered this post in my drafts when I came here to post about changing my method again. I’m going to publish this for history’s sake, but as of the day I hit publish on this post I’m switching again, this time to using LaTeX.

I finally found a method for generating PDFs that fits my skillset: PrinceXML. This is a program that takes in HTML files and CSS and generates PDFs from it.

As I’ve discussed in previous posts, my workflow has me saving parts of my text for Binding World as individual files. I have one file for a magic item, and one file for a monster, and one file for the dungeon starter that contains both. That data is all compiled into JSON, then my page templates take in that JSON data to generate the final XML.

I used to be importing this XML into InDesign, and working on styling by mapping tags to styles. This seemed to work okay, but as I’m a web developer by trade I’m much more comfortable styling with CSS.

My new workflow has done two things. First, I’ve tweaked the XML generating step to include links to CSS files that PrinceXML uses to style the final product. Second, I’ve added some simple scripts to actually run the Prince compiler.

My new flow has me changing a file like, which triggers a recompile of my game data into JSON, which recompiles my pages with that data into XML, which triggers Prince to compile those into PDF files.

Corrupting the Helltamer – Binding World Update #5

For my Dungeon World supplement Binding World I have been changing up the old version of the Helltamer compendium class and working on a new one. The old version had you roll+CON to get points of inferno which you could later spend to cast spells. Additionally you could choose to roll for the move to cast the spell with its bonus infernal ability.

I’ve got a new version of the class that works with a new currency: corruption. Corruption serves two major purposes for the Helltamer: it increases the power of their hellspells and it increases their susceptibility to the whims of hell.

Continue reading “Corrupting the Helltamer – Binding World Update #5”

Binding World Update #4 – Dungeon Starter Sneak Peek

I’ve continued making tweaks to the compendium classes of Binding World, but lately have spent most of my time on this project writing up the three dungeon starters that will come with it.

A large part of this time has been working on the RPG Parser code that I’m using to organize my project. I’ve got it to a point where I can write game content easily in my markdown or JavaScript files and open an HTML file in my browser. It’s not meant to show what the final PDF will look like, it’s just for me to be able to proofread. Here’s a screenshot of what that looks like:

What I see when I edit Binding World.

This image shows three separate entries from the Sanguine Temple dungeon starter. Each dungeon starter will have multiple things to uncover and foes to face, as well as questions to build the lore, and impressions for the GM to paint scenes with. This adventure seed is centred around an ancient order known as the Sanguinites, a group with heavy blood themes.

I made some changes after looking at the screenshot, here are updated versions of the two Discoveries and the one Threat from the screenshot:

Bloodlocked Door
When you smear your blood on the sigils of a bloodlocked door, roll+CON. On a 10+ choose 1, on a 7-9 choose 2:

  • You must pay an additional fee of blood for the door to open, take 1d6 damage ignoring armor
  • The door will open very slowly
  • The door will make a cacophony of noise when it opens

The Sanguinites are meant to be the easiest way for the GM to introduce the Bloodbinder class to the table, so naturally blood is featured heavily in this dungeon starter. What I like about this custom move is how the circumstances really change which options are the most attractive. Your choices will depend largely on whether you’re in a hurry, being sneaky, or low on health.

Stained Glass Dagger
This dagger’s blade is made of stained red glass. It glitters beautifully in light and is surprisingly sharp and resilient. If it tastes blood, it begins to hum and emits a faint red glow.

When you deal damage with this weapon, you may choose to take the damage you rolled, ignoring armor, and reroll the damage you deal. You may only do this once per attack.

I like the visual of a stained glass dagger, but I think having it be red might be a little boring. I might change it to depict a scene or person, like the stained glass windows found in churches. The players could describe what it shows.

The mechanic for this is interesting to me. It’s a less powerful mechanic than just letting you take the highest of two results, but I think it’s more fun. You almost always reroll your 1s and 2s, so I decided to make the damage ignore armor otherwise it’s just a free reroll. The dagger also isn’t cutting you, it’s more draining your life force, so ignoring armor fits thematically.

Sleeping Dart Trap
When you are hit by a poisoned dart fired from the shadows, take 1 damage and roll+CON. On a 10+ you feel the sting, but no other effects. On 7-9 you immediately feel drowsy, you’ll be fast asleep in minutes. On a 6- you instantly slump to the ground in a deep sleep.

This is a modified move from the Goblin Dart Trap move found in the Castle Death dungeon starter from 20 Dungeon Starters by Lampblack & Brimstome. The consequences are a bit harder in my version. I like this because the trigger is something GMs can keep in their back pocket to bring out at almost any time. The dart can come from either enemies or traps.

In a future update I’ll discuss the changes I’ve been making to the Helltamer to include a corruption progress bar that is filled in during play. More corruption means your spells will be more powerful, but becoming too corrupt could spell the end for your character (and any unfortunate enough to be nearby).

Binding World Update #3: Playtesting Bloodbinder and Medium

I recently finished two one-shot sessions of Dungeon World where I playtested the Bloodbinder and the Medium compendium classes from Binding World, my upcoming DW supplement.

Using the software I wrote about in my previous post, I did up some quick character sheets before the first session. I had one player playing a Fighter/Bloodbinder named Astro and another was playing a Thief/Medium named Bren. The first sheets I printed off were purely functional, with the absolute minimum being done for design. Here were the first versions:

First versions of the Bloodbinder and Medium sheets.

Notes on the Medium

After the first session I asked the player behind Bren, the Medium, what she thought of the compendium class. She had rolled Seance once at the start of the session and became possessed by the Charmer spirit with 3 parity points to spend. During the session she spent all 3 on the boon to get NPCs to like them a little bit. Here were the notes I wrote down after asking for feedback:

She liked it

Always a nice thing to hear.

She liked the “tell” idea

The other player suggested having a physical tell when the Medium was inhabited by a spirit. Bren’s eyes glowed yellow when he was inhabitted by a spirit. It’s a cool bit of fiction I’d like to incorporate, if not into the move directly then into the notes that come with the supplement.

Wasn’t sure how long the charming effect lasted

This was related the boon giving by the Charmer spirit type, which says that NPCs will “take a shine to you” when you spend 1 parity. This note came about because Bren charmed a bad guy for a bit, but he attacked her anyway. I intentionally left the move text vague and I don’t think I’ll change it, it gives the GM more freedom.

Want to channel specific sprits in the story
Maybe create another move for conversing, not inhabiting

In the early stages of the session it was established that an evil lord used to live in Castle Death but he died long ago. My player wanted Bren to be able to channel that specific spirit for story purposes. My idea for Medium is for you to have a cast spirits that is fleshed out as you play, and I’ll probably keep that as is. This means you can’t channel new spirits with the Seance move, but there’s still an interesting idea of being able to talk to spirits.

I might incorporate existing Dungeon World text – such as Contact Spirits, Heirloom, or Speak With Dead – as advanced moves of the Medium.

Notes on the Bloodbinder

Astro, the Fighter/Bloodbinder character, was played in two sessions, and the Bloodbinder underwent some beneficial changes between the first and second. Here are the notes I had across both sessions:

Not much to do
Better to have one big thing

This was in reference to the two main moves both you and your bloodbound have. These allow you to roll with each other’s stat modifiers, and transfer damage taken from one person to the other.

These sounded cool when I wrote them but in practice weren’t that awesome. Their effects were too minor.

Easy to forget your moves

This is probably related to the first note. I had to remind the players that they had the option of taking damage for each other or rolling with each other’s stat modifiers. I probably shouldn’t have as it messes with the testing, but with cooler moves I think it won’t be needed anyway.

Maybe give health instead of take damage

The Blood Bulwark move allows you to absorb damage from an attack for your bloodbound. One of the other players suggested being able to give your hitpoints to your bloodbound instead of taking the damage for them. I think I’ll playtest a move with this later on, and have it require a roll.

Changes to the Bloodbinder

Based on the notes taken and discussion with the player I made the following changes to the Bloodbinder:

Changed Shared Instinct

Here was the first version of the move:

When rolling a move you may choose to use your bloodbound’s stat modifier instead of your own. On a 6-, in addition to whatever else happens as a result of the move, your bloodbound takes -1 forward to the stat used.

Here is the second version:

You and your bloodbound are able to share a small part of your intuitions and reflexes. After your bloodbound has rolled a move, you may let them add your stat modifier instead of theirs. Transferring this impulse is strenuous, you take -1 forward.

I made the move happen after the roll, which is much more powerful as it allows you to turn 6s into 7s and 9s into 10s. Because of that I made the -1 forward a guarantee. I’m contemplating making it -1 ongoing until you catch your breath.

I also added the first sentence of flavor text which I think makes everything a bit cooler.

Changes to Blood Bulwark

First version:

When your bloodbound takes damage after armor you can opt to take up to your level in damage for them, ignoring armor.

Second version:

When you feel your bloodbound’s fresh pain through your link you may opt to take the damage they just sustained for them, ignoring armor.

I changed the trigger to highlight the bond between you and your bloodbound to make it cooler. I also removed the limiter on the amount of damage you can transfer and instead made it just the whole damage of the attack. At lower levels taking 1 or 2 damage from an attack rarely seemed impactful, and the math didn’t really add much more fun.

Here are the two versions of the Bloodbinder character sheet with the first version on the left.

First and second versions of the Bloodbinder sheet.

My next sessions will probably deal with these two classes, then I’ll move onto testing the Helltamer.

New RPG Parser Structure

In the past I’ve written a tiny bit about my RPG Parser software that I use to store game data and insert it into templates and pages. I’ve recently rewritten it while I was working on playtesting character sheets for the compendium classes in Binding World.

The new RPG Parser code works in two parts: Data and Pages.

Whiteboarding the flow.

The Data Parser

Data takes all of the individual JS and Markdown files – each representing something in the game like a move, class, or tag – and puts them into a single gameData object that is saved as JSON.

Here’s the early stages of the file structure of the game data:

Folder structure of game data. Not complete.
Folder structure of game data. Not complete.

The file and folder structure is what determines where the data goes in the gameData object that the parser creates. All the information in game_data/classes/bloodbinder/index.js will be put into gameData.classes.bloodbinder. The .moves folder will ignore the folder they are in and go directly into gameData.moves 

Here’s the contents of the bloodbinder/index.js file:

The starting_moves and advanced_moves lists are all references to moves. The move data isn’t stored directly in the classes, but they are replaced with the full move data during the parsing stage so I can reference classes.bloodbinder.starting_moves[0].name to get the name of the first starting move.

The move files are done as markdown files for easy readability. When the parser encounters a markdown file instead of a JavaScript file it takes the first line as the name attribute and takes everything else as the description attribute. Later I’ll be added support for bold and italic text in the markdown.

The Pages Parser

The Pages parser takes XML documents that reference the game data with tags, inserts the real values, and exports them into multiple formats for InDesign, websites, GitHub, etc. The Parser uses the Mustache templating engine. I have a script for each output and am starting with the InDesign one. Here’s a sample page I’m working with:

A Pages XML file ready to be parsed into a usable InDesign file.

This file is put through the Pages InDesign parser and gives me this:

The output of the Pages parser with all the game data inserted.

What’s Next

Next I’ll be working on some basic InDesign printable sheets for the compendium classes of Binding World using these two parsers. Hopefully I’ll be able to do some playtesting with them soon. More upgrades will come to the software along the way.

Binding World Update #1 – A Peek at the Helltamer

Work has been slow on Binding World as my time has been taken up with my day job at Monstercat and my other venture, Streamer Showdown, which just aired its pilot episode two days ago.

Those that have signed up for the newsletter and specified that they would like to help proofreading should check their emails.

I have the first versions of the compendium classes written and ready for playtesting, as well as a solid foundation for the three dungeon starters.

Each dungeon starter has a base of Questions and Impressions which are used to set the scene and build the foundation of the story. On top of that are the Discoveries, Dangers, and Custom Moves that they have. Those are quite a bit of fun to write, and I’ll include some of them in a future update. For now, though, let’s look at the Helltamer.
Hell by Happy-Mutt

The Helltamer Preview

The Helltamer compendium class is for a character that has a supernatural connection to hell, a connection they use to harness hell’s energy. That energy is then unleashed to cast hellspells.

The Helltamer is a spell-casting class that works a bit differently than the Wizard or Cleric. Rolling dice isn’t required to cast a spell you know. Instead, the Helltamer rolls when they use the move Servitae Infernum, which gains them inferno they can spend to cast spells.

If you spend 1 inferno you cast a spell you know. Each spell also has an infernal ability that bolsters its effect. If you choose to attempt to use the infernal effect, then you are required to roll.

As an example, here is the spell Blaze of Souls: The ground breaks and cracks at the target location, releasing a gout of flames from below. Anyone caught in the blaze takes 2d6 damage ignoring armor.” It is essentially a fireball with no flight path but its infernal ability makes it a little more interesting: “Infernal: The souls of the damned reach up through the flames, holding targets of your choice in place.”

The Helltamer can choose two spells to start with when they unlock the class. There are currently 5 spells, but that number is very fluid. Learning a new spell is something you can do once per level, and it requires you to roll. Roll low enough and you’ll encounter one of the drawbacks of being a helltamer: corruptions.

Corruptions are physical changes to your body brought about by toying with the power of hell. Every time you attempt to learn a new spell, or open yourself up to gain inferno, you risk gaining a new corruption. They can also manifest as a hard move from the GM.

Players are free to pick their own corruptions, but a list and generator table is provided for inspiration. You could gain serpent’s pupils, grow horns, be branded with demonic runes, and more.

If you’d like to take a look at the Helltamer in its current form, as well as the Medium and the Bloodbinder, please sign up for the newsletter on the Binding World landing page and mark the checkbox to help with proofreading.


Binding World Landing Page – Newsletter Signup Form

While a lot of work needs to be done on the actual project, I decided early on to create a landing page for Binding World. You can view the page here.

Binding World Landing Page
Binding World Landing Page

The main goal of the page right now is to gain subscribers to the newsletter I created for Binding World updates. Subscribers will be given updates about the project and, most importantly, be notified when it’s available for purchase.

As an incentive I’m going to give anyone who signs up for the newsletter a 20% off coupon to buy the PDF from Payhip when the product launches. People signing up can also indicate that they’d like to help edit and proofread the text. If they do I’ll give them comment access on the Google Doc.

The Tech

The website is a very simple single-page app. Here’s what I’m using

  • NodeJS for the server
  • ExpressJS and Jade for the HTML structure
  • Bootstrap for the styles
  • Heroku hobby plan
  • MailChimp for the newsletter


When I first created the page I decided to buy some advertising as a test. I went with Facebook and Reddit for their ability to target very specifically.

For the Facebook ad I targeted everyone in Canada, United States, and Germany who speak English aged 20+ and who have Dungeon World in their list of likes. I set up a daily budget of $5, but I accidentally left it running and spent $30.36 total. The ad, shown below, was seen by 459 people and clicked 25 times.

Facebook Ad
Facebook Ad

For the reddit ad I purchased an ad on the /r/DungeonWorld subreddit with a budget of $5. I’ve so far only spent $4.61 and I’ve got 58 clicks from 10,727 impressions. I also got one comment from feyrath (hi feyrath!).

reddit ad
reddit ad

Here are more detailed stats on the reddit ad:

If I decide to spend more money I’ll definitely be going with reddit over Facebook since it has a Cost Per Click of $0.08 while Facebook had a CPC of $1.21.


The site has been live since Sept 26th and here are some highlights from Google analytics:

  • Sessions: 145
  • Users: 115
  • Pageviews: 155
  • Bounce rate: 93.10%

The bounce rate is very high, and I’d love to get that down.

During this time I’ve got 16 subscribers to my newsletter. One is me and 3 of them are friends I recognize, so that’s about 12 people I don’t know who signed up to know more about the project. If just one of them buys the PDF then I’ve met the goals I specified here.

The Beginning of Publishing My First Dungeon World Supplement

I’ve decided to publish my own Dungeon World supplement, called Binding World.

View the Binding World website.

I’m going to attempt to document the entire process on this blog as it may be useful to anyone reading it in the future. Let’s take a look at what this project will be:

The Goals

  • Hold a printed copy in my hands
  • Have someone I don’t know buy at least the PDF
  • Complete those two goals by Oct 1st 2018 (Dec 31st 2017)

That’s it. I’m not looking to make money on this, or have it be wildly successful, I just want to do it.

Even though I only have a few goals here, I’d be surprised if this didn’t end up being a lot more work than I’m intending. Holding a printed book in my hands means I’m going to need to the following

  • Write the damn thing
  • Get it edited
  • Do the layout
  • Commission or purchase some art
  • Get someone to print it for me

Writing the damn thing is something I enjoy, so that’s good. I’ve never hired an editor before, I might just stick with friends and helpful folks. Layout I’ll probably do myself and ask for input from my artist friends. I won’t get crazy with it so hopefully I can keep it looking okay by keeping it simple.

For the art I’d like to have a decent cover done up, and some background styling done that thematically fits the compendium classes. Here’s an example that would fit the Helltamer using an image from DOOM as the background and some Lorem Ipsum text.

I really want to hold this in my hands and have it printed, but I won’t be doing a print run. If all I can do is get a few copies printed at a print-on-demand service that will be plenty. I’ll likely use Lulu.

Getting someone to buy the PDF will mean I’ll need to make it appealing, get it up on somewhere to sell (likely and, and convince someone that having this PDF is worth more than their cup of coffee tomorrow. It’s also important I don’t know this person, because then I can believe it’s the quality of my product that made them buy it and not an obligation to a friend.

The Contents

Here’s a brief run down of what I currently want the book to contain.

  • A table of contents
  • An introduction
  • Three compendium classes
    • The Bloodbinder
    • The Medium
    • The Helltamer
  • Three dungeon starters
    • Each one clearly associated with a compendium class
    • Have ways for characters to unlock the compendium classes
    • Custom moves
    • New monsters
    • Impressions for theming
    • Questions for building the adventure
    • Items and discoveries
  • A color cover done up
  • Some internal black and white art
  • Printable character sheets
  • Printable dungeon starter sheets

I have rough versions of each of the compendium classes written. I need to spend some time on each clarifying the mechanics and then I’ll be able to start playtesting all of them.

The dungeon starters were originally meant to be Fronts, but I think the dungeon starters will be easier and more fun to write. I decided this when I saw these 20 Dungeon Starters compiled into a PDF on They’re great for inspiration, both for this project and for my campaigns.

To start off the project I’ve also launched a landing page for the website and a newsletter you can subscribe to for a 20% off coupon when it launches.