Game Engine I Fall 2018
Gam 475
instructor: Ed Keenan
email: ekeenan2@cdm.depaul.edu
office hours: Wed 2:30-4:30pm, 9-10pm in classroom or by email appointment
office: CDM 830
phone: (312)362-6747
website: piazza.com/depaul/fall2018/gam475 (Preferred communication)
lecture: CDM 202, Tuesday 5:45-9:00pm
Desired to Learn (D2L): d2l.depaul.edu (Grades, Viewing lectures, Announcements)
Version Control: perforce: 140.192.39.61:1666
Description:
Game engines provide an integrated programming platform for today's high performance games. This
class explores C/C++ game engine programming, data structures, and practices. Topics include memory
management, input devices, video rendering, file access, debugging, and application interface
development.
Prerequisites:
• Required:
o CSC 461: Optimized C++
Implies - C++, CSC 374 Computer Systems II, CSC 383 or CSC 393 data structures
• Recommended:
o GPH 469: Computer Graphics Development
OpenGL or Direct X graphics programming
Exposure to 3D matrix math and basic polygonal graphics understanding
Learning Goals:
o Understand the components of a real-time Game Engine
o Input, AI, Physics, Networking, UI, Graphics
o Understand real-time operating systems influence Game Engine performance
o Such as Memory, File, Object, Math systems
Understand real-time Graphics rendering
GAM 475 : Game Programming I
o
Syllabus – 11 September 2018
o Transformation, Rendering, Camera, Polygons, Buffers
o Developing a large software architecture
o Using Design patterns, Layers, and Libraries
o Developing and maintaining a very large project
o Incremental development and debugging a 100K+ lines of code
1
Grading
50% - Milestone 1 Core Systems
• 10% - PA1 - PCS Tree (Object System)
• 20% - PA2
o 10% - Memory System part A: Heaps/tracking
o 10% - Memory System part B: Alignment/fixed block
• 10% - PA3 - Math System
• 5% - PA4 - File System
• 5% - PA5 - PCSTree iterators
40% - Milestone 2 Graphics System
• 35% - Required features (Graphics, Shaders, Camera, Textures, Lighting, Scene Graph,…)
• 5% - Progression submissions (4 weekly submissions with video)
10% - Final Exam
Textbooks and printed resources
Additional course material will be many supplied through class notes, handouts or online links.
• 2 Required Books
o Game Engine Architecture, 2nd edition, Gregory, A.K. Peters Ltd., 2015
ISBN: 978-1466560017
o Vulkan reference material
Provided in class – links, books, material
• Recommended:
o Windows System Programming (4th Edition), 2010, Johnson Hart,
ISBN: 978-0321657749
• Assumed you already have (please buy it if you don’t have a copy):
o The C++ Programming Language- Bjarne Stroustrup
Additional Material
• Will be provided by the instructor
• Lectures, links, SDKs and other corresponding material
Software
• Microsoft Visual Studio 2017 Enterprise Edition (not Community)
o MSDNAA Depaul – Visual Studio 2017 Enterprise
C++ and C# install (future classes)
GAM 475 : Game Programming I
o Any other variants are not used in this class
Syllabus – 11 September 2018
o Students are responsible keeping their development tools working
• Perforce Server
o Download and configuration instructions will be provided in class
o Perforce – Helix Visual Client (p4v)
https://www.perforce.com/downloads/helix-visual-client-p4v
Server address: 140.192.39.61:1666
2
Topics will include:
Core Systems
• Memory System
• File System
• Object System
• Math System
Primitive Graphics Systems
• Transformations
• Camera
• Polygons / Strips
• Vertex Buffers
• Scene Graph
o Bounding Volumes
o Hierarchy of scene
o Level of Detail
Programming Assignments – 90%
Two distinctive milestones to this class. In the first milestone section, Core systems - we build
individual components and libraries for the memory, file, object system, and math systems that will
be used in the Graphics Engine. In the second milestone, we build a Graphics Engine from scratch,
using the most primitives’ components on top of Vulkan. All the work complete in this class is
further extended in Gam 575 Game Engine II.
o Milestone 1: Core System - 50%
Composed of the following core systems:
• 10% - PCS Tree (Object System)
• 20% - Memory System
o 10% - part A: Heaps/tracking
o 10% - part B: Alignment/fixed block
• 10% - Math System
• 5% - File System
• 5% - PCSTree iterators
o Milestone 2: Graphics Engine - 40%
GAM 475 : Game Programming I
Graphics Engine: 35%
Syllabus – 11 September 2018
• Composed of the following base systems:
o Transformations
o Camera
o Polygons / Strips
o Vertex Buffers
o Texture
3
o Model management
• Composed of the following secondary systems:
o Bounding Volumes
o Hierarchy of scene
o Level of Detail
• Demos using your new engine
Progression submissions: 5%
• 4 progression submissions (1 weekly)
• Showcase incremental development
• Video and source drops weekly
Final Exam – 10%
• Final exam covering the concepts and the material of the class (Take home exam).
o Open book, Open notes, Open computer – Yes, I said it.
Essay format 5+ pages
o Post-mortem of your design process and understanding of engine development
Readings
Textbooks are used for references and learning new topics. It is suggested that you research and
investigate material and ancillary topics covered in the class through these books as needed. High
performance programming requires both breadth and depth knowledge in the C++ language, therefore
everyone’s needs and research will vary based on their own experience and evolving mastery of the
material.
Grading Scale:
93-100: A 87-89: B+ 77-79: C+ 67-69: D+ 0-59: F
90-92: A- 83-86: B 73-76: C 60-66: D
80-82: B- 70-72: C-
Perforce Submissions
• Everyone is expected to submit several submissions to perforce a week.
o Minimum of five significant (real) submissions on three separate days.
o To promote incremental development and prevent last day rush.
o Grade deduction will occur if not followed
• The biggest reason students get into trouble with software design:
o Not starting the project early
o Not working on the material frequently enough
GAM 475 : Game Programming I
o Taking too large of a bite(byte) of the design
Syllabus – 11 September 2018
• Both are minimized with this Perforce RULE
• Even my simplest programs take 10-20 submissions.
o For these project assignments, my average is 40-400 submissions, so five will be no problem.
• Detailed perforce changelist comments are expected
4
Piazza Discussion forum
• Statistics show: students who participate more and help other students do better!
o The correlation is ridiculous!
• Poor understanding / poor participation.
• Great understanding / Great participation
o As you master the material, help others learn!
• Want to be a Master programmer so master it!
• Everyone is expected and encouraged to participate on the Piazza discussion forum. All class-related
discussion here this term.
o At least one real question or response per week from every student.
• Everyone is expected to keep up with the material on Piazza and are responsible for its content.
Critical class updates and directions will be presented there.
o Not participating or reading the material on Piazza is NOT an Excuse.
• All correspondence that is not personal in nature should be vectored through Piazza
o Sensitive material, use Piazza private note, not email.
• The quicker you begin asking questions on Piazza (rather than via emails), the quicker you will
benefit from the collective knowledge of your classmates and instructors. I encourage you to ask
questions when you are struggling to understand a concept.
• Keep the forum professional and positive, help each other out.
o Karma really pays off here.
o Help each other whenever you can.
• There will be a time when you will need help from the class (trust me).
NOTE: Do NOT post until you have watched the entire lecture FIRST (in class or online)
This will prevent frustration on all sides (members asking or answering questions)
Collaborating together on programming assignments
• You are encouraged to work together
o Use the Piazza forums heavy
o Even share your material with others in the common directory
Obviously not the answers
• Everyone is 100% responsible for the work they do.
o If you get help with a section of code,
o Please refactor the code the snot out of it
Comment and understand that material
Transform the code to make it yours
GAM 475 : Game Programming I
o Be able to answer any question regarding the code you commit
Syllabus – 11 September 2018
• System for Detecting Software Plagiarism
o We will be using MOSS - Measure of Software Similarity (Stanford University)
Indicates possible code infringements (plagiarism)
MOSS - will detect the similarity independent of naming convention, indentation
style or formatting, it compares abstract syntax tree of your code.
5
o I will pursue any plagiarism/integrity violations aggressively, arguing for full expulsion from
the university for the offenders.
Don’t put me or you in this scenario
• If you gain significant support / help from another student or website
o Fully disclose the support / help you had in a Readme.txt file submitted with your
assignments.
Disclosing the help, is not permission for copying the code.
Only there to clarify and acknowledge help you were given from a fellow student.
• Modifying any Unit Test or Project setting to alter the outcome results is also an Academic Integrity
Violation
• If you are stuck and find yourself even tempted to plagiarize
o Ask for help!!!!
Use on Piazza -> Visit during offices hours, make an appointment
Don't ever compromise your integrity!
• Material was uniquely created for this Class.
o By the process of tuition, you "paid" for the contents and material of this class.
Do not share this copyrighted material in any form
It is design for your personal use, while enrolled in the Class.
o Do NOT post any content or revealing material to any external website or forum outside of
this class.
The Class Piazza forum is provided for this service, ask questions there, not on the
internet (i.e. StackOverflow and other software forums)
• After you leave this class
o You are expressly FORBIDDEN to provide or share the content with others.
o Academic Integrity Violations can still be applied to students who provide material support
to other students even after completion of the class.
• Just follow the golden rule:
o "I have neither given, nor received, nor have I tolerated others' use of unauthorized aid."
GAM 475 : Game Programming I
Syllabus – 11 September 2018
6
Miscellaneous
• Late Policies
o Due dates and times are verified by the submission record on the Perforce Server
No extensions are allowed
o All assignments need to compile without warnings
Failure to compile “as-is” results in a 0 for the grade
• Memory Leaking
o For assignments that have memory tracking enabled
If an assignment is determined that its leaking memory
• A deduction of 20% is applied to the grade of that assignment
o Leaking status is provided during development
• Crashing
o Assignments are expected to work for a set duration
(long enough to demo all the features)
A grade of 0 is given to any project that throws an exception, ends unexpectedly,
crashes or hangs (not proceeding forward).
Crash – program locking up or quitting unexpectedly
GAM 475 : Game Programming I
Syllabus – 11 September 2018
7
Tentative Class Schedule
Date Lecture Activity Due
Week 1 Overview PA1 - Object system
Architecture Design
Object System
Week 2 Memory Overview PA2 - Memory system PA1 - Object system
Memory System Part A: Heaps/Track
Week 3 Fixed Block Memory PA2 - Memory system PA2 - Memory system
Data Alignment Part B: Align/Fixed Block Part A: Heaps/Track
Week 4 Vector / Matrix PA3 - Math system PA2 - Memory system
Transformations Part B: Align/Fixed Block
Math Library
Week 5 File System PA4 - File PA3 - Math system
Load in Place PA5 – PCSTree Iterators
Forward/Reverse Iterators
Week 6 Graphics Overview Demos from Vulkan PA4 - File
Refactoring Refactor Spinning cube PA5 - PCSTree Iterators
Math Lib integration
Week 7 Game Loop Different models Graphics Progress #1
Shader Manager Different shaders
Model Manager
Week 8 VAO/VBO Rework models Graphics Progress #2
Graphics Object Add new model
Texture Manager Changing textures
Week 9 Camera Manager Camera movement Graphics Progress #3
Culling Bounding Volumes Culling
Scene Graph
Week 10 Loading from a File Loading models from file Graphics Progress #4
Attribute switching Demo tweaking
Camera transitions
Week 11 Milestone II - due
GAM 475 : Game Programming I
Final Exam (take home) Final Exam due
Syllabus – 11 September 2018
University Dates (Drop, Withdrawal, Audit, Exam)
• https://academics.depaul.edu/calendar/Pages/default.aspx
8
University Course Policies
Changes to Syllabus
This syllabus is subject to change as necessary during the quarter. If a change occurs, it will be thoroughly
addressed during class, posted under Announcements in D2L and sent via email.
Online Course Evaluations
Evaluations are a way for students to provide valuable feedback regarding their instructor and the course. Detailed
feedback will enable the instructor to continuously tailor teaching methods and course content to meet the
learning goals of the course and the academic needs of the students. They are a requirement of the course and are
key to continue to provide you with the highest quality of teaching. The evaluations are anonymous; the instructor
and administration do not track who entered what responses. A program is used to check if the student completed
the evaluations, but the evaluation is completely separate from the student’s identity. Since 100% participation is
our goal, students are sent periodic reminders over three weeks. Students do not receive reminders once they
complete the evaluation. Please see https://resources.depaul.edu/teaching-commons/teaching/Pages/online-
teaching-evaluations.aspx for additional information.
Academic Integrity and Plagiarism
This course will be subject to the university's academic integrity policy. More information can be found
at https://resources.depaul.edu/teaching-commons/teaching/academic-integrity/Pages/default.aspx.
Academic Policies
All students are required to manage their class schedules each term in accordance with the deadlines for enrolling
and withdrawing as indicated in the University Academic Calendar. Information on enrollment, withdrawal,
grading and incompletes can be found at:
http://www.cdm.depaul.edu/Current%20Students/Pages/PoliciesandProcedures.aspx
Incomplete Grades
An incomplete grade is a special, temporary grade that may be assigned by an instructor when unforeseeable
circumstances prevent a student from completing course requirements by the end of the term and when
otherwise the student had a record of satisfactory progress in the course. All incomplete requests must be
approved by the instructor of the course and a CDM Associate Dean. Only exceptions cases will receive such
approval. Information about the Incomplete Grades policy can be found at
http://www.cdm.depaul.edu/Current%20Students/Pages/Grading-Policies.aspx
GAM 475 : Game Programming I
Syllabus – 11 September 2018
9
Students with Disabilities
Students seeking disability-related accommodations are required to register with DePaul’s Center for Students
with Disabilities (CSD) enabling them to access accommodations and support services to assist with their success.
There are two office locations:
• Loop Campus – Lewis Center #1420 – (312) 362-8002
• Lincoln Park Campus – Student Center #370 – (773) 325-1677
Students who register with the Center for Students with Disabilities are also invited to contact Dr. Gergory
Moorhead, Director of the Center, privately to discuss how he may assist in facilitating the accommodations to be
used in a course. This is best done early in the term. The conversation will remain confidential to the extent
possible.
Please see https://offices.depaul.edu/student-affairs/about/departments/Pages/csd.aspx for Services and Contact
Information.
Proctored exams for OL courses (if applicable)
If you are an online learning student living in the Chicagoland area (within 30 miles of Chicago), you will need to
come to the Loop campus to take an exam. Online learning students outside of the Chicagoland area are required
to locate a proctor at a local library, college or university. You will need to take the exam within the window your
instructor gives. Students should examine the course syllabus to find exam dates and the instructor's policy on
make-up exams. Detailed information on proctored exams for online learning students can be found at
http://www.cdm.depaul.edu/onlinelearning/Pages/Exams.aspx
Online office hours for OL courses (if applicable)
Faculty should be accessible to online students via phone, email and/or Skype.
GAM 475 : Game Programming I
Syllabus – 11 September 2018
1
0