I can finally say that Project Symmetry is completed and now is the time to look back at what worked, what didn’t and where to head towards next.
Let me begin by reiterating the goals of the project because throughout the course of development, these varied wildly. The project started about five years ago as an earnest endeavor to understand what goes into building a game, from top to bottom, unravelling as many layers as possible. A laudable goal, one that was instilled in me and perhaps many others by the excellent Handmade Hero series. What wasn’t as laudable however, was the intermittent nature of my work on the project. Over the years the aim of the project altered between a top-down shooter to a first person shooter to a first person explorative game to being entirely abandoned altogether!
As the vision for the project changed, I jumped back and forth between various engines to realize it but I could never derive the same satisfaction from working within those engines. That is not to say that there is anything wrong with them but I much prefer working with something that I can easily grok and something that grows with me. And that is why I would always return to this project, always adding a few more features and tricks learnt from my encounters with other engines and frameworks.
Towards the end of the project however, I decided to stick to it and finish it, I had spent too much time dabbling and not enough time finishing and releasing. Whenever I could find time, I worked on the project. The aims of the project had changed once again and this time they stayed consistent towards the very end. Since I started this project as a learning exercise, it was going to be just that – An Exercise. What it wasn’t going to be was one of many, many unfinished exercises found across the internet on websites like Github and on the computers of many programmers in long forgotten folders named “MyNewShinyButIncompleteAndNeverToBeFinishedObsession - (3)”. Make no mistake, this was going to be Hello World, but an elaborate one. I wanted to finish the editor and make a couple of levels with it, just to make sure that it worked and I could produce actual playable levels with it, even if it was somwehat obtuse and cumbersome to use. Once I did that, I bumped the version 1.0 and pushed the final build.
There’s still so much that I want to change and improve, indeed, I could see all the cracks and seams as I was rushing to finish the project but I decided to soldier on and finish the project with two playable levels produced with the in-game level editor and models exported from blender into a custom game-specific format with my own exporter. The game uses its own simple format to load and save entities, levels, configuration and key binds. None of it is pretty, and as the meme goes, “It ain’t much but its honest work”. I learned a lot and grew as a programmer by working on this project and feel all the better for finishing and releasing it.
A New Dawn
So what’s next? I have already started working on my next project which will borrow quite a bit from this codebase. However, I do plan on making changes where necessary to remove things I don’t like, (build systems etc) and add others that I do (DLL Hot Reloading, Unity Builds). I’ll write more about that project in the next series of development logs. This concludes Project Symmetry, so long!
Project Source Code : Github.