Building Game Engines

"Pragmatic and technical game development" -- Your Instructor

Course Information

  • Course Number: CS 4850/5850
  • Semester: Spring 2019
  • Hours: Monday, Wednesday from 2:50pm-4:30pm
  • Location: Behrakis Health Sciences Cntr 325 (map)
  • Piazza: Forum Board (Office Hour and locations are listed in forum)

Instructor

  • Instructor: Mike Shah
  • E-mail: mikeshah( a t )Northeastern
  • Office: Nightingale 132A
  • Office Hours: Hours listed on piazza or otherwise made by Appointment through e-mail.

Image 1

Schedule/Road Map


The following is our tentative syllabus for the course, some changes should be expected throughout the semester. I will announce in class or through e-mail any major changes.

Acquire the Course Monorepo by clicking here Do not do a 'git pull' until class starts (Occasionally I make changes/spelling corrections)


Module Date Topic Assignments Note(s)
1 Monday, Jan. 7, 2019
  • Course Syllabus
  • Course Logistics
  • What is a Game Engine?
  • Why Build a Game Engine?
  • Begin Module!
-- --
-- --
Wednesday, Jan. 9, 2019
  • Modern C++ Introduction
  • Compile-time vs Run-time
  • Memory Management
  • Begin Module!
-- --
-- --
2 Monday, Jan. 14, 2019
  • Compilers
  • Source Control
  • Singleton Design Pattern
  • Begin Module!
-- --
-- --
Wednesday, Jan. 16, 2019
Breakout 1 Released (click here to get repository for your team)
-- --
3 Monday, Jan. 21, 2019
No Classes MLK
-- --
-- --
Wednesday, Jan. 23, 2019
  • Initialization and Shutdown
  • Memory management and allocators
  • Caches
  • STL
  • Begin Module!
-- --
-- --
4 Monday, Jan. 28, 2019
  • Asset Pipeline
  • Asynchronous I/O
  • Resource Managers
  • File Compression
  • Begin Module!
Breakout Tooling
-- --
Wednesday, Jan. 30, 2019
-- --
-- --
5 Monday, Feb. 4, 2019
Breakout Part 3 Out
-- --
Wednesday, Feb. 6, 2019
-- --
-- --
6 Monday, Feb. 11, 2019
Breakout Final Product (Platformer Released Click here to form your team)
-- --
Wednesday, Feb. 13, 2019
-- --
-- --
7 Monday, Feb. 18, 2019
No Classes President's Day
-- --
-- --
Wednesday, Feb. 20, 2019
Platformer Tooling
-- --
8 Monday, Feb. 25, 2019
  • Static and Dynamic Game Worlds
  • World Chunks
  • Introduction to Game Objects
  • Type Object Pattern
  • Begin Module!
Platformer Part 3 Released
-- --
Wednesday, Feb. 27, 2019
-- --
-- --
9 Monday, Mar. 4, 2019
Spring Break
-- --
-- --
Wednesday, Mar. 6, 2019
Spring Break
-- --
-- --
10 Monday, Mar. 11, 2019
--No Class out sick--
-- --
-- --
Wednesday, Mar. 13, 2019
  • Component Systems
  • Game Objects
  • Data-Oriented Design
  • Begin Module!
Platformer Final Product due March 15 at midnight (Final Project Out)
-- --
11 Monday, Mar. 18, 2019
  • Physics Engines
  • Job of a Physics Engine
  • Broad Phasing
  • Spatial Partitioning
  • Begin Module!
Click here to get the final project repo
-- --
Wednesday, Mar. 20, 2019
-- --
-- --
12 Monday, Mar. 25, 2019
  • How Sound Works
  • Audio API Example
  • Event Queue
  • Service Locator
  • Begin Module!
-- --
-- --
Wednesday, Mar. 27, 2019 -- Out Sick -- Continue working on project proposals
-- --
-- --
13 Monday, Apr. 1, 2019
  • Concurrency vs Parallelism
  • C++ Thread Examples
  • Game Engine Case Studies
  • Begin Module!
-- --
-- --
Wednesday, Apr. 3, 2019
-- --
-- --
14 Monday, Apr. 8, 2019
-- --
-- --
Wednesday, Apr. 10, 2019
  • Work with your teams--final push!
  • Do the in-class activity
  • Look at the feedback form you will get
  • Begin Module!
-- --
-- --
15 Monday, Apr. 15, 2019
Patriot's Day
-- --
-- --
Wednesday, Apr. 17, 2019
  • Trace
  • Show Projects
  • Eat Pizza
  • Course Post-mortem
  • Class Picture
  • Begin Module!
Final Project due before class
-- --

Course Description


