I stumbled across a very cool website a while back: D20 SRD (System Reference Document). What is that you might ask? You’ve probably heard of Dungeons and Dragons and/or Pathfinder – they are dice based role playing games. In the SRD you will find a bunch of the game mechanics released to the public in an open game license. That includes races, classes, equipment, monsters, magic, abilities and more.
The primary goal for this project is to create a reusable “core” of game mechanics based on these documents. If you prefer mechanics from one guide more than another it will hopefully be a trivial matter to switch between them. I will be working mostly through the Pathfinder SRD. Along the way I will create a variety of simple demo projects to verify that the core systems are actually working as intended.
A secondary goal for this project is to play around with new architecture patterns. This doesn’t mean that patterns used in my other projects aren’t good, or even that the new patterns will necessarily be better. I am learning by doing, and sharing as I go. Feel free to offer your opinions on how things develop.
If you haven’t already read my post, Easy Access Architecture, then I would recommend you take a quick look. This project will be heavily reliant on that pattern. It will be a valuable way for me to test whether or not I like what I’ve done.
A sort of guiding principle for this project is to keep my code “testable”. Not that that means I intend to make it 100% tested. Rather keeping testability in mind should naturally help drive me to use good practices like making each class have a single responsibility, making sure there are not hidden dependencies, and making sure I code to abstractions, etc. It’s ok if you don’t know what any of that means, I will try to make everything easy to understand (or at least to follow) even for beginners.
At the time of this post, I happen to be using Unity 2021.3.8f1. It is one of their LTS (long term support) releases, so you should be able to find it here. You can probably use newer versions without trouble, but if you encounter an issue, feel free to ask.
I introduced the source material and inspiration for the project, and outlined the various personal goals set for myself. If you’re ready to get started, move on to the next lesson!
If you find value in my blog, you can support its continued development by becoming my patron. Visit my Patreon page here. Thanks!