Posted March 16, 2021 by antaalt
I have always enjoyed video games. And I also always enjoyed creating. Anything. 3D, drawing, photography… Creating a video games seemed like a good idea, mixing some art, with some music & programming ! But I tried using already existing game engine, such as Godot, and even though I enjoyed it, I didn’t found what really interested me. What really interested me was not to make a game, but more to make a game engine. And to create a game engine, you need to make game to have a good idea of the needs of your engine. So that’s it, let’s make a game engine for our game ! Wait, isn’t that a bit of a task ? Yes, making a game engine is hard, require patience and some knowledge of not only rendering but also everything related to io, audio, math, threading… It’s not for nothing that game company take years for creating their own game engine. Snowdrop (Massive studio), id Tech (id Software) and many others were not made in one day and are still in high development today.
So if you want to create your own game engine, ask yourself if you really want it, because you will probably spend more time on its development than on the actual game.
I wanted to setup goals for my engines to answer my needs and have a roadmap, so here they are :
This is a personal project I made in order to learn about the conception of a game engine. It is not perfect, it was never the intention, but I tried to make it easy to understand by other people. I will comment a bit in how I did it and hope it will help future game engine programmer :)
So the game will be a 2D pixel art game. Many pixel arts games don’t do true pixel art, and that’s something I find disturbing. What I want is a truly pixel perfect art style. And for that, we will have to work with small framebuffer for rendering all our game and scale up this buffer to the actual window size. This require to do all the artwork in pixel perfect style. The levels will be tiled based.
We could use Photoshop for something like this, but I prefered to use Aseprite which is designed to create pixel art and is more suitable for our needs.
It’s not free (~20€), but it offer many great features for pixel art creation and ease the process of art creation greatly. Plus it is open source and well documented ! What else ?
As for level creation, I was thinking of using tiled levels, and was greatly inspired by Noël Berry’s work with his own small 2D game engine blah. I could have went with tiled, a great 2D level editor which offer great flexibility but I wanted to try out Ogmo, an alternative made by Celeste developers fairly simpler than tiled, but for now, it fitted my needs.
I never really used OpenGL in a real context as I am more working with Vulkan generally but it seemed overkill for my needs and OpenGL is still a good fit and that is what I was planning to use. I did not wanted to use only one API so what I really need is an abstract layer for rendering. This way, I can add any API later to my engine. This will be the way to go.
I have absolutely zero skills in audio creation so I will probably rely on some assets made available on itch.io :)