Third-party tools

I am already using a total of 7 third-party tools in my game. I wish to list them and talk a little bit about their usefulness. All of these software are free and open-source, with very permissive licences that include commercial applications. All licences are included in the game’s source code. I also intend to make my game’s source code freely available, and to give permission to anyone that can compile it to play it for free.

1- SDL The backbone of this project. A library that gives low-level access to audio, graphics, inputs… It is used by many well-known independent Developers to create games.

2- Entityx When first trying to program my game, I thought I would use only C. After a while of writing some basic functions and structures, I realized Object-Oriented Programming (OOP) fit my thinking more. Early on I switched to C++ and started creating more and more objects. This is all well and good, until I stumbled upon a problem that was rather hard to solve using OOP and inheritance. It is then that I discovered the Entity-Component-System (ECS) design pattern. Instead of creating a hierarchy of parent and children classes that inherit from one another, ECS enables you to create so-called entities, that can have any number of independent components, all controlled by their own systems. For example, in a video game world, some boxes might have the “Physics” and “Sound” components, while walls might have no need of the “Physics” component.

3- PhysicsFS Enables to read/write to .zip archives as if they were files on your system.

4- lodePNG A PNG image decoder and encode.

5- TinyXML2 Write/read to XML files. Because parsing is not so simple! I had written a simple .txt files parser, but the more I worked on it, the more complicated it became. I thought I needed something more standard, like JSON or XML.

6- TinyMT Stands for Tiny Mersenne Twister. Pseudo-Random Number generator. Implemented by the creators/discoverers of the Mersenne Twister algorithm, Makoto Matsumoto and Takuji Nishimura. Has a “very short period”.

7- STB Libraries of basic utility functions in single file headers. I use only stp_sprintf for now cause it is faster than sprintf.

Much thanks to the creators of these libraries.

Leave a comment