Overview


This unit itself is just an overview. We'll try to paint a high level picture of what a data-drive game engine looks like, and draw out the roadmap for the entire class.

Here's a quote from a colleague I heard a long time ago - "Game development is a bunch of engineers coding systems for what they're designed to do just to make then do what they weren't designed to do when designers change their minds"

My friend was being facetious, but the truth in his message is that building a game engine is an epic battle of fidelity and features against iteration, deadlines and other constraints.

Our goal here is to try craft an engine with a data-driven architecture, so that it provides a core foundation for the game(s) we are planning make along with room to adjust course. We really want to build up the systems in a way such that they are data driven enough to help support quick iteration of gameplay. Do we need to be a hard-ass about our structure? No, we just need to do our best to create natural boundaries and focus on workflow rather than getting caught up in over-engineering a project.

Purposes/Benefits of a data-drive Game Engine

Web-based Game Development

Web-based game development is very different than industry standard game development.

We're going to be using Web technology, but sticking to more industry standard patterns because the purpose of this class is to focus on game development and we're only using HTML5 and JavaScript as a vehicle to do so.

Some questions you'll still need to ask regardlessly:


Recommended Reading on Data-Driven Engine Design


Dan Cook's excellent blog - Managing game design risk: Part II - Data Driven Development

Gamasutra article - GDC: God of War: How the Left and Right Brain Learned to Love One Another


General Breakdown of the Key Services of an Interactive Real-time Simulation


To build a data-driven game engine, we have to breakdown all the complex interactions of systems that get tangled together. There are a lot of problems to solve, so it's best if we divide the issues up and deal with them independently.

This is just an overview so you have an idea of what the disection of a general purpose game engine looks like. During this class you will be building many (but not all) of these pieces yourself, pulling them together yourself, making the picture even clearer.

Engine Core

Game Object System

Canvas Management

Asset Management

Scene Management

Camera systems

Sprites and Animation

Audio System

Input

Physics system

Networking

Lots others...