Although, It’s not that much to talk about really, because right now the engine it self is just a library crate that I have written to supply myself with 3D rendering capability through OpenGL ES 3.2 via the gl-rs crate for rendering function loading and the glutin crate for cross platform window creation and event handling.
Other then that I have built some utilities for saving and loading user settings, a state stack for popping and pushing different game states implemented via a simple trait, a simple tool for converting conventional 3D model files to a simple binary format that the game engine then can load and a prototype of simple internal messaging system to allow different parts of code to pull and push information between each other, such as the settings manager automatically saving settings when they are changed.
I have also implemented a basic version of the GJK algorithm for collision detection, and upon that I have based a simple physics system, but this only works in 2D scenarios as of now, since I’m still having some problems with extending the GJK to three dimensions.
Ohh, and I have also built the underlying maths library for working with 2D and 3D graphics, things like vectors, matrices and quaternions, and a simple pseudo random number generator based on the Xorshift128+ algorithm.
So absolutely nothing spectacular, but it serves it’s purpose and I really enjoy developing it and I love to have such intimate knowledge of my most used an crucial tool when developing my games, namely the engine.
So not that much of an “architecture” as of yet, but on the horizon, and the two next big features I want to add to the engine is audio playback, and I’m currently looking to PortAudio for implementing this feature, since it is cross platform and has a rust crate wrapping the c library, and then there is the issue of implementing a good Component Entity system for the engine, something that seams to be something of a hassle to implement in rust, especially if you want to implement it via data oriented design, as I do!
Also, in the somewhat near future, I will probably upload the source code to git hub under an open source license for all to see and mock, but right now I just want to sit down and work on my first game and not worry about maintaining a publicly available open source project.