================
== quaternion ==
================

Game Development: engines, libraries and frameworks

gamedev

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.

Game engine? I’ve heard of

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.

Engines, libraries and 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.

Unity

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).

Unity editor
Unity editor

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 GameObject in the project as a reusable asset (and buy/sell them in the Asset Store).

Some games made in Unity: Among Us, Cuphead.

Unreal Engine

Multiplatform commercial game engine that can be used to create 2D, 3D, VR, AR and simulations. Its used in other areas, like in the film industry (examples include The Mandalorian and Westworld).

Unreal Engine editor
Unreal Engine editor

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.

Besides C++, you can make a game using Blueprints, a visual scripting language. You can buy and sell assets on the Unreal Engine Marketplace.

fail
me trying to use Blueprints for the first time

Some games made in Unreal Engine: Kingdom Hearts III, Goat Simulator, Mortal Kombat X/11, Tetris Effect.

Godot

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.

Godot editor
Godot editor

Games made using Godot: ΔV: Rings of Saturn, TailQuest: Defense.

SFML

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.

ShipShift
ShipShift, game made for Ludum Dare 35

Some games made in SFML can be found here and here.

SDL

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, …).

NightFall
Making games is fun

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…).

It is used by video playback software, emulators and games, including some from Valve and Humble Bundle.

Some games made with SDL: Angry Birds, 0 A.D., Factorio, VVVVVV, FTL: Faster Than Light, Unreal Tournament 2004 (Linux port only).

pygame

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.

Some games made in pygame: Frets Of Fire, Super Potato Bruh.

other

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:

So… that’s it?

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
  • sprites
  • physics
  • sound
  • something else?

Stay tuned!

If you have a comment, correction or suggestion about this article, drop me a message on ~mdkcore/qtrnn.io@lists.sr.ht