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