OED Character Generator

For my convention games I use a random generator to create all my characters.  It started as a little bit of python code I slapped together to auto-fill my form-fillable pdf character sheets, but over the years it has grown and morphed.  Recently I tuned both the character sheets and the code to produce OED characters, and explicitly made it a bit lighter on the spell section to go along with using the spell cards.

Well, this time around I thought it was time to slap some UI on the thing, so I wrote a little html to input all the options and show the list of characters generated.  The randomization isn’t always the best, so I can’t just ask for 8 characters and get a perfect convention-ready party.  I usually do a batch of 10 or so, chuck the truly terrible characters, and repeat until I have a good selection.  Anyway, the point is, now it’s all pretty and web-ified I thought I might share it.  So here it is.

Now, this generator is highly tuned to what I need for conventions, so here are some notes lest anyone be surprised by some of the things it’s doing:

  1. It’s OED rules, so everything you’d expect with that (Target 20, no clerics, OED spell list, etc.)
  2. Stats are rolled 3d6 straight, I have not incorporated Delta’s ideas on increasing stats for higher-level characters. 
  3. I do not use Delta’s stone-system for encumbrance, instead preferring my own expanded BX encumbrance system.
  4. Generally class choice is made via:
    1. If Int is in the top three of the character’s stats and above an 8, it picks magic-user.
    2. If Dex > Str, it chooses thief.
    3. Otherwise, it chooses fighter.
  5. Multi-classing is chosen if the player has the required stats and XP (elves are special-cased to gain their free level of magic-user per OED).  Even then I drop the choice for half the eligible characters to make it a little more rare and allow more single-classed characters with high stats to make it through.
  6. I use a somewhat lower prime-req requirement for multi-classing than Delta.  I have it set to 13, not 16 as he recommends.
  7. I don’t roll money and spend it on equipment, I try instead to just give each character appropriate armor and weapons based on their classes. 
  8. Magic item generation uses a fair amount of random noise.  Loosely defined, each character gets roughly 5 chances to get a magic item at 10% per level of success on each chance.

You may also like...


  1. Thanks! I don’t have any specific plans aside from tuning it for my own needs, which history has shown to be pretty constantly in flux. That said now that it’s up there for the world to see, I’m not against developing it in areas that would be useful to a larger audience. Of course with how open the game is to tinkering I bet every DM has their own wish-list — heck that’s why I ended up writing my own code in the first place. What would you need it to do to be more useful for your needs?

    1. I don’t know enough about programming to know what is appropriate to ask for in earnest. So if any of this is laughable, please forgive me.

      I would like to be able to generate characters with different parameters. For instance, I would want Clerics. I would want to be able to say, “Dwarves can only be fighting men and only up to level 6.” I would want to be able to generate an Elf guy with 10 total levels split arbitrarily by the program between Fighting-Man (max 4) and Magic-User. I would want to be able to click a box to add in the magic items from a certain supplement.

      All that stuff – the choices you make when you make your setting.

      HOWEVER, I would settle for a generator that makes B/X guys or 0e guys or 1e guys or whatever.

      1. The original code was made for B/X, with a race-class split which I know is not standard B/X but was how I was playing at the time. So adding that back (which would include clerics), would not be difficult. A purer B/X race-as-class system would require more work as the system would have to circumvent all race and multiclass choice making.

        A level cap by race would also be pretty straight forward, it’s not a specific rule I ever liked very much but it should be do-able. When I was running B/X I preferred a simple extra XP cost (+10% per level for dwarves and halflings, +20% per level for elves) as a balancing factor for non-humans. So that code is also still lingering in there if it was desirable to re-enable.

        The tables it operates on were abstracted into data files, which is how it supports both B/X and OED. Supplying an external table to use for a specific element like magic-items is certainly not out of the question. I’d have to think though on where/how to specify that data, so there’s an interesting challenge there.

        I do have something in mind to add to the level options, to say rather than X amount of XP to request specifically level X, and grant whatever XP is required to get the chosen class to that level. Actually dictating how much to split between multiple levels is a heftier task, so that’s at the bottom of the list.

        Note that the final output PDFs are still editable, so if I added a few things to get it closer to something usable you could still come back and fine-tune the individual characters. That said, the PDFs it uses were also custom-made, so some concepts are pretty well baked in (eg. Target 20).

        1. That’s a really remarkable amount of overlap. It seems like something you could sell, if there is a programming analog to drivethrurpg.

          I read you regularly so should you ever make updates, I’ll be happy to hear about them!

          1. Back when I was running B/X regularly and Dan had not yet formalized OED, someone asked “what’s the difference between the systems you guys run?” The best answer we could come up with was “which book I have sitting at the table.” Basically, we had both house-ruled our respective choices into something that looked remarkably similar to each other. Since Dan was so much better at formally publishing his approach, I decided to just join him. 🙂

Add a Comment

Your email address will not be published. Required fields are marked *