mshah.ioCourse ScheduleCourse Information


CPSC 4791/5791 Building Game Engines

Pragmatic and technical game development -- Your Instructor

Godot Game Engine
Tooling
The Game Loop!

Schedule/Road Map

The following is our tentative syllabus for the course, changes should be expected throughout the semester. I will announce in class, piazza, or through e-mail any major changes.
WeekDateLecture and ReadingsProblem SetsNote(s)
1 Wednesday,
2025-Aug-27
Module 1 - Administrivia | Games and Game Engines
  1. Administrivia and Course Logistics
  2. What is a Game and a Game Engine?
  3. Programming Language Choice
  4. Why Build a Game Engine?
  5. Obtaining the course repository
PSET 01 Released (Due Sept. 7 Anywhere on Earth)

(Late Deadline Sept. 14 for up to 90%)
Welcome back to class!

Note: 1st PSET has extra time to accomodate students who add late. Students who add late still need to complete by the deadline shown.
1 Friday,
2025-Aug-29
Module 2 - Game Genres, Game Applications, and Game Loops
  1. Game vs Game Engine
  2. Game Genres influence on Game Engine Design
  3. Game Loop
  4. Game Application
-- --
Friday classes do not meet; Monday classes meet instead
2 Monday,
2025-Sep-01
Module 3 - No Class
-- --
No Class; Labor Day
2 Wednesday,
2025-Sep-03
Module 4 - D Language Review and Q&A
  1. rdmd
  2. Pointers
  3. Stack
  4. Heap
  5. Static
  6. Memory Mapped Files
  7. Procedural
  8. Object-Oriented
  9. Functional
  10. Generic
  11. Deque Data Structure
PSET 02 Released (Due Sept. 14 Anywhere on Earth)

(Late Deadline Sept. 21 for up to 90%)
Add/Drop Period closes Sept. 5 at 5:00pm ET
3 Monday,
2025-Sep-08
Module 5 - SDL Basics: Dub Setup,SDL Basics,2D Primitives and Framerate
  1. Modules and Packages in D
  2. Compiling and Linking
  3. Introduction to SDL
  4. Introduction to Dub
  5. SDL Subsystems
  6. SDL Event Loop
  7. Basic Terminology of 2D Rendering
  8. Basics of 2D Rendering in SDL
  9. Frame Capping
  10. Frame Independent Movement
PSET 03 Released (Due Sept. 21 Anywhere on Earth)

(Late Deadline Sept. 28 for up to 90%)
-- --
3 Wednesday,
2025-Sep-10
Module 6 - Sprite Animation, Bitmap Fonts, and State Machines
  1. Sprite Animation
  2. Bitmap Fonts
  3. State Pattern
-- --
-- --
4 Monday,
2025-Sep-15
Module 7 - Game Object and Component Pattern
  1. core.atomic
  2. Game Objects/Game Entities/Game Actor
  3. Component Pattern
PSET 04 Released (Due Sept. 28 Anywhere on Earth)

(Late Deadline Oct. 5 for up to 90%)
-- --
4 Wednesday,
2025-Sep-17
Module 8 - Engine Support Systems 1 - Gameplay Systems & Scripting
  1. Adding Behaviors with Script Components
  2. pyd
  3. Lua, scripting, and other languages
  4. Hot Reload
-- --
Mike at CPPCON, lecture will be pre-recorded and posted on module page for you to watch.
5 Monday,
2025-Sep-22
Module 9 - Engine Support Systems 2 - Resource Managers and File Systems
  1. Resource Manager
  2. Static Classes and Resource Management discussion
  3. File Systems
  4. File Compression with .zip
  5. Asset Pipeline
  6. Mention of flyweight pattern
PSET 05 Released (Due Oct. 5 Anywhere on Earth)

(Late Deadline Oct. 12 for up to 90%)'
-- --
5 Wednesday,
2025-Sep-24
Module 10 - Game Audio
  1. How Sound Works
  2. Audio API Example
  3. Event Queue
  4. --Service Locator
-- --
-- --
6 Monday,
2025-Sep-29
Module 11 - Game Math 1 - Vectors
  1. Coordinate Systems
  2. Vector Mathematics
  3. Reflection of vectors
  4. Trigonometry - Sine and Cosine
-- --
-- --
6 Wednesday,
2025-Oct-01
Module 12 - Game Math 2 - Matrices
  1. Matrix Mathematics
  2. Decomposing a Matrix
PSET 06 Released (Due Oct. 22 Anywhere on Earth)

