How to start game development: Game Engines I

In my last article I talked about modding, now it’s time to talk about engines and editors with which you can create games. You could also do this with modding tools, but most (if not all) of them require the original game to launch the mod also it is not allowed to monetize the mod. The engine editors got much more features over the years and are way more user friendly than in the past. There is only little difference between them and bigger modding tools. Some tools even allow to create games without writing one line of code. In this article, I’ll introduce you to some of the well known – and for beginners easier to use – engines. In the 2. part I’ll give some tips for the first steps in working with an engine.

 

What’s an engine

Basically there are several components that are part of an engine. First of all there is an editor, that helps you creating games, it is often mistaken with the engine. The second big part is the engine itself, a large scale software containing all modules that are needed to run and show the game: graphics and sound output, process user input (mouse, keyboard, controller, etc.), load and save files/data; but also specific elements like physics simulation, AI and multiplayer. Using an engine, you could completely focus on gameplay logic, game and level design, without bothering how o render a 3D model or how to get the player character into the game of the other players in multiplayer games (if you are really into game development, you should sooner or later dig into all the parts of an engine, you should now at least the basics of them and how they work in theory).
The engine editor keeps you from dealing with all the sub systems and modules directly. You don’t have to put all the parts together by writing lots of code. The editor is built on top of the modules and allows to create game worlds, combine assets and manipulate them. Combined assets are called game objects, these can be placed in the game world and brought to life by using animations and writing scripts.

 

Game development per mouse click

Like the games itself, the game development tools were improved over the last 20 years. Creating games is easier than never before. There are even tools that allow you to create games wit ha few mouse clicks. Those tools are mostly restricted to simple 2D games, due to their simpler approach. There is no need for rendering 3D models, also there is often no physics simulation needed or at least it is way simpler than physics in a 3D space. Also the game mechanics are not that sophisticated and often limited to the essential parts. On the other side, those tools are easy to use and fast to learn. They are mostly used to create Jump ‘n’ Run- or RPG title in the style of the Super Nintendo era.

One of the most familiar tools is RPG-Maker. It’s popularity is unbroken for more than 20 years. RPG-Maker games have the typical SNES look and feel, that many Indies try to copy nowadays. Another reason for its popularity is the unofficial English (and German) translation of RPG-Maker 2000. Back then, there were only licenses for Japan and the translation got (illegally) distributed over the internet. At this theme there were almost no free to use game engines and frameworks, the tools were not that user friendly and documentation and tutorials were rare. For several years now, RPG-Maker is available on Steam, also it is more than a mouse click editor now. The Maker is not that cheep but it is often par of Steam sales.

 

Engines

The term “engine” was formed in the middle of the 90ies. The first representatives that also got licensed, were Doom Engine, Source Engine and Unreal Engine. Those got improved and developed further and are still available and very popular. While licenses for private projects often were free, commercial licenses were quite expensive and only affordable by bigger developers. There were 2 big factors that caused a change. Professional engines were reserved for companies, for small teams or single developers there was only the possibility to write an own engine or to do the game as a code only project or using frameworks. The indie scene got bigger over the last few years and got more and more media attention. That’s where the company named Unity started to act. With their Unity3D engine, they targeted indie developers, the license cost were affordable also for smaller teams and for non commercial projects there was a feature limited version of the engine. Due to the simple and intuitive approach of the editor, the popularity rapidly started to grow.

Over the years, game development got accepted by the public, growing communities, courses at universities and own academies added to the fact, that more and more people wanted to make their own games. The next big step was done with the release of Unreal Engine 4. Unity3D grew from version to version, popularity and the community did too. Slowly but inevitably Unity became a serious competitor. Other engines still had huge license costs, some of the didn’t even had free licenses. Unreal Engine 4 launched with a completely new approach. A subscription of 20$ per month grants access to the full version of Unreal Engine including all updates during the subscription period. You could even pay the 20$ once and then install the actual version and subscribe again later to get all the updates. For commercial games there was still an turnover related fee, but no need for huge license costs. Unity reacted quickly and shut down the free version of Unity3D. The full version of Unity3D is now usable for free, (turnover related) fees are charged for released games, furthermore there is a subscription model for advanced services like support, asset store and cloud services. As a reaction to that, Unreal also changed the subscription subject from the engine itself to advanced services. Other engines also switched their business plans and now the biggest and most popular engines are free to use, other engines didn’t go that way, they still could be licensed from bigger companies (after a request) e.g. Frostbite Engine or – like id Tech – don’t offer any licenses anymore.

