There hasn't really been much to report in the time since my last blog post. I've been doing a long overdue major refactoring of the entire architecture of the game.
I'd originally developed Bulldog from an Object-Oriented approach, but ended up running into the Diamond Problem, where different classes needed common functionality but didn't have a common base type. I worked around the issue for many months and then stumbled onto the solution; the Entity/Component/System (ECS) pattern. I did alot of reading into how it works and realised that it was the perfect solution for all my issues.
I started converting the codebase to make use of ECS around a year ago, but only a short way into the work I had to put Bulldog on hold due to a reshuffling of my business interests (as mentioned in my previous post). At my new role I was put onto a fairly large project with a tight deadline, so finding spare time for Bulldog was difficult. Now that the project has matured, I'm finding I have more free time again, so in the last couple of months I've resumed the ECS conversion in earnest.
By my reckoning I'm about 75% of the way through the conversion, so there's a few weeks to go. The most frustrating thing about this type of work is that the end result is all under the hood, and not visible to anyone. If you were to compare the latest build to the build I did 12 months ago you'd be hard pressed to tell them apart. Such is the nature of architectural changes.
That said, I have some big things planned for the development of Bulldog in the second half of this year. None of which would have been possible without this architectural groundwork being re-established now. So yeah, stick with me on this... :)