It’s been a while since I’ve posted anything. I’ve been really busy with schoolwork, plus an upcoming event that I’m helping to run on campus.
A few months ago I started working on a game engine in private. I never really got anywhere with it, but I did create a decent framework I could build on. In the past few weeks, I decided to pick it up again and actually get it to do something interesting.
The name of the engine is Wake, and it is still under heavily development. It is mostly meant as a learning experience for me, but I hope it will be of some use to others as well. It uses SFML for windowing and input and GLM for mathematics. Other libraries will be added in the future, especially ones for asset loading.
Wake’s architecture is fairly simple. It is made up of a few different manager classes (singletons), each of which deals with a subsystem of the engine. There’s the InputManager which handles input, GEngine which deals with the main loop and window management, the LogManager which handles logging, and the World which is, well, the game world.
Actors + Components
On the topic of the world, I took quite a bit of inspiration from Unreal Engine. I like their setup of Actors and Components. It seems to be a good compromise between the monolithic entity systems that can be found in Source engine and the everything is a component mentality of Unity.
If you don’t know what the actor/component system is, I’ll explain it. Actors take the place of monolithic entities. They are anything that can be placed in the world, and they can have their own logic. Everything you see in the world has to have an actor associated with it. Components are reusable classes that can be held by actors.
I’ll be posting more about Wake as I work on it. For now, go take a look at the repository on github!