Unity3D

Unity3D is popular especially among indies, students and hobby developers. In the beginning it got criticized because of the low graphics quality but nowadays it could keep up with other engines. Another key features is the multi platform support, there is almost no device that is not supported, doesn’t matter if PC, consoles, mobile or other platforms. Furthermore Unity supports a wide range of different file formats, so you have the choice of which content creation tools (image creation, 3D modelling, sound composition, etc.) you want to use. Getting started with unity is quite simple and the documentation is large, the community also big and helpful and there are dozens of tutorials from beginner level to advanced.
Unity offers JavaScript and C# as scripting language. That’s interesting for beginner with programming experience, because they don’t have to learn and additional scripting language e.g. LUA. Also for programming beginners it is quite easy as there a lots of resources for JavaScript and C# and bot hare easier to learn than C++. Especially C# is quite interesting, as almost the whole .Net library is available. In addition object oriented programming makes it easier and more clearly to do complex projects and offers better performance. I recommend especially for beginners to use C#, although many tutorials use JavaScript. Also JavaScript programmers should try C# and OOP, especially for bigger projects. Unity allows to create editor plugins and extension, these can only be done in C#.
Another strength of Unity is, how game objects are structured. Unity uses an entity component model, game objects are a combination of single components. A tank for example consists of a graphical component for how it looks, a vehicle component for movement behavior an controls, a weapon component for the canon, a physics component for collision and gravity, etc. Especially older engines still use a hierarchical approach based on derivation. Starting from a basic object, child objects get derived with specific behavior. E.g. a child object of a graphical element gets extended with physical attributes, whose child gets attributes for driving (speed, acceleration, etc.), whose children have special attributes for land based,  air base and water based vehicles.

Unreal Engine

Unreal Engine is one of the most popular engine, on the one handy also professional developer use the engine for their games, on the other hand it is also available for hobby and indie developer. It only uses C++ as scripting language and the API is also a bit more complex than that of Unity. Without some experience its a bit more difficult to start with Unreal Engine. But Unreal Engine 4 has a special feature especially for beginners and non-programmers. Gameplay logic can be implemented via “visual scripting”. Single nodes represent the attributes of game objects, those got connected and their states change under certain conditions. A similar concept is used for example by AutoDesk Maya to script animations. In principle this concept is easy and fast to learn and simple game mechanics can be easily done, but for complex mechanics the graph can get very big and extremely confusing. Also looking for errors is a bit more difficult and it is not as powerful as coding.
Unreal Engine still uses an hierarchical structure based on derivation, to cope with Unity’s flexibility, Unreal implemented class extensions, a system similar to components.
The Unreal community was already quite big during the times of Unreal Engine 3. Unreal offered the Unreal Development Kit (UDK), a free version of the engine. Nowadays the community is even bigger, due to the attractive license model (5% of the monthly turnover starting at a turnover of 3000$).

CryEngine

Who doesn’t know Crysis, the game that was not playable on max settings (due to hardware limitation) at the time of its release. CryEngine is a mighty tool. Since CryTek isn’t doing well in the games business anymore, the German developer’s focus lies on its engine and to get it into markets beside game development. Of course the engine offers astonishing graphics, but you need a proper development PC for that. The tools offer vast features, but at they are often quite complex. CryEngine is, compared to others, not that easy for beginner. The learning curve is steep and although it is also for free now, the community isn’t that big as others. CryEngine shouldn’t be the first choice for beginners. A further weakness: CryEngine is good for making shooters, it’s the main purpose, other genres need more effort. A shooter is done quickly, due to the already existing game objects and scripts (enemy AI, weapons, vehicles, etc.). Further than that everything has to be developed on one’s self. Nowadays CryEngine is also used for more than shooters, but its strength lies somewhere else. A big plus is the licensing model, as there is no fee for the engine itself. It’s completely for free (even no turnover related fees) including source code and all features. You only have to spend money if you want to have support, which is, according to CryTek, quite excellent.

