Writing a Game Engine – Pt. 0 – Introduction

I’ve decided to try my hand at writing about writing a game engine.  The reason is: I’ve put a lot of time and energy into learning how to write a game from scratch, and I believe I can fill in gaps left by the materials I tried to learn from.

But, before I launch into discussing how to write a game engine (or maybe just to stall for time.. :-D), I’d like to talk to about what an engine is.

What Exactly Is A Game Engine?

To be honest, I’m not sure. Once upon a time, “game engine” used to refer to the guts of a game that made it think. In that sense, the a game engine was just a bunch of logic, math, and programming code. Nowadays, the term “game engine” has expanded to include entire toolkits.

The software kits known as “engines” have all sorts of goodies today that extend far beyond the old-school definition of “game engine,” including (but DEFINITELY not limited to):
* Graphical/node-based editors (tools that allow developers to create games without actually writing code)
* Wizards/helpers to compile the game to run on different platforms (e.g., web, mobile devices, computers, etc.)
* Scripting languages to abstract away computer science/programming details
* Art/graphic design tools
* … and also the ability to create the logic, math, and programming code that old-school “engine” refers to

That Sounds Intimidating; Where Do I Start?

The prospect of making all those tools sure does sound intimidating. That’s why I am only going to talk about the old-school “engine” parts: the programming code and math. (Truth be told; I have never tried to create visual tools or other sweet “new-school” engine parts. Maybe I’ll write about how to make those if I get around to it.)

This series of articles aims to shed some light on the development of Falldown x64. My handmade code is no Unity or Unreal Engine, but it taught me a few things about how those big-time engines might work under the hood. Because sharing is caring, and I care, I will share.

Some preface notes:

  • This article series is geared to be accessible to the near-absolute beginner, yet informative to intermediate/advanced developers.
  • I am relatively new at gamedev myself, so if any experts reading have comments, I’d love to get your input!
  • To any beginners reading this, know that any kind of computer programming, let alone game development, can be insanely difficult. You will feel like you have to learn 10 things at the same time, to accomplish 1 goal. (That feeling is completely valid and correct :-)). Hopefully these articles help with that.
  • This article series will be written using Python code samples because Falldown x64 was written in Python. But I hope to make the code sensible enough to be ported to any language.

Launchpad

  1. The Application Class
  2. Messaging
  3. Game States (the State Pattern) (Coming Soon!)

Leave a Reply