10 Criteria for Adopting a Game Engine
"What Game Engine should I use?” or “What game engine is the best?" is something I encounter over and over. A friend of mine recently brought up the discussion as he complained about how someone asked the vague question "Which was better in Unity and Unreal?”. I kind of understand he's ire at the question because developers choose game engines based on preferences not because it's the so called best. This short video would give you an idea of what I'm talking about.
To complement the video, I've decided to present my thoughts on the subject and answer the never ending question, because I simply need a reference for it in future whenever it arises. But before I delve into it, I'd like to enunciate useful information for noobs.
First of all, not only Unity and Unreal exist.
So Unity and Unreal are quite popular because of their free tier versions, and the two combined own a lion share of the development community; about 62% of Triple A and Indie studios leverage their technology. But frankly, there's a plethora of free game engines out there. Free meaning the engine is either free with no upfront payment, open-source or offers a free tier version with some limitations. Apart from Unity and Unreal, there is Amazaon's Lumberyard, Crytek's CryEngine, Gamebase's Gamebryo and a lot more. Just note that Unreal and Unity aren't the two around so you don't get restricted to them.
Secondly, not all have Editors
Not all the free game engines are applications with full blown editors. Some are a combination of a Rendering, Networking, Input, Audio and Physics engine(s) with editor capabilities while others are SDK's or frameworks that provide game oriented code based libraries. Examples include Corona SDK, MonoGame, Love2D, Otter2D etc.
That aside, there are things developers look out for when selecting a game engine. We just don't pick or choose one because it's the best. We select one based on considerations that fit a basic or specific need. It's sort of like the same thing that goes through your head when shopping for a new laptop or workstation. Price or cost, RAM space, CPU speed, GPU power, HDD storage, display screen size or even battery life are some of the major things you would consider. Although some are more pertinent to some people while others are not. For example, I may be the type of guy who likes RAM space, big displays and long battery life. It all boils down to your likes and dislikes even. In the same line, here are a few things that we consider in relation to that.
- Camera View/Game Dimension
- Development Machine Specs
- Platform or Target Hardware
- Programming Language
- Ease of use
- Application Size
- Learning Curve
- Extra Benefits
1. Camera View / Game Dimension
The view or type of dimension of your game could determine the game engine of your choice. Making a 2D game like Mario or a game with an orthographic view could lead you to choose a 2D game engine. The same could be said if your game is in 3D or in perspective view. Don't get me wrong, there have been some awesome 2D games done in 3D engines like Angry Birds 2 and South Park: Stick of Truth, so the rule is not true for all cases since 2D can be done in 3D
But note that doing so, means you would have to ensure the 3D engine has support for some 2D features and optimizations like batching sprites, sprite packers or atlasing and 2D physics. If not it might prove too daunting a task to endeavour. Likewise to some degree, it is possible to develop a 3D game using a 2D engine. A 2D game engine like Game maker can produce 3D games because of its 3D math support but to a certain degree. Note that other 2D engines may be restricted to two dimensional vectors.
Although some engines like Unity and Shiva can provide a combination of features in one full blown package. The key thing to take away is to focus on an engine that provides some core functionality based on your dimension.
2. Game Genre
Making a FPS, platformer or RPG could help you decide what game engine to use. Some games are tailor made to suit a particular kind of genre better than others. Take for example Rocksteady and Netherrealm studios have enjoyed huge success respectively with their games by leveraging the Unreal engine. Also Bioware leveraged the Hero Engine to make the online Star Wars: The Old Republic game.Generally each game engine has its own strengths and weaknesses but some are relatively known to be better at doing more specific things than others. For instance, majority of the games produced with the Unreal Engine are either action adventure, shooter or role playing while majority of Unity games fall within the platformer, puzzle, or runner category.The benefits of using an engine made for a specific purpose could increase productivity and reduce development time or hiccups. There may also be some snippets or templates ready for your use
3. Development Machine Specs
Your development workstation specifications play a pivotal role in selecting a game engine of your choice. A simple thing as the Operating System could reduce your shortlist to about half. Personally I believe Windows has the highest support for game engines and choosing one would present more of a headache than when compared with a Mac or Linux, but that may not be the general case. Also your system requirements may restrict your desired choice because resource requirements vary for each game engine. Naturally a 3D engine would need more RAM and GPU than a 2D engine but even some 3D engines are more resource hungry than others. For example running the Unreal 4 on my current system spec (4GB RAM and 1.65GHz) proves to be less forgiving than Unity 5.
So my advice would be to check out the system requirements for your desired engine. A high end chip set should do the trick for a 2D engine. However for a 3D engine, especially with a monster like Cry Engine, your requirements would go up a great deal. A powerful GPU like an nVidia should provide the goods.
4. Platform or Target Hardware
Deciding your game engine based on platform or target hardware is something you might overlook these days. It's not news that popular engines like Unity and Unreal are steadily increasing their platform count while other engines are going more cross platform but the platform criteria is still a crucial entity. For instance, having a single platform to deploy on can drastically determine your choice of engine. Being able to leverage a game engine that provides some sort of native stability or integration can be highly advantageous. Things like better performance, high throughput (successful launch on platform regardless of fragmentation) and full access to native features (camera, battery or microphone) are things you could benefit from if you selected an engine that is designed efficiently for your platform. A perfect example would be building an HTML app for the Web instead of WebGL because HTML is supported on every old/new/updated browser while WebGL is not.
Also more recently, selecting your game engine based on platform can't be under emphasized especially in cutting edge technology such as VR/AR. Being able to determine an engine that provides less bugs and reduces the likely hood of things breaking would soothe your development process. So selecting a Unity / Unreal engine for VR development would be a no brainer than any other engine due to their experience in VR integration over the past two years, added with a ton of other support materials.
5. Programming Language
Most people don't know this but the option to continue with your favourite or desired language can be a breeze. Any game engine that allows you to leverage a programming language you are already competent or experienced in would be the right one for you. For example, this Unreal GDC video shows that 3 of the most popular fighting games leveraged the Unreal engine.
I believe there could have been a number of things that prompted each studio to select the Unreal engine but I feel the programming language had a chief part to play. Primarily, because each studio would reduce development time and improve overall game performance by re-using proprietary code or libraries which were written in C++.
6. Ease of Use
How to use a game engine can determine whether or not you are willing to stick with an engine. The less complicated the tooling, the less frustrating the development process is for you and also the less likely hood of you getting thrown off by it. The type of tools a game engine possesses could range from how easy it is to locate, manage and edit assets through the asset pipeline. Or how simple and intuitive it is to map out a terrain or even how exciting and hassle free it is to create materials or program without writing code. A good example for this would be this section of the Unreal documentation that shows interface similarities with the Unity engine. Now the documentation does state it's helping Unity developers migrate to the Unreal Engine, but if their interface was apparent why would they go through the stress of connecting the similarities in the interface. Unity evidently has more adopters due to its designer friendly interface; meaning anyone from a newbie to a pro can easily get familiar with it.
Also, having an Editor that allows for time saving tasks is a plus. Being able to preview your game as you build your level, or test out different scenarios by tweaking values in real-time can keep up excitement and increase productivity. I for one cannot pick up any engine that does not give me that peace of mind. Just imagine trying to find the right position to place a UI element without an editor; it's very displeasing. On the flip side of that, if you are a hardcore code centric zealot developer, you may find it easier using game frameworks rather than full blown editors. Code oriented game libraries like Corona SDK and Love2D (for Lua) would give you the desired control and management you crave. I for once used to be like this until I found the love for an editor during bigger projects. But not withstanding my notion, it's a lot easier to re-make simple retro games using code oriented libraries. I can recall trying to make a pong game without physics from scratch solely through code at one point using Unity and realised it wasn't that easy.
So remember that saving yourself some hassle by selecting an engine that allows you to work fast, avoid clunky workflow and not get lost in translation with its interface or API would be highly beneficial. In addition, selecting an engine that presents a UI that resonates with a previously used application can also be a decider. A good example would be adopting Godot because it reproduces a similar interface with that of Adobe Flash (now called Animate CC).
The kind of freedom a game engine gives you can sweeten things a bit more. Every game engine has permissions that need to be adhered to by the developer. With the exception of open source, game engines possess permissions that you as a developer must conform to in-form a licence agreement; which generally entails certain restrictions your game faces during and after production.
These permissions govern the way you behave based on your game. For instance some may have commercial restrictions, revenue limits, closed source codes or even some level of engine limitation. Now there are different types of licences but I'll be focusing on the free ones, because they allow you as a developer to get started and develop games using the tool without any obligation. Open source licenses usually have no commercial boundaries, no revenue thresholds and full source codes. While free tier licences usually have a percentage cut in revenue and one or more restraints. But strangely, the Cry Engine has recently been made completely free with all engine features, free source code and no royalties.
Deciding the one that fits your needs can help you out a lot. I've met some developers that really like open source, not because they want to contribute in any way but because they are greedy. They want their great idea to be a smash hit and then not pay a dime to anyone (Cheap Skates). But jokes apart this section is really important. Most people run away from reading licence agreements, and heck it scares the shit out of me too but reading them and knowing where you stand after publishing your game is very paramount.
8. Application Size
Some of us know that the application size of a game can play a pivotal role especially in emerging markets (like mine). Since consumers in these places are sensitive to application sizes, then it is worth checking out that your shortlisted game engine avoids producing huge package sizes. Being able to choose an engine that removes or strips out unimportant dependencies and libraries from your game is very key. For example an empty Android build of the Unity engine produces approximately 17MB for a 2D game than when compared to 3MB for the Defold engine. Now both can efficiently produce good 2D games but figuring out the one that produces lightweight builds early on can go a long way in targeting emerging markets.
Although a few years back, some developers would throw out lite-versions of their applications to these markets. Usually by optimising most of the assets (graphics and sound) but I doubt whether it's still in vogue today. And besides worrying about your application sizes later on can be detrimental in these markets. So if an empty build of your current game engine gives you a noticeable bloated size, then you will need to replace it with one that can put your application size on a diet.
9. Learning Curve
This is the section that is the most important for beginners or adopters of a new engine. It sort of plays a role in how you learn, grow and master the tool used in developing your game. If learning to develop your game is too difficult then you can become frustrated which evidently halts your progress with the engine. Likewise if learning is smooth and sweet then you are more motivated and excited to continue with your game. One of the easiest ways to learn game development would be to find a tutorial that teaches you something close to the game you have in mind. Or one that forms the building blocks of your desired game. Unity excels at having a plethora of learning related books and videos that are forward compatible. Unlike Unreal which practically made a ton of their scripting based learning content obsolete when they shifted from Unrealscript to C++.
Apart from tutorials, good documentation is also key in providing a good learning experience. A clear and well written manual with properly structured scripting references can assist you greatly as a programmer. Free demos and sample resources can also aid you as a designer to get down quickly and dirty with the engine. Having a very active forum is always a plus and can highly assist you especially in sticky situations. For instance a very knowledgeable or seasoned professional can support a mid level user in responding to a very specific problem. Last but not least, the level of available freedom a game engine provides in terms of language can be the icing on the cake. Unity and Cry Engine offer some degree of language flexibility, with the latter recently adding support for C#.
The most important thing in learning anything is to start small. Picking up small achievable goals and executing it increases your chances of success and motivates you further. I'm guessing your high school teacher didn't start with advanced calculus without teaching you algebra first? So for quick advice, aiming for anything higher than Pong for your first game is just you shooting yourself in the foot.
10. Extra Benefits
Some engines may possess some extra benefits that may be influential in making your decision. Some may have hot swapping features, multi-threading abilities, better graphics capabilities, top notch physics simulations or simply implement a framework you have previously used. A good example would be how the game Ryse: Son of Rome leveraged Cry Engine for its stunning visuals and lifelike animations. Another example would be how Supergiant games have refused to jump the XNA ship and continue to ship titles by using Mono Game which leverages the XNA framework.
So whichever advantage you think may work for you, would be the one you’ choose. You may decide to adopt Lumberyard due to its quick and easy integration of aws cloud services and Twitch. Or you may even decide to go with Game Salad because of its simple and intuitive Drag and Drop interface.
So depending on what you want to create and your resources available, selecting a game engine can be based on two or more combinations of these criteria. For instance if you are an experienced programmer looking to branch into game development then your selection criteria might be based on Programming Language, System Specs and Learning Curve. Or suppose you are a newcomer with no interest in coding, then Ease of Use, Learning Curve and Extra Benefits might form the basis of your selection criteria.
If you feel like I’ve left out a pertinent criterion then leave a comment below