Week 1

Game Engine Programming

Welcome!

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 the Zulip!
  • Be ready to start making games
  • Office hours are after class or by appointment
  • 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:

F
Three or fewer features
C
Four features
B
Five features
A
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 kira 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.

In-Class Exercises

  • Pre-quiz: Rust basics, GPU vs CPU
  • (Rust) Activity: Mystery Tour
  • (Rust) Activity: Computational Geometry
  • (The GPU and You) Activity: Scavenger Hunt
  • (The GPU and You) Activity: 2D Brainstorming
  • (The GPU and You) Lab: The Humble Textured Triangle
  • Post-quiz: Why Rust, 3D pipeline, buffers