I have finally figured out what was broken in the ambition based XP calculations in Ten Dead Rats. I was pretty confident in the logic and math that I used to create the formula for calculating ambition award amounts, but for some reason it came out wrong at the table. Which is pretty weird given that I back-calculated the math from the numbers I wanted to use at level 1, which is the level my party is at right now. The problem, it turns out, was the extra bit I added to try and keep it simple on the page.
It starts with my XP chart, whose origin begins with the OD&D fighter level chart. It’s basically a progression of factors of 2 times 1,000 — 2k, 4k, 8k, etc. For some reason OD&D breaks this at 8th level, using 120k instead of 128k and then 240k instead of 256k. I’m not sure why, but that’s neither here nor there. Point is, I stole the OD&D fighter chart, reverted it to a regular doubling pattern throughout, and then dropped a zero off the end. The decision for the last part was based on using treasure based XP, to keep the progression in scale with reasonable numbers for the Warhammer economy. At 2nd level, 200 gold crowns is definitely a fortune, while 2,000 gold crowns is kind of unimaginiable wealth.
So, the next step was figuring out how much XP to give for each ambition. It had to scale up as the party levels, and my basis for figuring it out was answering the question, how much XP does a player need before they gain a level? I figured a party ambition should be a really big deal, so maybe it gets you halfway there, while a personal ambition should be less, so maybe a quarter of a party ambition, or 1/8th the way to your next level. The formula therefore became:
(XP for Next Level – XP for Current Level) / Ambition Factor
Where “Ambition Factor” is 2 for a party ambition or 8 for a personal ambition. This is OK, but felt a bit complex to write into the rules. Then I noticed that since the XP per level chart doubles every level, I could double the Ambition Factor and then just use XP for Next Level rather than using the delta between levels. This basically works – except at 1st level. And the reason is, the delta between levels does not double from level 1 to level 2. Let’s look at the XP chart and fill in the delta values:
|Delta from Previous Level
As you can see, the delta value for both level 2 and level 3 is actually the same — 200 XP. How could I fix this? I toyed with actually mucking with the XP per level chart. I could set level 2 to 100 XP, and then double the delta each level, so 300, 700, 1500, 3100, etc. That would probably be OK, and I don’t mind actually having slightly lower numbers, though the factors of 2 sequence really appeals to the software engineer in me and I like it being obviously derived from the OD&D fighter chart. I also kind of don’t want to screw with the players of the current stream — lowering the XP to level 2 would likely cause some of them to suddenly jump a level.
Another option would be to actually write out the real formula above — calculate the delta and stop doubling the ambition factor. I like the idea of the rules having less abstraction from the original design, but it’s a kind of complicated thing to ask readers to do. I definitely prefer a presentation that favors a simple single-operation formula.
So finally where I ended up was to simply special case level 1. Doing this also lets me use current level XP instead of next level XP as a base and cut the ambition factor in half for slightly easier math. I couldn’t do this before because level 1 starts at 0 XP. The text therefore now includes this chart for ambition based XP awards:
|Purchase a firearm
Make contact with a thieves’ guild
Unveil a chaos worshipper
|Level 1: 25 Thereafter: Current Level XP / 8
|Travel from Altdorf to Kislev
Find proof that Skaven exist
Find out who is behind all these murders
|Level 1: 100 Thereafter: Current Level XP / 2
That should give accurate numbers and is hopefully easy for readers to parse. And it is ultimately accurate to the original design I was shooting for. I’ve updated the PDF and incremented the version number to 1.2. You can get it here: