Why using a game engine?
Some people asked me what are the advantages of using a game engine vs. doing everything yourself. I think it is an interesting topic, so let’s dive a bit into what is a game engine and why do I use it.
To create any videogame, you need a lot of tech. Even a small game like Sky Diver Classic would require a lot of groundwork. First of all you’d need a way to communicate with the GPU (Graphics processing unit) of your device. Simplifying it a lot, you must give your GPU some textures, geometry data, and some information (or even specific code) to process them and paint them in a screen. Transforming 3D geometry into a 2D image can be tricky, but libraries like OpenGL and Vulkan are there to help. They are the middleman between the GPU and your game and will handle the most basic tasks. You can use them to fill the information you need, pass it to the GPU and render an image that will show in the screen. This also helps, especially when you are dealing with different devices as some of these libraries are device agnostic. Your program won’t need to change (much) to run in different devices if you set it up correctly, with the caveat that not all libraries support all devices! So you may need to write your own actually-device-agnostic layer anyway to be able to support multiple graphics libraries.

Once you have that: Congratulations! Now you can paint things in the screen! But this is just the beginning. You may need to write an animation system to handle modifying geometry or sprites with time. You may want to include a Sound Library to handle sound effects and music. I am sure you will need to program a particle system to be able to create nice and cheap visual effects. And how about physics? Do you want to simulate collision between objects? Maybe fluids? Clothing? And finally, you’ll need to figure out a way to define all those parameters and data, possibly with a visual interface to make the task easier than just hardcoding numbers in the game…
A game engine is the software that groups and handles those tasks, so you can focus on writing the code for the game and creating the content. Commercial engines like Unity and Unreal are quite common in the games industry, but doing it all from scratch is also possible, and many companies do. I have worked with custom engines in the past, and there are some clear advantages to it. The most direct one being that if you want something new you can just go and do it! But it usually involves having a team of people dedicated to improving and maintaining the engine as the technology is always changing.

Using a commercial engine is a trade-off. You have all the advantages of having most common problems already solved, but you still need to learn to work with it, and if the project needs something more specific or optimized it may not be the best option. It will be also slower to provide support for emerging platforms and systems as you’ll have to wait for the engine to include them.
For the new Sky Diver Classic, unlike the original version that was done without engine, I decided to use a commercial engine. I chose Unity because I’m already familiar with it and it supports the main platforms the game targets – you can see some of the tools that it includes in this article about level design and this other one about water effects. Sometimes it feels like an overkill for such a small game, but in general, I think the amount of time I’m wasting in dealing with its intricacies is far less than what I would have needed if I were to do it by myself as I did 10 years ago. Especially regarding multi-platform development which is something I didn’t do back then but I might this time!
Want to know more about any other game development topics or issues? Leave me a comment and I’ll be happy to write about it!
Want to try Sky Diver Classic? Do it for free here: https://play.google.com/store/apps/details?id=com.StrawberryTreeGames.SkyDiverClassic
One Comment
Thanks for your blog, nice to read. Do not stop.