Week 1

Game Engine Programming


This is CSCI 181G PO, a project-based game engine development course. I say "game", and we'll talk a lot about games, but the general approach can be applied to any interactive, real-time graphical system.

Course Logistics

  • See the class website for the syllabus and stuff
  • /join #csci-181g-po in Slack
  • Be ready to start making games
  • Office hours are TBD
  • Sign up for a tech talk!
  • Form teams

Unit 1

This course is split into two units: 2D games and 3D games. First is 2D games. You're graded based on how many features you complete from a set we agree upon in advance.

Your feature count is the union of your feature count across your two games. Both games must share at least three features (or face a penalty of 1 letter grade).

Grade assignment:

Three or fewer features
Four features
Five features
Six features

These are just suggestions for possible features, but you are encouraged to come up with your own ideas and ask me if they'd be suitable!

  • Four different graphical building blocks (e.g. texture-blitting, polygons, filled polygons, text)
  • Simulate some real-world system (e.g. erosion, fluid dynamics, population dynamics, …)
  • Multiple "windows" or views on the world (e.g. split screen play, mirrors, portals, …)
  • Fancy collision (e.g. slopes, character and terrain shapes that aren't AABB)
  • Rigidbody physics, joints, …
  • Combined sprite and paperdoll animation (animations must be defined in data, not hard coded)
  • In-engine cutscenes (scripted sequences)
  • Quad-per-sprite rendering instead of framebuffer graphics
  • Rewinding/undo
  • Save/load progress
  • Loading game rules or world from data files
  • In-engine game editing tools (e.g. level editors)
  • Sub-games/turn taking/menus/modal UI
  • Infinite tile map or other procedural content generation
  • A million objects live at once
  • Destructible/modifiable terrain
  • Complex level layout/reactive spawning/time synchronized gameplay
  • Music/sfx, situational/responsive music; music should loop well. Consider the rodio or CPAL crates.
  • Networking
  • Streaming loading/unloading of assets
  • Spatial audio, footfalls, and 3D audio sources, tied into gameplay
  • AI characters that communicate and/or cooperate and/or have other complex behaviors
  • Gameplay-relevant shadows and lighting

If you'd like to propose an additional feature, let me know.

Your Unit 1 games are both due before the Tuesday of week 8. If you don't have a game mostly done by week 5, you'll need to meet with me so we can catch you up.

Leave time for yourself to record a small video showing off your features, and a postmortem describing what went well and what went poorly.