What is a Game Engine?

Readers who prefer to jump right into the process documentation can skim the “Tools of the Trade” section, but game engines and adaptive audio middleware go hand in hand to create an immersive user experience. The Aquatic Museum App is created with both the Unity game engine and FMOD. Although you can use FMOD for other software projects (as it is used here on this website), its main purpose lies in the flexibility it offers when working with game engines.

Game Engine

Today, most games (from indie to AAA) are created using software called “game engines”. They provide many essential features found in most games out-of-the-box and often require less coding:

  • Graphics
  • Physics
  • Input
  • Sound
  • Networking
  • Artificial Intelligence

Good game engines and most non-trivial games still require and rely on complex coding options and offer maximum flexibility.

Creating a Sphere in a Game Engine

Versus Creating a Sphere from Code

Drawing a sphere with C++ code while still cheating a little and using the WebGL Graphics Library:

#include "MyOpenGLWindow.h"

class Vec3 {
public:
	union {
		struct{
			float x, y, z;
		};
		float data[3];
	};

	Vec3() {}

	Vec3(float x_, float y_, float z_) {
		x = x_;
		y = y_;
		z = z_;
	}

	void set(float x_, float y_, float z_) {
		x = x_;
		y = y_;
		z = z_;
	}

	Vec3 operator*(const Vec3& r) const { return Vec3(x * r.x, y * r.y, z * r.z); }

	Vec3 operator+(float s) const { return Vec3(x + s, y + s, z + s); }
	Vec3 operator-(float s) const { return Vec3(x - s, y - s, z - s); }
	Vec3 operator*(float s) const { return Vec3(x * s, y * s, z * s); }
	Vec3 operator/(float s) const { return Vec3(x / s, y / s, z / s); }
};

// etc. + 300 LINES

Supported Platforms

All developments made in Unity can potentially run on all the following platforms, ranging from PC, Mac, and Linux to game consoles (PlayStation, Xbox, etc.) and mobile devices. I say “potentially” because most of the time, platform-specific development is required, which can amount to substantial investments in development efforts.

alt

Types of Game Engines

There are many, but only the 3 most famous are linked here. They are also used extensively for VR projects, installations, and animation films.

Unity

Unity case studies:

alt

Unreal

Games using the Unreal engine:

alt

Godot

Godot is completely free and open-source under MIT license. “No strings attached, no royalties, nothing. Your game is yours, down to the last line of engine code.

alt

Godot hasn’t any AAA games to show for (yet) but becomes more and more popular:

alt

Game Jams Are the Best Way to Learn

One of the most famous game jams is globalgamejam.org, which takes place every year at different locations around the world. Participants are given a main theme (e.g., “Waves” or “Repair me!”), and multidisciplinary teams have 48 hours to build a complete game and upload it. In January 2020, there were 934 locations in 118 countries, and teams created 9,601 games in one weekend.

Musicians are always in high demand, and those with minimal coding skills and knowledge about game audio engines even more so.

Global game jams take place in January, and registration for the Netherlands can be found on this website: globalgamejam.nl.

48 Hours to Finish a Game

Here is one of the sessions for which I did the audio.

Use a microphone-enabled device to sing the same note that the enemies are producing to destroy them with a beam of sound. Uses FFT to calculate the pitch of the singer’s voice. We integrated the Google Cardboard API to allow the player to play the game without using any buttons. It uses pitch detection to destroy specific enemies. Works on windows and mac. We tested it on iOS and it works pretty well but the enemy sound are not working. The music works fine though. (Global Game Jam Luxembourg 2017)

soundWraiths.png