(7/8/2013 - This Unit is still a work-in-progress - once the rest of the Units are finished we can paint a better picture of things you can approach going forward)


This course was meant to give you a grand tour of the important bits of game engine development.

There's a whole lot more to do, really it's endless. It's important that once you are at a point where you can start writing game code that you evaluate your requirements and priorities. What will get you to demonstrate your game's key features the soonest? What will speed up your iteration? What do you need to make your game more fun?

The most important question, which we often don't get to ask as professional developers, is what will you have the most fun doing?

Important Stuff


Performance issues? Memory issues?

Really dig down, don't assume anything

Debug systems

Personal favorite: a run-time variable watch (should be easy in HTML5/JS)

Debug camera

Invincibility mode and other cheats

More robust Logging systems


can you solve the problem a different way

can you do any preprocessing (building more sprite sheets, minifying your code)

are you using an API wrong

are you be more efficient (level of detail, trivial rejections)

HTML5 specific ways?

Extending the Engine's Features

Special Effects


Lighting & Shadows

Game Math

More interpolators



2D physics with Box2D


Behaviors / State machines



Pretty simple in 2D

Base camera features should be in the engine

Advanced camera behavior should be implemented as a Gameplay level system

Extending Gameplay Systems

Useful Components

  • Fader (changes the alpha over time)
  • Scaling (changes the scale over time - use an interpolator for best effect)
  • Slow (changes the object's velocity, restores it when removed)
  • Poisoned (decreases health a bit each frame, attaches a visual effect to the object)
  • Mover (has velocity and updates position)
  • Shooter (creates a projectile whenever fired)

Level Data

Menus, HUD, UI

Online systems

Server features:

  • Player profiles
  • Achievements
  • leaderboards
  • etc


  • Asychronous vs. real-time.
  • HTTP based vs. Socket based


hosting your game on a server, such as Heroku

publishing to a market, such as Chrome Market

Going mobile