Today I’m going to be talking about Arbalest again. It was on hiatus for a while, as I was putting all of my energy into Shibboleth. I had planned on scrapping Arbalest, but I got a spurt of motivation, so I’m back at it. The main reason for me revisiting this project is because Microsoft released a bug in their compiler that causes it to crash on many codebases. Because of this, I can’t actually compile my project anymore until a fix is released.
It’s been a while since I’ve done an update dedicated to Shibboleth. I won’t remember everything, but let’s cover some of my more recent developments. I’ve been spending most of my recent time working on the editor, so you’ll see some screenshots of that. Project Structure I’ve simplified the project structure a bit. Things are now split up more appropriately under the src folder. I’ve also made everything more uniform in functionality.
Once again, it has been several months since I’ve posted anything. I’ve decided it would be beneficial to keep a development log of what I’m working on. So, here it goes. The two main things I have been working on are re-writing the reflection system and how I handle engine modules. My goal is that when writing modules to extend the engine, I’d like as little boilerplate code as possible when hooking up the DLLs.
First off, I’ve begun doing a major refactor of Shibboleth. I’ve currently replaced all of my containers in Gaff with those from EASTL. I have also begun re-writing the reflection system. Hopefully this re-write will come with better functionality and simpler implementation. I have started this work in a branch, so the original code is still about if anyone is curious to run a functional, but broken version of the engine.
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.
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’ve been very slow to actually post new content to the blog, but fear not, while I may be super slow, I do not plan on abandoning the site! Some things I plan on doing … eventually: Post more about Shibboleth’s architecture. Convert blog from WordPress to a static site using Hugo! Need to figure out what solution to use for comments. So, essentially the posts become static content and the comments are dynamic.
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.