I’ve spoken my praises about mods and the modding community in the past, so it should come as no surprise that I’d want to go out of my way to enable it in my own projects. The first step to enable modding is to embrace what is apparently known as “data-driven design”, which is just a fancy way of saying that you load your data from files. Levels are defined in files, models and textures are stored in files, entity behavior may be stored in script files, etc.
I recently got back into playing Morrowind (with boatloads of mods, of course), and a few days ago I finished and released a mod that I made called Curses (which you can download here from Morrowind Nexus). What it does is replace most of the higher-end weapons you find (and inevitably collect a massive hoard of) with “unidentified” versions, which are worthless until you identify them by trying them on. At this point you may be in for an unpleasant surprise as the item turns out to be cursed and then cannot be unequipped until you see a healer.
This got me thinking a bit deeper into the game design theory behind unidentified/cursed items, and how it might apply to other RPGs, including one that I might be making, hint hint.
So, I wanted to write a big, long article on Unity. Explaining the pros, cons, etc of not only Unity specifically, but of using a pre-built engine in general. This ended up taking forever because, well, I have mixed feelings about Unity. A bit of a love-hate relationship with it, if you will. I wasn’t quite sure how to approach that, so instead I’ll just go straight to what’s important.
Taking a break from math for a while, I wanted to talk about something simpler. Let’s say you’ve never programmed in your life. You like video games, and you think it’d be neat to make your own. You’ve heard good things about the game development industry, but where do I start?
For my first actual content post, I thought I’d dig in to what I’ve written on the math side of things, and explain how it all works and why I chose the things I chose. For this, and all future programming posts, the language of choice will be C++.
First thing to note, is that a lot of programmers who find themselves without a provided math library (such as is the case when working with OpenGL like me, or Vulkan) will usually end up using GLM. There’s nothing particularly wrong with GLM, and if you aren’t especially math-inclined, then I honestly suggest you use it too. The reason that I don’t use GLM is that, by its own admission, it’s designed for “the 90% of your code that does 10% of the work”. That’s all fine and dandy until you start writing that other 10%, and now you need to optimize. Without understanding how the math really works, and how your math library is doing its job, you can’t make those vital optimizations to the most important parts of the code. Still, if you aren’t math-inclined, you can feel free to skip any VMath posts and simply use GLM as a drop-in replacement; the interface is very similar, by design.
Hello there, unknown readers from the future! Since this is the first post on my new blog, I figure I’d take a little time to explain what my plans for this blog are.
I’m an amateur video game designer/programmer. I have been for years now. So far, my only “completed” games are small private projects that really only existed for practice or education. I plan to change that.
As I journey towards creating a finished, polished game that I would be proud to sell, I plan to document my progress here. Other aspiring game developers will almost certainly find something they can learn from here. As I learn new tricks and update old tricks, I’ll share and document my progress here.
I welcome comments, including criticism. Ideally, I would like to foster a small community of sorts, where I can interact with my readers and we can learn from and improve upon each other.
Without further ado, welcome to my blog!