This course teachings the fundamentals of building a game engine. We will be using C++, softare 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: Discusses the components of game engines and strategies for their software implementation. Includes graphics management algorithms (animation, scene graph, level of detail); basic artificial intelligence algorithms (search, decision making, sensing); and related algorithmic issues (networking, threading, input processing). Explores the use of data-driven software design. Offers students an opportunity to use a rendering engine and to build and integrate several software components to create a complete game engine. Requires students to work on individual assignments and then develop a project in a team, which requires a report. Offers students an opportunity to learn team/project management; work division; team communication; and the software development cycle of implementation, testing, critique, and further iteration.

Course Objectives


By the end of this course, you will be ready to:

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

Prerequisites


  • (Undergrad) Prereq. CS 3540 or permission of instructor
  • (Grad)Knowledge of computer graphics, differential calculus, operating systems concepts, and algorithms; restricted to students in the Khoury College of Computer and Information Sciences.

Additional Course Prerequisites


  • This course will be taught using C++. It is possible you have not taken a specific course on C++ in your time at Northeastern.
    • This means, you will learn more in this class. That is a good thing.
    • This means, you will have to work hard. I will support you in learning some C++, and early lectures will be devoted to some C++.

Resources



There will be no required textbook to purchase for this course. However, these resources have been vetted, and I recommend for mastery (while taking this course, and reviewing later on in your career).

Academic Integrity and Non-Discrimination


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

  • Northeastern Non-Discrimination Policy - This classroom is a safe space for the instructor and students to talk about ideas, share viewpoints, and learn.
  • Northeastern Academic Integrity Policy - You only cheat yourself if you are not honest. Most often cheating occurs when an individual falls behind or perhaps has other circumstances occurring in their life. Please consult the instructor before ever considering cheating.
    • 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.
  • Student Code of Conduct: Students and instructors will follow the following guide for how we conduct ourselves. This is to create a respectful environment where everyone can learn.

Make-Up Policy


Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events may have the need for a make-up. Please contact me in advance of such events, so that appropriate accommodations can be made.

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

E-mailing me asking for extensions just because is unfortunately not fair to your classmates. The 10% penalty for each day late has to be enforced so I do not get taken advantage of.

Accessibility


Part of what makes Northeastern University unique, is our diverse cohort of students, faculty, and staff. In order to support this, Northeastern 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. If you have a disability that requires accommodations, please contact the Student Accessibility Services office at DRC@northeastern.edu or (617) 373-2675 to make an appointment with the Disability Resource Center representatives in 20 Dodge Hall to determine appropriate accommodations.

Lateness and Attendance Policy


Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not attended are a zero.

Assessment/Course Polices


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 the grade you earn in this course on blackboard.

  • In-Class Activity: 5%
  • In-Class Labs:     20%
  • Final Project:     35%
  • Assignments:       40%
    • (Each Assignment worth the same % of points)

  • The grade system follows the University Grading System.
    • A  = 95 – 100
    • A- = 91 – 94
    • B+ = 87 – 90
    • B  = 83 – 86
    • B- = 80 – 82
    • C+ = 77 – 79
    • C  = 73 – 76
    • D+ = 67 – 69
    • D  = 63 – 66
    • F  =  0 – 62
  • In the event of a snow day (i.e. we miss a lab or in-class activity) the weight of each assignment increases (There may also be shuffling of course material if we are interrupted).
  • The expectation is that the assignments are fair but difficult, so you should start early!
  • Late Submissions of Assignments receive 10% off per day submitted late (up to 3 days max, then 0% received).
    • Unfortunately, with 100+ students I cannot make individual exceptions fairly to your classmates who are likely making other personal sacrifices.
  • Assignments that do not compile/open receive no credit Simply put, programs that do not compile do not do anything.
  • There are no "re-grades" or points awarded one week after your grade is posted. "re-grades" may result in a higher, equal, or lower score.
    • There are no "re-grades" after the semester is over.
    • Do not ask multiple members of the course staff for "re-grades"
  • If you are currently wait listed, you must submit your homework on time. That is the gamble! If you do not have blackboard access, you will submit by e-mail or other course mechanism.
  • There are no extra credit assignments. I reserve the right to add points to assignments that do go above and beyond however.
  • I reserve the right to modify the grading scale in your favor if you show exemplary proficiency in any of the categories. I will never modify the scale to lower a students grade.
  • In class work cannot be made up at a later date unless otherwise arranged with the instructor well in advance.
    • Course work completed after the date cannot be graded, as solutions will have been discussed (this includes if taking this course for an Incomplete).
    • Once again, "in-class" work must be completed in-class unless there is a documented emergency or you have prearranged with the instructor a make-up well in advance.
  • No Facebook, no cell phones. Not only does it distract you, it distracts others! (Divide your tuition by lecture hours and perhaps you will be more motivated as well!)
  • Everyone needs to come see me in office hours (or by appointment) at least one time during the semester to introduce yourself. The purpose is so that you:
    • Know where my office is.
    • Get used to coming to office hours.
    • Let me know how I can help you achieve your goals.