mshah.ioCourse ScheduleCourse Information


CPSC 411/511 Building Game Engines

Pragmatic and technical game development -- Your Instructor

Godot Game Engine
Tooling
The Game Loop!

Quick Links | Piazza Course Forum |

Course Information

Course Staff (ULA/TF Teaching Assistants)

  1. 0:{"Andrew":"email TBD"}
  2. 1:{"Katie":"email TBD"}

Course Description

This course teachings the fundamentals of building a game engine. We will be using a systems programming language, software engineering techniques, and several libraries to build a game engine. This course will include some refreshers of using Object-Oriented methods to build software. There will also be some case studies of game engines and programming throughout this course.

Registrar Description: This course teaches the fundamentals of building a reusable software architecture by building games. This is a programming-intensive course where the end product of this course is a data-driven game engine that students work in small teams to implement in a systems programming language (e.g. C, C++, D, etc.). Students apply data structures, algorithms, and systems programming skills in the domain of games. Discussion and implementation of the components of a game engine may include: resource management (allocators, resource managers, serialization), abstraction (design patterns, game objects, scripting, graphics layers), graphics management algorithms (scene graphs, level of detail), physics (linear algebra, collision detection and resolution algorithms), artificial intelligence (e.g. pathfinding,decision making), and performance (concurrency, parallelism, math). Students work on a final course project for their portfolio.

Course Objectives

By the end of this course, you will:

  1. Build games to understand the components of a game engine!
  2. Have an understanding of how to build tools to support game Development.
  3. Work as a team to build a final game project using a custom engine.

Course Prerequisites

The following prerequisites are expected to get the most out of this course:

  1. CPSC 223 (Data Structures and Programming Techniques) and CPSC 323 (Computer Systems) are hard prerequisites. For graduate studnets, an equivalent data structures and systems (or operating systems) course is needed.
  2. (Unofficially-Mike says) You need to be willing to learn a systems programming langauge (e.g. Dlang, C, C++) and understand things like how to compile software, link in static and dynamic libraries, and understand memory allocation

Course Resources

The following resources have been vetted, and I recommend for mastery (while taking this course, and reviewing later on in your career). Note, I will also often provide readings that will be valuable for completing your assigned work.

  1. (Free- Online Edition) Game Programming Patterns
  2. (Free - Online Edition) Programming in D
  3. (Strongly Recommended) Game Engine Architecture or on Yale Library
  4. (Strongly Recommended) Game Coding Complete

Academic Integrity and Non-Discrimination


Students and instructors are to follow the University policies on these important issues.

  • Please see Yale College\'s Undergraduate Regulations and Academic Dishonesty
  • Assignments: The code you submit must be the result of your understanding of the problem. You may discuss concepts and approaches with other students, but you may not take any written or electronic records from such discussions (this includes discussions on Ed; such discussions are electronic records so you may not post code publicly there). Furthermore, you must engage in a full hour of mind-numbing activity such as watching back-to-back episodes of an inane sitcom before resuming work (this is Stan Eisenstat\'s "Gilligan\'s Island rule"). Under no circumstances may you examine a copy of another student\'s code, nor may you provide a copy of your code to another student. You may use snippets of code you find online for a generic purpose (for example, for resizing a dynamically allocated array), but you must clearly indicate in your code which parts are derived from code you found online, and the bulk of your code must be your own. You may consult course staff for help writing and debugging, and you may use code examples from class or posted to a course website without attribution and without triggering the Gilligan\'s Island rule.
  • Final Programming Project: each student must work individually (so, for example, no discussions with other students even under the Gilligan\'s Island rule)
  • Exams: each student must work individually
    • If you are caught cheating I have to report the violation. My official policy is you receive a 0 in the course. Always remember, if you use any external sources, you must cite them.

Late Assignment and Make-Up Policy

This semester we have a very simple "make-up" policy. You turn the assignment in by the official deadline for a potential of up to 100%. If you submit the assignment up to 1-week late (7 days), you can get up to 90%. If you submit the assignment any time after 1 week, it is a 0.

Important Note: Course projects (or final examinations) however must be completed on time. Final course projects lose 10% per day that they are late. The reason for this, is because there is no time flexibility at the end of the semeter in which I must otherwise submit final grades (especially for graduating students

Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events (e.g. attending a conference like Grace Hopper, Tapia, Game Developers Conference, or otherwise presenting a research paper) may have the need for a make-up or flexibility in a deadline. You must contact me in advance of such events and provide materials documenting your participation (e.g. name in a conference program, registration, etc.), so that appropriate accommodations can be made if they are indeed an excused absence.

Note: Students who contact me after the event participation has taken place, are not elgible for extensions. The reason(s) for this is: 1.) It is not fair to expect me to accomadate your situation after it has happened. 2.) You need to learn communication skills (e.g. If you do not show up for work, you cannot ask your boss to forgive the absence after you come in the next day without telling them). 3.) Some students work multiple jobs, are caretakers, and have other sometimes invisible circumstances, and it is not fair to them for you to get an extension "after the fact".

Note: Previously I had used a "5 token" system (which no longer exists in favor of a better system) which allowed you up to 5-days of extensions. Instead a more equitable option, and to avoid issues of students guessing when to use tokens (or students e-mailing asking for more tokens, while others did not feel comfortable), I am giving everyone a 7-day window to submit assignments with up to 90% credit on every assignment. Please keep in mind, I am still giving assignments with the expectation and duration that the assignments can be completed by the first deadline otherwise.

Note: Generally speaking, I discourage and only under rare circumstances grant an 'incomplete'. Incompletes cannot be used to makeup or extend assignments, that is not the right mechanism.

Occasionally, other life events and circumstances occur that were not planned. If this is the case, please e-mail me privately.

Accessibility

Part of what makes university unique, is our diverse cohort of students, faculty, and staff. In order to support this, the university is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the University experience.

  • Students with disabilities, especially those who need special accommodations for exams, should contact the instructor and the Student Accessibiilty Services (SAS) in the first week of the semester to work out a plan. It is the responsibility of the student to make sure that SAS and the teaching staff has plenty of advance notice to accommodate the student needs.

Attendance Policy

Students who do well in this course tend to show up to the course consistently, participate (virtually or in-person), start coursework the day it is assigned (pro tip: read the assignment at the least, the day it is released!), and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not completed during the specified duration are a zero.

Wellness Policy

While university can be difficult at times, please do take care of yourself. It is okay to seek help and take a break. Please communicate with your instructor, advisor, and officials at the university if you just need a mental break.

I personally remember how difficult university can be juggling myself multiple jobs, multiple clubs, and trying to learn. Do take your wellness seriously!

Please consider the following resources at Yale:

Assessment Rubrics

Please find below the grading distribution that will be used for this course to compute a weighted average for your final grade. You will find grades you earn through the semester on Canvas and your final grade in banner.

Please do not redistribute or host any materials without e-mailing me first. I generally am happy to share the latest .pdf or slide presentation with those who ask. Thank you for your time!