Why choose a Game Engine?
Today the term ‘Game Engine’ is a bit of a misnomer, it really means interactive real-time graphics.
In recent years it is no longer only confined to a beige monitor; various device screen sizes, tethered/untethered, different realities (virtual/augmented/mixed).
It touches a number of domains; architectural visualization, film visual effects, interactive product configurations (e.g. car sales), museums, science & simulators, oh and erm — gaming. For simplicity, I’ll continue to call it a gaming engine.
Write your own?
Writing your own game/simulation/et al requires you to implement a large set of features. A game engine provides the majority of the heavy lifting and largely abstracts you away from the complexities of the underlying hardware. It is not impossible to do this yourself, a number of the popular game engines started life as a framework someone had written to enable them to create their own game —it isn’t a coincidence there is a game called Unreal. But most of us do not have the budget of a AAA game company in order to understand how to get the best out of a DirectX pipeline for the latest Nvidia/AMD chipset, keyboard messages, or 3D audio, etc. But it is not just about hardware/driver abstraction, it is also about the feature set.
Features
I have grown up with a fascination for ‘video games’ and used to return home from the local sea-front amusement arcade and start to draw out sprites on graph paper. But to actually get those graph paper sprites into a game is quite a challenge. Assuming you have managed to understand how to get the hardware input and output working there are so many other tasks to resolve. Here is just a tiny number of them;
- moving and animating a sprite on the screen
- keeping all the movement synchronized with the frame rate
- detecting collisions between entities
- displaying text
Even those relatively simple tasks are quite difficult to correctly implement. That is before you start to scratch the surface of drawing in 3D, physics, materials, lighting, particles, networking, trees, connected rigid bodies, etc.
Choosing a Game Engine
For the majority of us we do not want to be tackling all those difficult problems, we just want to create our world for our users. So here is the definitive guide to choosing your game engine…or not, “it depends”.
- How much do you want to code vs. how much do you like to use design tools?
- What are the upfront license costs, and what are the costs if you become successful?
- What programming languages are supported, do you have experience in them?
- What sort of editor(s) will you have to use, do you like them?
- Are you looking to get a job using the engine, what sort of job market is there for it?
- What support is there for the engine, is there a large community? I.e. if you have a problem how likely is it that someone else will have posted the same, or similar, question and also that there is an answer?
- How complicated is it to learn the engine, what resources are there to help you?
- Does it offer good support for the type of game you want to make? I.e. VR, lower end mobile, 3D HD high-end desktop, 2D platformer, etc.
- Does it offer cross platform support. E.g. PC, Mac, Linux, Xbox, PlayStation, etc.
My Journey
Having gone from implementing games in BASIC, Machine Code, C/C++, XNA, I have now settled on Unity 3D. Why? Well it just ticks all the above boxes for me, especially because I enjoy programming in .net…and that is the real take away here, choose the one you enjoy. Oh and feel free to follow me here, or subscribe to my YouTube channel, if you are interested in Unity.