Devlog 1: A path to game engine programming & rendering.


Genesis

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.

Goal of the engine

I wanted to setup goals for my engines to answer my needs and have a roadmap, so here they are :

  • 2D pixel art rendering mainly : I want to create 2D pixel art with it, it is design with this in mind for now.
  • Cross platform (Windows / MacOS / Linux at least) : The development is done on Windows and tested on Linux.
  • Not dependent on third party libs : The idea is to be able to easily change libraries used by the engine without having to change everything.
  • Make it usable without UI : For now, it is more of a framework than a game engine.

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.

Art creation pipeline

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.

Rendering pipeline

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.

Audio pipeline

I have absolutely zero skills in audio creation so I will probably rely on some assets made available on itch.io :)

Leave a comment

Log in with itch.io to leave a comment.