I do a lot of coding in my spare time. Most of this coding is poured into a game engine that I’m writing, called SimEngine. It’s a simple engine, it simulates stuff, and that’s my name, so it seemed appropriate. That said I might change it. Frostbyte and Infinity sound like cool engine names, SimEngine not so much.
It’s built in C++ using OpenGL, and a variety of small libraries. It was originally started simply as a way to learn about OpenGL, however I’ve kept expanding it and it’s now a thing to teach me how to build low level systems (such as are seen in game engines). My logic for this being that knowing how to build things that are common to games from scratch will only serve to make me understand them that much better. It also teaches me more about how to architecture systems, as well as helping me understand how engines work so that I can better know how to use other ones I might encounter.
A lot of the time has centred around the Rendering side of things, reflecting the projects roots as a way to learn OpenGL. Examples of this can be seen in the posts I’ve written about sprite animation and instancing.
When I first began working on SimEngine it was called OpenGL Attempt 1. This was where I struggled through learning modern OpenGL. I’m still no master at it, but I feel a lot more comfortable than I did in those days. It was hard to work on it back then, it felt like pulling teeth to get even the most basic functionality off the ground. As it wore on and I got more comfortable it became a lot easier. Now I enjoy opening it up and just adding something, like that new animation system. The momentum has finally taken over.
It’s been really educational writing this engine. I feel like if I had to implement something from the ground up for work I’d now have a much better chance of achieving it, because hey, I’ve done it a bunch of times already. I also think it’s going to be a good thing to show to potential employers to get them interested, as if I can build a half-decent project like this in my spare time, then I’ll be able to do the same or better while working for them. There’s also the thing of it being great to have personal projects, it shows a dedication to your craft that I think employers like to see.
I think that most game programmers, aspiring or otherwise, should write an engine of their own at least once. It gives you a much better understanding of how things work from the ground up, without the obscuration that modern game engines employ to make things easier to use. This might help diagnose strange bugs that you see in the course of your normal work, or give you an idea on how to optimise a previously unknown section of code.
My next step will be to decide what my engine needs for me to make a simple game with it. If I’m already there then that is wonderful, if I’m not then I have something to aim towards when deciding what new features to add.
Be ready for the wave of AAA titles with SimEngine in their credits…man, I need to change that name.