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. No more special DLLs that have unique functionality from the rest of the modules. Everything now goes through the module system.

# Reflection Attributes

I’ve done some small changes to the reflection attributes. The var(), func(), etc. functions now take in the attributes at the end. No more calling varAttrs() separately. This allows for me to do more with attributes. Attributes will now get an apply() function called, that gets passed in the variable they are being applied to. This will allow attributes to do more than just be glorified tags.

I’ve also removed the read_only boolean that the var() functions used to take. It is now an attribute called ReadOnlyAttribute.

My old MessageBroadcaster class has been resurrected. Renamed to simply Broadcastser, as that’s easier to type. It has synchronous and asynchronous message broadcasting. It’s not in widespread use yet, so I’ve yet to work out the threading kinks, but it’s integral to some of the editor functionality.

I’ve made a Loaded Modules Window to keep track of what modules loaded what. Filtering is done via a JSON config file. You can filter by base class name and attribute names. Pretty straightforward and simple. I might add more filtering options in the future.

# ECS and Archetype Editor

I’ve been working on an ECS (Entity Component System) module. My main goal is to get the memory optimizations that the Unity guys are doing. See this video for details.

ECS is a terrible name, but it’s industry standard. The words Entity and Component confuse everyone in every conversation I’ve been in regarding ECS. It really needs some new terminology to separate itself from the existing GameObject-Component model everyone is used to.

Anyhow, I’m currently working on Archetype creation and have been working on an Archetype Editor. It’s pretty simple, just a list of available components and you either drag and drop or right-click to move them to the list on the left.

# Asset Browser

Just like every other game engine, I’m also writing an Asset Browser! It’s a simple text list for now. No thumbnails. Not that I have anything rendering yet.

It currently only does two things, send a message when a file is selected and open the corresponding editor type (if known and not already open) when a file is double-clicked.

Not much to talk about with the Asset Browser. I am working on getting a right-click menu so I can start doing some file creation.

# Conclusion

And that’s pretty much it for this update. Mostly just learning my way through wxWidgets and creating some of the basic building blocks of an editor. Until next time!