The time has finally come for me to close the first milestone in my engine development career (never thought I’d say these words).
It took me around 6 weeks of work to put together what I would consider a solid foundation of an engine I would like to make a game in some time in later half of this year. As you can see from the milestone description, wording was pretty vague and that’s on purpose because I didn’t really know what I was going into. But as time went by, I have got better and better at guesstimating what is and what isn’t doable in reasonable time frames.
Before I started working on the engine, I took some time to learn (very very very) basic rendering concepts and wrote (more like modified and extended) a vulkan renderer. After I had some basic understanding of rendering, I could start working on building an engine around it. You could argue it’s better to make an engine first and renderer later but I like to look at things, what can I say. Anyway…
What is Sopka engine?
Sopka engine is my own 🙂 custom made (soon to be) game engine developed in C++. It uses still very primitive custom Vulkan renderer and EnTT framework, which is a huge help. Even though I could write my own Entity-Component-System with some extra time. I’d say why reinvent the wheel, EnTT is great.
Sopka engine features
- simple scene system
- entity/component serialization for whole scenes
- input handling
- 2D and 3D rendering (textured primitives only)
Basically what I wanted to achieve by the end of March is completed with some little things on top. Scene system isn’t really a fully developed system since I don’t have an easy way to modify scenes (editor is a long way away). Still, I probably won’t be making any changes to scene code until after next milestone.
Next milestone?
Next up, renderer improvements.
This is going to be a big learning experience for me since I have to research so many new topics to implement all of these features. Half a year ago I had barely any knowledge and no intention to learn anything more than what I had to know about rendering. Now I’m writing a renderer for my own engine. Crazy now that I think about it.
Besides all of the features mentioned above, my first step for this milestone is to import Dear ImGui. I imagine interactivity will be very useful for development of new rendering features.
Since I don’t have much to show at the moment. Look at this to learn more about current Sopka engine capabilities.
If you want to follow development of this engine, I will be posting more often (maybe weekly) from now on. Especially since I’m starting to work on renderer features which I can present in a nice way that fits blog post, and maybe even a video! Stay tuned. Imma head out.