Game Engine: Finally Getting Around To it

Published 2011-08-26 on Farid Zakaria's Blog

XEngine

I've always found game development very interesting, however what interests me most is not the designing and building of an actual game but rather the development of the game engine or underlying framework.

I have fond memories of myself and Hayden Theriault back in first year University talking about how one day we'd like to build a physics engine even!

I always put it off because the learning overhead and sheer scale of building a game engine is enourmous if you start from scratch (not using a base engine or framework such as XNA).

No longer is this the case~! I've finally picked up some books on game engine architecture and going through the textbooks in order to build my own 2D/3D simple game engine; XEngine.

Game Engine Design And Implementation

I went ahead and bought three textbooks on Game Engine Architecture as well as the 'Best of Game Programming Gems'. Out of all the books, by far the best one is written by Alan Thorn aptly named "Game Engine Design and Implementation".

Great textbook on design ALIGN=
This is book is amazing, it's well written, assumes novice knowledge regarding game engine architecture and assumes you have a firm grasp on C++. Not only is the book well written, it even helps take you through the motions of building an introductory 2D/3D game engine. So far the 2D engine is written using SDL.

Following the book and building the engine will help me understand the framework/groundwork needed for a game engine which I can then refine with additional design architecture improvements that I've read else where, such as:

  • Entity Component System
  • Resource Handles rather than Resource Pointers (allows dynamic loading/unloading of resources
  • Data driven design

How Far I am so Far

I'm currently on Chapter 6 (3rd of the book), and have implemented the following basic managers:

  • Error System Manager
  • Resource System Manager
  • Render System Manager (using SDL)
  • Render Object Class
  • Sprite Object Class

The engine is being compiled as a DLL (which was a learning experience itself) and I can currently create a window application and draw sprites.

For those looking for a good Linear Algebra library, I found a great one written by Markus Trenkwalder here.