As per the usual, I’ve been extremely late on posting about … anything. I also completely invalidated some of my former posts. I’ve dropped working on Contrivance (the editor). This is due to a couple factors.
- I hate Qt. I spent 99% of my development time fighting Qt and trying to work around it than actually implementing features.
- Qt’s support for dockable windows is fairly non-existent.
To that end, I have been attempting to integrate Nuklear and embed the tools into the engine. At least, that is the tentative plan. We’ll see how the tools manifest themselves. I did a complete refactor of the Resource Manager, which allows for tracking of sub-resources a bit better. In the process of doing this, I ran into a fairly disastrous bug. I had seen it manifest before, but it seemed extremely random and rare. This is, however, not the case. Every so often, maybe 1 in ever 10 to 15 runs, the engine will crash in a random piece of code. After a bunch of debugging, I determined that the crashes are not happening as a direct result of the code it crashed in. Somewhere in the engine there is a memory corruption bug, and I have no idea where it is coming from. The code that I’ve seen it crash in is all completely unrelated to each other, so the crashes themselves aren’t giving me any hints. At this point in time, I’m going to need to audit all the code I’ve written and strip down and slowly add pieces into the engine to find the cause.
As you can imagine, this is a huge blow to my morale. This is causing me to re-evaluate what I should be doing. Even without the memory corruption bug, the engine isn’t going to be ready for use for a LONG time. I’ve been playing around with the Godot Engine and thinking of what kind of game I want to make. I’m at the point right now where I want to get something finished and out there. Once I finish making a few games (something I haven’t done since college), then I’ll see where I’m at. I still want to make Shibboleth a reality, but it might not be viable or a smart idea right now. Regardless of what happens, working on Shibboleth has been an immensely valuable learning experience and I have no regrets in my decision to make it.
I have been wondering what would be better to make, a generic game engine, or a well-written, easy to use framework and easily adaptable tools. Every game has special, non-generic code that must be written. Sometimes generic systems add bloat and can eat performance compared to more explicit systems. Having a set of core libraries that are shared amongst projects, but then have the games be custom projects, versus pure data pumped into a generic engine. I don’t know that answer, but I’m thinking about it heavily.
Well, this is my brain dump. I can’t make any promises on whether I will update more frequently, but I will try to think out loud more. Hopefully I’ll have a better update for you next time!