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
  1. Introduction to Game Engine Systems
    1. What is a game engine?
    2. Components of modern game engines
    3. Hardware architecture and its relation to game engine design
    4. Graphic pipeline implications for game engine design
    5. Differences between design and implementation
  2. Compiler and Assembly Optimization Techniques
    1. Optimizations for C/C++ coding
    2. Compiler optimization strategies
    3. Profiling
    4. GPU optimizations
    5. SSE optimizations
    6. Memory allocation and optimization
  3. Threading
    1. Mutexes
    2. Synchronization
    3. Locks and conditions
    4. Semaphores
    5. Barriers
    6. Heavy weight vs. lightweight constructs
  4. Multicore Approaches to Engine Development
    1. Hyperthreading vs. multicore
    2. Clock and timing issues related to multicore development
    3. Task-centric vs. data-centric models for multicore component architectures
    4. Threadpools and pipeline strategies
    5. Lockless programming
    6. GPU multicore solutions and constraints
    7. CPU/GPU mixed multicore programming
    8. Perils and pitfalls of multicore programming
    9. Custom vs. package solutions for threading and multicore
  5. Scene Graphs
    1. Geometric representations
    2. Materials and textures
    3. Global and local lighting
    4. Lighting effects
    5. Camera and camera modeling
    6. File systems and world state maintenance
  6. Advanced Scene Graphs
    1. Level of detail
    2. Particle systems
    3. Spatial Partitioning mechanisms
    4. Portal systems
  7. Motion and Animation
    1. Introduction to motion and animation
    2. Keyframe animation
    3. Bone systems
    4. Forward kinematics
    5. Inverse kinematics
    6. Motion capture systems
  8. Collision Systems
    1. Simple collision systems for approximations
    2. Complex collision systems for detailed intersections
  9. Physics
    1. Particle physics
    2. Rigid body dynamics
    3. Deformable body dynamics
    4. Solving differential equations quickly for physical simulations
  10. Additional Control Systems
    1. Controller based operations (joystick, keyboard, mouse)
    2. Audio engine
    3. Planners and Schedulers
    4. Networking and distributed play
  11. Tools and Toolsets
    1. Pipeline tools
    2. Script integration tools
    3. Game design layout tools
    4. Content tools
    5. Audio landscape tools
    6. 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.

bunny by Asa Tse turtle by Asa Tse flowers by Asa Tse psp guy by Asa Tse blow fish by Asa Tse shapes to cat by Asa Tse dinosaur by Asa Tse cute girl by Asa Tse bee by Asa Tse frog by Asa Tse dog by Asa Tse cat by Asa Tse canvas face by Asa Tse duck face by Asa Tse