Programming video games: the most popular free tools

Do you want to develop video games using free tools? In this article we will review some of the most popular engines and see their pros and cons, we will recommend frameworks and libraries if you prefer to use your own development environment and finally we will suggest some very useful resources.

What is a game engine and why use one?

Let’s start with the basics: the engine conceptually is the software needed for a game to run. It typically includes a 2D/3D renderer, a physics engine, audio management, scripting, animation, AI, networking, scene-graphics and other components. All these features are already present and available to us without having to implement them from scratch, giving us the opportunity to concentrate on the game content (graphics, mechanics, level-design) and saving us a lot of time.

Let’s now take a look at the most popular free engines at the moment and examples of games developed with them. For each engine, we will give a brief introduction, see the scripting languages they use and, finally, a summary of pros and cons. Keep in mind, however, that this is a fast-moving world and things written here may change in the future.

Unreal engine (UE)

This engine produced by Epic Games was born in 1998 to produce the famous FPS Unreal: for this reason, it is strongly focused on the development of 3D games with a set of tools for the creation of out of the box shooters. The engine allows us to export the game to different platforms, PC, console, mobile and VR, and also allows development on Linux (although it is necessary to compile it from source). Unreal is not only used for video game development, but has also caught on in alternative industries, such as film and TV, demonstrating the graphics potential that this engine can provide.

Some titles released using this engine are Gears Of War series, Mass Effect series, Bioshock, Batman Arkham Asylum, Abzu, Final Fantasy VII remake.

UE presents itself with a fairly complicated interface, with many buttons and an endless amount of menus upon menus, probably more manageable by a 3D modeller or, in general, by a person with experience in the world of graphics software rather than by a programmer accustomed to the IDE of choice.

Unreal engine screenshot

The scripting language is C++, but it is also possible to use Blueprint Visual Scripting, a visual scripting system based on nodes that can be connected by an interface. Beware, however: this system allows us to avoid writing in C++, but does not preclude a minimum knowledge of logic needed to write algorithms.

The engine is released free of charge with the possibility of accessing the source code upon registration on the site. It can be used to develop and explore for free, and in the case of release there is no payment as long as the gross earnings do not exceed $1000000, after which 5% of the revenue must be paid (more information here).

Pros:

Cons:

Unity

Published in its first version in 2005 as an engine for mac Os X with the idea of democratising game development by making it available and accessible to more developers. Unity quickly expanded the supported platforms, today covering mobile both iOS and Android (including TV counterparts), web via WebGL, desktops, consoles up to the latest generation and VR/AR (covering the vast majority of applications on the market). With its free distribution policy, Unity Engine is considered by many to be responsible for the wave of indie games in recent years, opening the doors of this industry to small teams with scarce economic resources and allowing millions of developers who, as a hobby or vocation, have decided to pursue this type of career to enter the video game market.

Among the titles released with this engine are Fall Guys, Genshin Impact, Nascar Heat 4, Untitled Goose Game, Subnautica series, Risk of Rain 2, Ori and the Blind Forest, Ori and The Will of the Wisps.

Unity presents itself with a relatively simple interface, fully customisable according to the needs of the moment, as with Unreal, but not entirely intuitive due to the overwhelming amount of functionality.

Unity screenshot

Guiding us through this sea of tools, we find exceptional documentation with plenty of step-by-step tutorials and demos that can be opened in the editor, allowing us to study the structure and play with taking apart and reassembling the various components. The scripting language is C#, previously also supported were Boo, removed in Unity5, and UnityScript, a version of JavaScript also removed in 2017 with the release of Unity 2017.1.

If all that wasn’t enough, the huge community that has been built up over the years has created just as much material to help us get our hands dirty, very often sharing not only knowledge of the engine, but also their own experience in the gaming world, from technical challenges, design, to publishing.

The engine is released free of charge and allows the publication and sale of developed products without paying anything, up to the gain in the last 12 months of $100,000 between sales, advertising and funding. Once this quota is exceeded, one has to upgrade one’s license; for reference, to date a pro license (for a single person) costs $150 per month.

Pros:

Cons:

Godot

Developed by two Argentinean developers for several Latin American companies, Godot was released, completely open source, under an MIT licence in 2014. It allows 2D and 3D applications for PC, mobile and web to be developed on Linux, BSDs, macOS and Windows.

Over the past few years, the engine has benefited from large donations from industry bigwigs, enabling its technological advancement and growth: to name a few, $20K from Mozilla Open Source Support (MOSS) to add support for WebSockets, WebAssembly and WebGL 2.0, $24K from Microsoft to add C# as a scripting language, $250K from Epic Games to improve graphics rendering, and most recently $120K from Kefir.

Games released with Godot include Bottomless, Hive Time, and Guardian Sphere.

Godot screenshot

The first major difference compared to previous engines is immediately noticeable at startup: this one is so lightweight that it is also distributed as a standalone executable that does not need to be installed. This allows those without a particularly high-performance computer to work without having to wait for endless loading times (Unity and Unreal projects tend to get heavy very quickly).

Another distinguishing feature of this engine is a node-based architecture. Nodes are organised within ‘scenes’, which can be instantiated, reused, inherited and grouped; moreover, project resources, whether assets or scripts, are included as part of the filesystem instead of loading them into a database, making the VCS engine VCS friendly. The default scripting language is GDScript, a proprietary language very similar to Python, but VisualScript, C# and C++ are also supported.

The engine is completely open source, released under the MIT licence, and applications created with it can be distributed without any constraints.

Pros:

Cons:

Other free engines

Unreal engine, Unity and Godot are just three of the potential candidates when choosing an engine to use. Other possible free candidates are Valve’s Source, Crytek’s Cryengine and Amazon’s Lumberyard, the latter being interesting for its integrations with AWS and Twitch. Also worth mentioning is Pico-8, a 16-bit ‘fantasy’ console that allows users to create games in Lua and share them with other users. For the uninitiated, the first version of Celeste was created on this console and kick-started the development of the successful game.

Frameworks and Libraries

But if we wanted to avoid complicated GUIs and remain within the safety of our favourite IDE, what options do we have? We list here some libraries on which we can build our game without having to start from scratch.

Depending on the language we want to use, we find libraries that provide us with a documented base from which to start, often with examples and demos created by other users; a further advantage in taking this route is that we can easily access the sources and, if necessary, add the functionality we need with not too much effort.

Some of these libraries are Pygames, Arcade and Pyxel for Python, Pixel and Ebiten for Go (watch our video on how to develop video games in Go), Libgdx, FXGL and Lwjgl for Java, Phaser html5. Rust is also starting to reap its own rewards in the theme, if you are interested we recommend following https://gamedev.rs.

Outline tools

Well, we have a first prototype game and an implementation of the game loop, now we would like to integrate graphics and music to make the game more appealing, as we are not particularly fond of the green rectangle we are using as the hero in our platformer.

Useful resources

Since we don’t all have the artistic vocation for drawing or music, or simply don’t have the time to devote to it, are there any free alternatives to making everything at home?

OpenGameArt and Itchio are a great place to start looking for something suitable for our product, plus they are useful platforms to get in touch with other creators and maybe find someone to collaborate with!

Conclusion

At this point you have a general overview of the accessible tools to create your own game from scratch, we hope this article has piqued your interest and inspired you to dive into this fantastic world.

What will be your first steps? Are you going to start with Unity by following some tutorials or are you going to throw yourself headlong into the code using Pygames?

Would you like to join Develer’s team?

Look who we’re looking for

Work with us