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
- Genre
- Development Machine Specs
- Platform or Target Hardware
- Programming Language
- Ease of use
- Licensing
- 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++.
So if you are already
proficient in Java then libGDX or jMonkeyEngine would be a wonderful place to
start or PlayCanvas, if you’re a HTML or Javascript guru. But if you're just
starting out, my advice to you would be to learn a programming language first
before attempting game development.
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).
7.
Licensing
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.
Conclusion
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
Hello,
ReplyDeleteThis article is quite helpful in knowing which game engines to opt for with accordance to your upcoming project in Unity Game Engine. Thanks for sharing.
You're welcome. Glad it could help
Delete