Hello again! Another update in roughly a month and a half! This time I’m talking about some of the work I’m doing with my editor, Contrivance! I’ve shifted my focus away from Shibboleth for a bit and am focusing on getting my editor up and running. I have started accruing enough data formats that it would be nice to not have to edit JSON files by hand. I am making the editor with the ever popular Qt library.
I feel like I haven’t said anything particularly useful in a while, so I’m going to go over the architectural design and flow of my work-in-progress game engine, Shibboleth. Application Layer Our journey begins at what I call the Application Layer, which is nothing more than what the executable the end-user runs actually does, which isn’t much. To start, let me explain the expected folder structure the executable assumes.
It’s been a few months without any updates from me. Fear not, I have still been working on Shibboleth. Most of my work has been updates to supporting libraries more than actual engine work though. To name a few, I added schema validation to my JSON class, restructured my job pool system, and started adding in the actual graphics pipeline to the engine. I’m having to do a bit of a refactor on my graphics multithreading.
I really missed my one post a month target by a long shot this time. Two months late! I got my update system to run in stages. So now you can specify updates stages that all run independently of each other, but in order. The updates all operate on frame data that is saved and passed to each stage. This way one stage can continue generating the next frame while the other stages are doing work.
I got a little distracted these past couple months. While hashing out my camera system, I realized that I didn’t have all the support in reflection that I needed. Mainly, I didn’t support reflecting arrays. It took a hell of a long time to get it in, but I finally have it. I also got distracted from writing this post, so it’s a month later than my usual month late posts.
Well, I had a pretty uninteresting weekend on engine progress. Effectively, I haven’t made any real progress on the engine part. I mostly spent time tracking down and fixing bugs. I fixed a very egregious error in my HashMap code when removing elements. I was trying to get smart and try not to rebuild the entire HashMap when removing an element, but it was failing in certain cases. I have resorted, for now, to do the brute force HashMap rebuild methodology.
Again, nothing interesting has been happening lately on the game engine front. I’ve spent this weekend implementing the necessary classes for doing frustum culling. For those who don’t know what that is, this will allow me to figure out which objects are actually within the camera’s frustum and only render those objects. This, however, does not take occlusion into account, so I could be looking at a wall and it will still return objects that are behind the wall.
I’ve been silent for a little while, but I have been getting some work done! I ended up fixing a bunch of threading issues with the OpenGL version of my API. The problems were with sharing display lists and loading resources on worker threads. Shibboleth can now run with both Direct3D 11 and OpenGL 4.3 renderers. I’ve also implemented deferred versions of render device on both versions of the API. With these you can generate command lists on other threads and then play them back on the main thread.
Been a bit lazy on posting. Been in a little bit of a slump, but I have started making progress again. I’ve been having some difficulty figuring out how to further develop my reflection system. To help me figure this out, I have begun working on my editor. I’m hoping that by working out how properties will be consumed and displayed in the editor will give me some insight as to how to proceed fleshing out reflection.
Missed my once a month post. Been a little silent, but I have made some good progress. I finally got mesh and skeleton loading finished. Or at least functional. It took me a little while to figure out how I should structure my vertex data, but I think I’ve gotten a pretty good solution. I do have graphics actually running in my engine now! … sort of. I hacked in a couple things just to get something drawing quickly.