(Late Deadline Oct. 29 for up to 90%)'
-- --
7 Monday,
2025-Oct-06
Module 13 - Game Structure 1 - Scene Tree, Scene Structure, Serialization
  1. Hierarhical Transformations
  2. Scene Tree Organization
  3. Scene Structure
  4. Serialization/Deserialization (Text and Binary Files)
  5. --Serialization challenges: Floats, variable-length data (and using template constraints for 'serialize()' member function)
  6. Meta-programming in D for serialization
-- --
Final Project Specification Out


Please do the in-class activity for your team survey -- this is graded!
7 Wednesday,
2025-Oct-08
Module 14 - Game Scene Structure 2 - Camera and Partitioning
  1. Virtual Camera and World and Screen Coordinates
  2. Spatial Partitioning for camera and rendering
-- --
8 Monday,
2025-Oct-13
-- --
Guest Speaker from Unity3D

I am expecting everyone enrolled to attend (the video will not be posted until after the exam).
8 Wednesday,
2025-Oct-15
Module 16 - No Class
-- --
October Recess
9 Monday,
2025-Oct-20
Module 17 - Putting it all together
  1. Putting a project together
Online exam released on canvas Oct. 20 at 6:00pm EST

PSET 07 Released (Due Nov. 2 Anywhere on Earth)

(Late Nov. 9 for up to 90%)
Brief Study Guide Link (Click me).

Exam otherwise includes any other materials from lecture, slides, and homeworks. You must finish the exam in one sitting (i.e. when you open the exam, your time starts)
9 Wednesday,
2025-Oct-22
Online exam due on canvas (Exam due Oct. 27 Anywhere on Earth which is precisely Oct. 27 at 8AM EST)
Mike will be away at Code::Dive

Please remember to do the in-class activity.
10 Monday,
2025-Oct-27
Module 19 - Tiles and Bits
  1. Binary Numbers
  2. Numbers
  3. Bit Masks and Vectors
  4. Random Numbers
  5. Tile Maps
  6. Painters Algorithm
  7. Layering
-- --
-- --
10 Wednesday,
2025-Oct-29
PSET08(Due Nov. 11 Anywhere on Earth)

(Late Deadline Nov. 18 for up to 90%)
-- --
11 Monday,
2025-Nov-03
Module 21 - Physics and Collision
  1. Physics Engines
  2. Job of a Physics Engine
  3. Broad Phasing
  4. Spatial Partitioning
  5. Unity3D Physics
  6. Oriented Bounding Boxes
  7. SDL3 Examples of Collision
-- --
Lecture is pre-recorded (Mike out sick), you can watch from home.
11 Wednesday,
2025-Nov-05
-- --
Lecture is pre-recorded (Mike out sick), you can watch from home.
12 Monday,
2025-Nov-10
Module 23 - 2D Rendering Techniques
  1. Sprite Batching
  2. Sprite Stacking
  3. Using an OpenGL Quad and Shader Programming
-- --
Complete the 'alpha' portion of your final project by end of day.
12 Wednesday,
2025-Nov-12
-- --
Demiurge Studio Guest Lecture on Game Engines (See piazza for URL).

I am expecting everyone enrolled to attend.
13 Monday,
2025-Nov-17
Module 25 - Gameplay Systems/Object Pools
  1. Static and Dynamic Game Worlds
  2. World Chunks
  3. Object Pools
-- --
We will be checking for your 'beta' milestone deliverable two days after this lecture.
13 Wednesday,
2025-Nov-19
Module 26 - Systems programming - Parallelism/Concurrency
  1. Concurrency vs Parallelism
  2. Thread Examples
  3. Job Systems in Games
-- --
Mike presenting at Graphics Programming Conference in Europe -- class may be remote, stay tuned
14 Monday,
2025-Nov-24
Module 27 - No Class
-- --
November Recess
14 Wednesday,
2025-Nov-26
Module 28 - No Class
-- --
November Recess
15 Monday,
2025-Dec-01
Module 29 - work day / mini-topic (e.g. profiling code or Fibers)
  1. Enjoy guest speakers
  2. Additional Game Programming Patterns (Type, Bytecode, etc.)
-- --
-- --
15 Wednesday,
2025-Dec-03
Module 30 - Course Wrap up and work day
  1. Class Picture!
  2. Review of Course
'Final project due Dec. 10 at noon ET. (Note: No extensions for final project; 10% late penalty every day project is late)
Last official day of class :(

Final Project presentations will be Dec. 10 from 6-8pm in Loria 250
Please do not redistribute or host any materials without e-mailing me first. Thank you for your time!