One of the big undertakings we are currently working on is basic support for the D20 ecosystem, which covers some of the largest and formerly largest RPG systems, including the 3rd, 3.5 and fifth editions of Dungeons and Dragons and Pathfinder as well as many less common systems such as Star Wars D20 and D20 Modern.
This ambitious project offers an interesting array of challenges, and though we are focusing on the core features for our first version, we need to take a lot of future options into account already. One major hurdle when tackling an ecosystem of this size is that there are a near infinite number of source books beyond the core rules, and that is not even considering the endless array of house-rules that players have come up with. Naturally we cannot integrate every possible rule ever written, so we want to design the system in such a way that you can still use a rule or house-rule, even if the system wasn’t designed for it directly.
One place where this philosophy is easy to demonstrate is in the way we handle the values on character sheets. Almost all stats in the D20 system are some sort of modifiable value. These may have a base value, which is then modified with various bonuses and penalties as a result of the games rules. For example, a character may have a base armour class of 10, with a +8 bonus provided by their Full Plate armour, and an additional +1 from the Dodge feat, for a total armour class of 19. Some bonuses may be conditional — a bonus to armour may only apply against Giants, for example, which means the base armour class remains at 19, but against giants that same character’s armour class might be 22. Other bonuses are temporary, like a Curse which temporarily lowers the armour class by 3 points but which only lasts until the end of combat.
Each modifier has a value, positive or negative, by which it modifies the armour class, it has a source that created the bonus (be it armour worn or a feat or class ability) and it has a bonus type — there are some interesting rules to stack bonusses of the same type even. Together, the base score plus the modifiers forms the actual value of the armour class — and the same model is followed for many other stats and scores, including ability scores like Strength or Dexterity, skill bonuses and saves.
The model we have chosen for this adds an interesting additional quality to modifiers: whether they were manually added or automatically calculated. This option allows us to implement the actual game rules at our leisure, once we have the rest of the system running correctly.
For example, the Dodge feat in Pathfinder adds a +1 bonus to armour class — we can support this by adding an automatically generated modifier to armour class for any character that has the dodge feat. At the same time, we continue to allow a user to add additional bonusses (or penalties) to the character manually — maybe the DM made a homebrew feat “Improved Dodge” that adds another +1 bonus. While we don’t support that feat yet, the option to mix manual and automatic entries means the sheet can still be kept up to date. You just need to do a little bit more work.
Over time, we hope to support more and more rules, including allowing users to add their own in some manner. By modeling modifiable values like this though, we can make sure that you don’t have to wait until we support all your books before you can start using them!
Have you ever made up houserules for your campaign? We’d love to hear about it — why not tell us in the forum, or check out this week’s changelog which features a whole slew of bugfixes and quality of life improvements!