... and why is this book so important?
What’s Game Engine Architecture?
... and why is this book so important?
For anyone that wants to learn more about game development, AR/VR development, or computer science in general; this book is your Bible. I’m reading this book and learning Unity’s game engine at the same time. Unity is a very powerful game engine and has pretty much everything you need to build awesome software without having to know the details of the game engine itself. They provide a variety of tutorials and robust documentation. However, I still believe that you need to understand how things work “under the hood” to get the most out of the engine.
My goal is to build a reference guide to better correlate Unity’s game engine with the topics of this book.
Before I get started, here’s a link to the book’s website: http://gameenginebook.com
This is the kind of book we wanted when we were getting started, and we think it will prove very instructive to people just starting out as well as those with experience who would like some exposure to the larger context.xvJust what we wanted
Chapter 1 Overview
The introduction of this book really is broken up into two parts:
- History and Definitions (which is what I’ll review now)
- Runtime Engine Architecture (there’s a lot of content here, so I’m going to put this in the next post)
Let’s start with the Game Engine…
What is a game engine (section 1.3)?
Game engines were designed as a separation between core software components (ie. graphics, physics, audio…) and the actual game play (ie. AI, art assets…). Basically, a game engine is the toolbox you need to build the actual game. Back in the mid-1990’s, the tools needed were still being written and the idea of separating the tools from the game was still a new concept.
Game engines usually have the following components or tools:
- Rendering Engine
- Collision/Physics Engine
- Animation System
- Audio System
- Game World Object Model
- Artificial Intelligence (AI)
What is a Video Game (section 1.2)? (aka Soft Real-Time Interactive Agent-Based Computer Simulation)
So here’s the technical breakdown of what a Video Game is. According to computer scientists, videos games are:
Soft Real-Time Interactive Agent-Based Computer Simulations.
The author further defines this by breaking the phrase down and defining each individually (paraphrased):
- Simulations: The imitation of a situation or process
- Temporal Simulations is when the state of the environment changes over time.
- Interactive: The game must respond to unpredictable inputs from a human player.
- Real-Time: Is happening now
- Agent-Based: When a number of distinct entities, known as “agents”, interact. These agents can be vehicles, characters, fireballs, powerdots…
- Soft: This one took some explaining. Every real-time system has a concept of a deadline. These deadlines can be anything from the fact that the game needs to render at 60 frames/second or the audio library needs to be called at least 1/60 seconds to prevent glitches. So a “soft” real-time system is one where if it missed its deadlines, the results are not catastrophic. All video games are soft real-time systems. If the frame fails to render, the human player won’t die. Compare this to a hard real-time system – like flying a helicopter, missing a deadline in this system would cause severe injury or death.
Game Engines for different genres of video games (section 1.4).
Game engines are typically genre specific – meaning that you want to use a game engine that tuned for the type of game you’re making. In this case, I want to focus my posts on Unity, which supports most of the genres very well. But for the sake of thoroughness, I’ve included the lists of game genres, as well as, game engines. I would recommend reading this section if you’re trying to figure out which engine you want to you use.
- First Person Shooters (FPS)
- Quake, Half-Life, Counter-Strike
- Platformers and Third Person Games
- Donkey Kong, Super Mario Bros.
- Fighting Games
- Mike Tyson Punch Out, Fight Night
- Racing Games
- Mario Cart, Gran Turismo
- Real-Time Strategy (RTS)
- Age of Empires, Starcraft
- Massively Multiplayer Online Games (MMOG)
- Guild Wars, World of Warcraft
- Player-Authored Content
- Role Playing Games (RPG)
- God Games
- Environmental/Social Simulations
- Puzzle Games
- The Quake Family of Engines for First Person Shooters
- The Unreal Family of Engines for 3D First Person or Third Person Game
- The Half-Life Source Engine
- DICES’s Frostbite
- Sony’s PhyreEngine
- Microsoft’s XNA Game Studio
- Unity – support 2D and 3D games across a wide range of platforms.
- Panda 3D – scripts based engine used for prototyping in Python
- Crystal Space
2D Platforms for non-programmers
- Multimedia Fusion 2
- Game Salad Creator
- Scratch – uses blockly to teach programming concepts