We will be building out our game engine piece by piece. Since the goal is that by the end of the class you will have a fully-functional game engine, each Unit will have a project/homework that will eventually culminate into your final project.
The engine I built for this class was initially inspired by the Quintus HTML5 game engine. I have changed it substantially, mostly to fit my more academic purpose with the classes I teach. Once you finish this class you can continue to build on the engine you've built here, try picking up Quintus and participating in its community, or use any other popular HTML5 game engine such as Impact.js or Crafty.js. The idea here is that you learn the patterns and techniques to hit the ground running on any game engine for any platform.
While I have taught this subject in real-life, this is my first time teaching anything online. Please share your questions as you go, especially letting me know which areas you get confused in. I will do my best to help you as well as adjust the curriculum for future students. Once you've finished the class I would love to hear your feedback on it's structure or flow.
- Unit 0 - Handy set of resources and links
Links for further reading, documentation, and online resources to help make game development easier!
- Unit 1 - Overview of a Data-Driven Game Engine
An introduction in game engine development.
- Unit 2 - HTML5 Development basics
- Unit 3 - Engine Framework
The core of our game engine will provide a heartbeat to the rest of the systems.
- Unit 4 - Classes, Events, and DrawNodes
This one will be tougher in terms of computer-science concepts. We'll build systems to facilitate the creation of new object types and extending their behavior. We'll also talk about events and managing a render heirarchy.
- Unit 5 - Game Objects and Components
Here we finally get to see the reward of our foundation, and use it to build a framework for a modular game object system.
- Unit 6 - Asset Management
Enapsulating asset management so we can store resources - images, audio, data files - that gameplay needs so they're easy to access.
- Unit 7 - Input Management (Work-In-Progress)
We want to abstract away input devices (keyboard, mouse, gamepad) yet have an easy way to tie together input events with gameplay actions.
- Unit 8 - Rendering
Canvas management is where it gets really exciting. Time to start drawing things to the screen. The effort coming up to this Unit will be worth it!
- Unit 9 - Sprites (Work-In-Progress)
It's not enough that we can just draw an image. We need to build our system as to give render properties to a game object, which can manipulated through game logic or animation data.
- Unit 10 - Animation (Work-In-Progress)
Animation data is an extra layer of complexity over our sprites, but feed deeper into our data-driven mantra.
- Unit 11 - Gameplay Systems (Work-In-Progress)
Here we'll write simple versions of systems that most all games need, such as cameras, interpolators and state machines.
- Unit 12 - Final Project (Work-In-Progress)
By now you should have a fully functional and robust game engine ready to be put to use. We'll have some light discussions on what you can do going forward to take your project to the next level!