4085-836-01
Game Engine Design and Development
Winter 20112 Course Syllabus
The information presented in this syllabus is subject to expansion, change, or adjustment during the quarter.
Instructor:
Name: Christopher A. Egert
Office: Bldg. 70, Room 2139
475 - 4873
caeics (*at*) rit.edu
Office Hours:
By appointment
Course Text and Materials
•Text:Game Engine Architecture, Jason Gregory, Elsevier, 2009.
• Additional readings will be provided as handouts or web URLS
Important RIT Deadlines
Last day of add/drop is Sunday, December 4, 2011.
Last day to withdraw with a grade of "W" is Friday, February 10, 2011.
The deadline for withdrawing from a course with a W grade is the end of the 8th week
of the quarter. The withdraw process is now handled online, and is the responsibility
of the student to complete before the deadline.
NOTE: Policy states that a student has one
quarter to challenge any grade. After that, grades cannot be challenged.
Course Description
This course will provide students with theory and practical skills in game engine design topic areas such as understanding the graphics pipeline as it influences engine design, hardware principles and the relationship to game engine construction, mathematical principles, scene graph construction and maintenance, advanced scenegraph manipulation, textures, materials, and lighting, collision systems, physics, particle systems, and control systems. Furthermore, this course will examine software and toolsets that assist game engine designers in their tasks. Students will be expected to design and implement a game engine in teams as well as properly document their design and development strategy.
Prerequisite Courses
4085-835 or equivalent.
Course Goals and Objectives
General Course Goals
The primary goal of this course is to provide students with the necessary theory and practice
to allow for the design and implementation of game engines. This course will provide the student
with a holistic view of the development experience. Students will learn particular concepts in
game engine design including the relationship of hardware and the graphics pipeline to game engine
development, mathematical systems for games, scene graph design, implementation and maintenance,
advanced scenegraph techniques, motion, physics, textures, materials, lighting, collisions, particle
systems, controllers, and design and implementation toolsets. Particular emphasis will be placed on
the development and/or modification of a large-scale game engine system in order to provide students
with practical experience within the course domain.
Specific Objectives (Learning Outcomes)
1 | Students will be able to describe the fundamental components of a game engine. This will be assessed through game engine development assignments and classroom discussion. |
2 | Students will be able to describe the impact of hardware characteristics upon game engine development. Students will be assessed through class exercises and classroom discussion. |
3 | Students will be able to describe the components that comprise a modern game engine. Students will be assessed through critique of their game engine design strategies and classroom discussion. |
4 | Students will be able to apply key mathematical principles in the development of game engine technologies. Assessed through the design and implementation of the game engine project over the course of the quarter. |
5 | Students will be able to design and implement scene graph manipulation algorithms, including those for handling geometry, textures, lighting, and camera control. This will be assessed through the student's develop of a game engine over the course of the quarter. |
6 | Students will be able to design and implement advanced scene graph manipulation algorithms as part of a game engine. The student will be able to create and modify level of detail systems, particle systems, terrain systems, and other advance scene objects. These outcomes will be assessed through completion of the game engine design and implementation project over the course of the quarter. |
7 | Students will be able to apply different motion and animation techniques in the construction of a game engine. This will be assessed through both classroom discussion as well as through the student's ability to adapt concepts to the quarter long game engine project. |
8 | Students will be able to analyze collision detection systems for game engines. In addition, students will learn how to apply collision detection systems to the construction of game engines. This will be assessed through classroom discussion and the development of the game engine project over the course of the quarter. |
9 | Students will be able to integrate physical simulation systems (as applied to mechanics) into game engine development. This will be assessed through classroom discussion and the development of the game engine project over the course of the quarter. |
10 | Students will be design and implement control and scheduling systems as part of a game engine architecture. This will be assessed through the development of the game engine over the course of the quarter. |
11 | Students will be able to differentiate between tools and toolsets that assist in the game engine development process. In addition, students will be able to apply such tools and toolsets in the construction of a game engine. Students will be assessed through classroom discussion and the development of a game engine project over the course of the quarter. |
Prerequisite Skills
Students are expected to have the skills from 4085-834 2D Graphics Programming as well as 4085-835 3D Graphics Programming.
Course Organization
Projects
There will be a number of projects given over the quarter. The goal of the project is for students to extend their work started in 4085-835. Students will be required to apply concepts learned in this class towards the development of a new game engine or fundamental components. In addition, projects may be designed to explore optimizations, engine strategies, and open techniques. The instructor will provide guidance to the students as to which type of project is being assigned.
Explorations
Throughout the quarter, you will be assigned several "exploration" tasks. These are usually designed to be completed before the next class and involve a combination of research and application to explore a particular topic, technique, or software application.
Presentations
You will be required to present your work over the quarter. Presentations will be graded based
upon many factors including content, preparedness, and professionalism.
Participation
This course if an upper-level graduate course, and as such, requires students to engage in discussion and group activities. A portion of your grade will be based upon you willingness and contribution to participatory activities.
Grading
All assignments are expected on time. No late assignments will be accepted.
Website
The course website is located on the RIT myCourses system. You will use myCourses to retrieve class notes, assignments,
and supplemental materials. In addition, myCourses will be used as a discussion forum as well as a dropbox.
Course Topics
-
Introduction to Game Engine Systems
- What is a game engine?
- Components of modern game engines
- Hardware architecture and its relation to game engine design
- Graphic pipeline implications for game engine design
- Differences between design and implementation
- Compiler and Assembly Optimization Techniques
- Optimizations for C/C++ coding
- Compiler optimization strategies
- Profiling
- GPU optimizations
- SSE optimizations
- Memory allocation and optimization
-
Threading
- Mutexes
- Synchronization
- Locks and conditions
- Semaphores
- Barriers
- Heavy weight vs. lightweight constructs
- Multicore Approaches to Engine Development
- Hyperthreading vs. multicore
- Clock and timing issues related to multicore development
- Task-centric vs. data-centric models for multicore component architectures
- Threadpools and pipeline strategies
- Lockless programming
- GPU multicore solutions and constraints
- CPU/GPU mixed multicore programming
- Perils and pitfalls of multicore programming
- Custom vs. package solutions for threading and multicore
-
Scene Graphs
- Geometric representations
- Materials and textures
- Global and local lighting
- Lighting effects
- Camera and camera modeling
- File systems and world state maintenance
-
Advanced Scene Graphs
- Level of detail
- Particle systems
- Spatial Partitioning mechanisms
- Portal systems
-
Motion and Animation
- Introduction to motion and animation
- Keyframe animation
- Bone systems
- Forward kinematics
- Inverse kinematics
- Motion capture systems
-
Collision Systems
- Simple collision systems for approximations
- Complex collision systems for detailed intersections
-
Physics
- Particle physics
- Rigid body dynamics
- Deformable body dynamics
- Solving differential equations quickly for physical simulations
- Additional
Control Systems
- Controller based operations (joystick, keyboard, mouse)
- Audio engine
- Planners and Schedulers
- Networking and distributed play
-
Tools and Toolsets
- Pipeline tools
- Script integration tools
- Game design layout tools
- Content tools
- Audio landscape tools
- Packaging and distribution tools
Grading
The grading scale used along with the grading criteria is as follows:
Component | Weight |
---|---|
Projects | 60 |
Explorations | 20 |
Participation | 20 |
Range | Grade |
---|---|
>= 90.0% | A |
>= 80.0% & < 90% | B |
>= 70.0 % & < 80.0% | C |
>= 65.0 % & < 70.0% | D |
< 64.99% | F |
Cheating
Academic dishonesty is misrepresenting someone else's work as your own. Academic dishonesty is a serious matter, and can result in an automatic F for the course. Please review the IGM school policy on cheating, located online at http://igm.rit.edu. If, during the quarter, you ever have any questions about what does or does not constitute academic dishonesty, please come and talk to me.
Finally...
Any or all of the previous information is subject to change or adjustment during the quarter.