There doesn’t seem to be clear agreement on how fast BX/Moldvay PCs should advance, but it’s clear that many people are unhappy with the rate of advancement that results. It tends to be far too slow, at least for busy adults who manage a three-hour session maybe twice a month. (See e.g. Becker’s general critique here and here, and a recent Reddit post on the meagre spoils of In Search of the Unknown).
I’m working on some adventures that I plan to publish, and I plan to stat them for BX because (as Patrick Stuart recently argued) BX seems to be the most-used system in the parts of the OSR I care about. There are often complaints about adventures supposedly statted for BX that they are far too light on treasure (see many of Bryce Lynch’s reviews).
I don’t want to use the standard treasure tables because (a) I’m using mostly custom creatures, (b) there’s controversy about how good they are, and in any case (c) I want to make a tool that we can all use to tune the rate of PC advancement without giving up on xp-for-gold as an incentive.
So, I have made a spreadsheet (Google Sheets version, Excel version), and explained how it works below. Unless noted, I’m getting any specific numbers from the Old School Essentials Rules Tome.
Basic process to calculate “how much XP a given party needs to advance in level”
- Set the average hours-of-play you want the party to spend at each level, on average across all levels
- Compute average xp needed per hour to achieve that, at each PC level
- In my current spreadsheet, I’ve not done an average, just used the fighter table
- Give each level a “length multiplier” i.e. how much longer than baseline you want that level to take, and divide the xp-per-hour by that.
- The BX advancement tables provide some version of this, but this lets you take direct control
- Notice I’ve added a calculation for the average value of this across all levels. If this is anything other than 1, the average hours-per-level across an extended campaign will differ from your target value at the top.
To use this spreadsheet for awarding xp, the GM needs to set the “current PC level” used to something sensible. A simple approach is to use the average level in party; for published adventure design maybe use the midpoint of the “an adventure for levels…” you quote on the cover.
Simplest method – award xp for each hour played
- Award xp per hour every hour, regardless of what’s happened.
- (That’s it. That’s the rule.)
That’s useful, in that it approximates milestone leveling while taking account of the different advancement tables for different BX classes. (which I assume are there for good reason – I’d be keen to see analyses showing they’re not, or are way out in their specific numbers).
Problem, of course, is that we’ve lost the ability of xp to incentivize things – to encourage players to play in interesting ways.
Simple way that still incentivizes
- Say that a “poor performance” hour gets ½ average, a “good performance” hour gets 1½ average
- At end of each hour (or session), GM judges performance vs thing(s)-to-be-incentivized, and awards xp accordingly
This is better than above, in that the incentives are back.
But it might feel a bit patronising, especially if you are otherwise peers i.e. the GM isn’t otherwise an authority figure that the players look up to.
Dungeon stocking for xp-for-treasure, ignoring monster xp
We can restore the xp-to-treasure link by using the steps below:
- Decide how many PCs to assume
- Decide on a “spare factor” – how much extra treasure to seed on the basis that even the best party is unlikely to ever find it all (my current guess at a good value is 1.5)
- Estimate rooms per hour
- Count rooms in dungeon
- Average target treasure per hour = (good-performance-xp-per-hour / xp-per-gp) * expected-party-size * spare-factor
- Average target treasure per room = target treasure per hour / rooms-per-hour
- Total target treasure value = value per room * rooms in dungeon
- Divide total treasure into three roughly-equal piles
- Seed treasure from each pile into the dungeon, making the gp-value from one pile easy to get, from one pile moderate, and from one hard. Something like:
- Easy – in an unguarded chest in an empty room, on the person of a weak monster
- Medium – in a hidden location that might not be obvious to search, protected by a simple puzzle or moderately dangerous trap, guarded by tough monsters
- Hard – protected by difficult puzzle or a deadly trap (the party-wrecking kind that you’d probably signpost heavily), guarded by a monster that’s to deadly to fight head-on at this level (so will require significant cunning and risk)
Hacking simple dungeon stocking to crudely account for monster xp
- Estimate, perhaps empirically from play, what monster xp party will get on average per hour
- Really hacky model, based on nothing — (10 * base xp for a monster of hd = party level)
- The spreadsheet currently uses this approach
- Slightly smarter model — estimate monsters-per-hour based on rooms-per-hour and a new value monsters-per-room (which could be based on stocking tables if you’re using them). Assume each monster is of hd equal to the PC level. So monster-xp-per-hour = monsters per hour * average-xp-for-a-monster-of-that-hd.
- Really hacky model, based on nothing — (10 * base xp for a monster of hd = party level)
- (proceed as for previous example, but reduce hourly treasure allocation by average monster xp)
This is less precise than the modelling for treasure, but it’s probably fine as long as average monster xp per hour is considerably less than treasure xp.
Hacking simple dungeon stocking to crudely account for (any other xp source)
As for monster xp, replacing the estimated monster-xp-per-hour with the expected per-hour of the other source.
What comments would I like?
- Whether (as is glumly probable) someone has already done this, better, elsewhere
- Views on the general approach and details
- Feedback from any actual design, prep or play use
- Views on what I should use as default values of the following (when publishing an adventure for general BX audience use)
- hours-per-level (desired)
- rooms per hour (observed in typical play)
4 thoughts on “A tuneable method for placing treasure in BX”
I think the last bit is too complicated, and I do think that the criticism about treasure lacking can be handled without taking the hours into account: the buyer of a product only wants to know for what level range the product is, and how many levels could be gained by exploring it. That gives you the total treasure to distribute in your product (plus a 50% margin or so).
Generally speaking, Courney has some good posts on treasure and all that. The following two come to mind:
There’s plenty more: check out the index, and the treasure tag, for starters.
For modules specifically, you might be right. But when people complain about slow advancement, they often reach for a real-world duration (either hours or the much vaguer “sessions”) as part of their complaint. I.e. people often frame the problem as advancement that takes too much real-world time, and frame the solution in terms of an desirable real-world time per level.
e.g. from the B/X Blackrazor post linked above (http://bxblackrazor.blogspot.com/2010/11/bx-d-flaw-of-design_12.html) — “it took us five weeks to complete a module the size of White Plume Mountain. By extrapolation, it could take up to 35 weeks to advance 7th level characters to level 8?” and later “a level every 4 to 6 weeks of play isn’t a bad rate of advancement in my opinion”.
There’s a good point in your blog post (https://alexschroeder.ch/wiki/2020-01-19_Not_designing_for_level_gain) about intermittent reinforcement, and I get that that can be enhanced by occassional blow-you-to-the-top-of-next-level hauls. To add that to my approach, you’d need to take my outputs as describing a distribution (rather than a budget) and make some kind of random generator to match. The average over infinite time could then match my spreadsheet, but with some adventures (or whatever your unit is) having extremely high or low hauls.
(skimming https://hackslashmaster.blogspot.com/2011/10/on-generation-of-treasure.html that you shared, it looks like his method could be adapted to support that)
Thanks for the links – they look good.
I had similar thoughts some time ago and asked for input on a local discussion forum. Opinions eventually converged around that you need 2-3 times the amount of treasure you want the characters to find, if you’re planning this stuff.
So if you’re writing an adventure for five level 1 characters and want to give the players a fair chance of leveling up before it’s over, you should include about 25,000 gp of treasure. Assuming equal shares of easy, hard, and very hard-to-get treasures, most groups will find enough to gain one but not enough to gain two levels.
Thanks, that’s a good suggestion. I’ve added it to the latest model, which I’ll upload shortly. Though it does, unfortunately, leave me with one more input parameter to calibrate (the “spare treasure” factor).
Further thought — ideally, I’d want to apply the spare treasure factor differently the different “piles”. For the easy pile, I wouldn’t want to add much at all, since groups are likely to hoover up most of the easy treasure. It’s the medium and (especially) hard treasures that might need a larger multiplier.
I’ll have a think about how best to do that.