XNA Game Studio/MonoGame/SharpDX/Xenko

XNA is a game development framework from Microsoft, allowing development for PC and for Xbox. XNA is a .Net API that offer functions especially needed for game development (e.g. simple creation of 2D and 3D content and rendering). Under the hood it uses C++ and DirectX.  The XNA Game Studio as a Visual Studio extension that offers game project templates. Those projects already include some setup code for example creating a window. These process is quite complicated and a lot of effort, which hasn’t to be done on one’s own. In January 2013 Microsoft announced to not continue the development of XNA. That’s why it can’t be used for newer platforms (Xbox one, Windows 8 and newer. Windows Phone 8 and newer). But you can still download XNA but you need a PC running Windows 7 and a proper version of Visual Studio. For those who will have such a setup and are interested in the programming part of game development, XNA is still a good hint as the internet is full of tutorials and sources.
Even if there is no official successor of XNA, there are at least unofficial ones. MonoGame counts as direct successor, it’s an open source framework, based on XNA 4.0. It offers the same API as XNA and still is in active development/improvement and also offers different target platform. As a wrapper for DirectX it uses SharpDX. SharpDX is located an layer below and allows developing DirectX applications in C#. Older versions contain, similar to MonoGame, utility functions (the so called Toolkit), but those got removed. The developers (a team of 1-2 guys) wanted SharpDX to be just a wrapper for the DirectX API. The effort for improving the Toolkit was to high, as there were almost no users. A few months ago, the forum got closed, because the only one answering questions was the main developer himself. SharpDX is everything else then for beginners and is only suitable for special purposes. For C# developers interested in DirectX it is easier to go with C++ and directly use SharpDX, as there are way more tutorials, documentation and samples. Without knowledge of DirectX it is quite hard to learn SharpDX as there is no active source anymore. If you are still interested in game development using C#, Xenko could be something for you. Xenko is, beside MonoGame, the second project using SharpDX. Starting under the name ‘Paradox’ it got developed from the SharpDX developer himself. The engine got adapted from a Japanese company (the employer of the SharpDX dev). The beta version is for free (incl. source code) gets regular updates. There is no official release yet, but it will have a license model. The beta version will remain free. Regarding features and documentation, Xenko cant cope with Unity yet, but other than all the other big engines, Xenko allows developing of casino games and other games of chance. Unity offers a quite expensive gambling license, all the others forbid it in general.

Frameworks

The following engines don’t offer a complete solution, they only contain source code, tools and editors had to be developed on one’s own. Or games are done directly via code. Frameworks don’t offer a WYSIWYG experience. You have to compile and run the code to see the outcome. Those solutions are actually not for programming beginners but for advanced programmers that want to learn more about game development or that are interested in engine development. By using frameworks you could implement single subsystems without need of implementing all the others; e.g. if you are interested in physics or AI, but you don’t want to write your own render system. There are even frameworks for people using programming languages that are not that common in game development (Java, Python, …). Disadvantage of those frameworks: You have to keep the high programming effort in mind if you choose a framework. It’s hard to create game worlds, as you couldn’t place objects with you mouse. You have to compile the code yourself and include it in the IDE of your choice. This could be quite complicated on the newest OS and IDE versions. It often takes some time till the code gets updated. Also those frameworks often have bugs and don’t run well in all environments. It often takes a long time till such problems get fixed as they are open source projects and are often developed by a few people. There is usually only support via small communities or the developer forum.

Some well known representatives:

 

Conclusion

This is just the tip of the engine iceberg. This list is massive, there are engines for different purposes, target platforms and programming and scripting languages. Most of the listed engines, especially the open source ones, are just frameworks without an editor. But even the all in one solutions differ a lot in the case of features and documentation. The engines I talked about are the most common ones, with better documentation and of course that ones that are free to use for non commercial projects. This is important for beginners but everyone hast to decide for himself which engine to choose.

In the next article, I’ll give some useful tips and tricks for the first steps using an engine.

Leave a Reply

Your email address will not be published. Required fields are marked *