I’m willing to write about game development for some time already, and this day has finally arrived! In a series of don’t-known-how-many posts I will introduce some basic concepts of game development and game engines, written in a concise manner.
It’s like the “engine” of a vehicle. This is the “core” of a game, with anything necessary for a game to run, like rendering, sound, user input, animations, physics…
Not all game engines have this specific set of features, and some of them do have a bigger list of useful components to make games, like artificial intelligence, networking or scripting, for example.
In essence, game engines are used to develop new games, ease the reuse of code and simplify the deployment on another platforms.
But a game do not need to be developed only using a triple-A game engine. You can make your own game engine, from scratch, using the programming language you’re familiar with, and the help of some libraries and/or frameworks.
Here is a list of some game engines, libraries and frameworks. This is far from the entire plethora of options we have, but can be a good start to understand how they work and how to get started on the game development world.
A multiplatform proprietary game engine. Can be used to create 2D, 3D, VR, AR, simulations… Used in other areas, like construction and film (see The Lion King).
It is written in C++, but uses C# to create games. You do not need to to buy a licence if your earnings are less than 100k USD.
An interesting feature is the concept of Prefabs, a special type of component where you can save a fully configured GameObjectin the project as a reusable asset (and buy/sell them in the Asset Store).
The engine is written in C++, and this is the programming language you will use to develop your games. Has a monthly subscription model (with 5% royalty on gross revenues from any release game), were developers can access the full version of the engine, including the source code.
A cross-platform free and open-source game engine. It’s written in C++, and you can create 2D and 3D games using C++, C# and any other language with GDNative bindings, like Rust. The engine also includes its own scripting language, GDScript, and its own visual programmng language, VisualScript.
Cross-platform software development library written in C++ with bindings for a lot of languages (C, Go, Python, Rust, …). Provides a simple interface to various components, and is composed of five modules: system, window, graphics, audio and network.
Dream of every indie developer: make its own game engine on top of SDL.
Cross-platform software development library written in C, works natively with C++ and there are bindings for a lot of languages (Go, Lua, Python, Rust, …).
Works providing low level access to audio, keyboard, mouse, joystick and graphics hardware. Also provides some more functions through a few separate official libraries, like SDL_image, SDL_ttf and SDL_mixer…).
Cross-platform software development library written in Python, build on top of SDL, abstracting the most common functions, allowing the use of Python to structure the game.
Has some features that are not present on SDL itself, like vector math, collision detection, pixel-array manipulation, and more.
You can make your games using virtually any programming language, library or framework. There are so many - specific and general purpose - game engines than the ones I’ve listed here. Below is a list of some of them I personally think that are interesting:
Now you know something about game engines and what is used to create games, I will show you in the next articles some basic concepts of a game, including some code in pygame (maybe something in SDL as well). Here is a list of what I’m planning to talk about:
- game loop and user input
- scenes, layers and parallax
- something else?
If you have a comment, correction or suggestion about this article, feel free to leave a word ;)