4002-836-01
Game Engine Design and Development
Winter 20082 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 2515
475 - 4873
cae (*at*) it.rit.edu (or through FirstClass)

Office Hours:

T.B.A.
and by appointment

Course Text and Materials

• Text: 3D Game Engine Architecture, David Eberly, Elsevier, 2005.
• Additional readings will be provided as handouts or web URLS

Important RIT Deadlines

Last day of add/drop is Monday, December 8, 2008. Last day to withdraw with a grade of "W" is Friday, February 6, 2009. 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: IT department 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

4002-735 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)
By the end of the course, students should be able to:
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 4002-734 2D Graphics Programming as well as 4002-735 3D Graphics Programming.

Course Organization

Projects
There will be one major project split into 4 checkpoints over the quarter. The goal of the project is for students to extend their work started in 4002-735. Students will be required to apply concepts learned in this class towards the development of a new game engine. The game will be presented in the 11th week of the quarter. The project grade will be composed of several factors, including technical proficiency, code structure, and documentation.

Reports
Over the quarter, written assignments will be given. The assignments will involve the analysis of game engines. The reports will be of professional quality and will be of substantial length.

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.

Team Evaluation
A component of your grade will be determined by your contribution to and interaction with your teammates. The team evaluation will consist of both peer evaluation and of observation by the faculty member teaching the course.

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.

"Rounds"
Game Design and Development students will be required to participate in rounds on Fridays during the quarter. Rounds is a new part of the Game Design and Development program, which provides a venue in which students must present their work for each week to faculty involved with the Game Design and Development program. The instructor will convey to the rounds group the expectations for the week. The faculty may question the students from various perspectives. Students should not only be able to discuss their work, they should be able to discuss their individual and team contributions for the work.

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. Core Components for Game Engine Systems
    1. Data structures
    2. Time
    3. File systems
    4. Mathematical systems for game engines
    5. Colors
    6. Scripting
    7. Control systems
    8. Lifecycle management
  3. Threading and Scheduling
    1. Mutexes
    2. Synchronization
    3. Locks and Conditions
    4. Semaphores
    5. Barriers
    6. Thread optimization
    7. Multiple core solutions
  4. 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
  5. Advanced Scene Graphs
    1. Level of detail
    2. Particle systems
    3. Spatial Partitioning mechanisms
    4. Portal systems
    5. Tessellation and subdivision surfaces
    6. Terrain systems
  6. 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
  7. Collision Systems
    1. Intersections of lines and planes
    2. Terrain following
    3. Intersection algorithms for complex geometries
    4. Hierarchical collision systems
  8. Physics
    1. Particle physics
    2. Rigid body dynamics
    3. Deformable body dynamics
    4. Solving differential equations quickly for physical simulations
  9. Control Systems
    1. Time based control
    2. Controller based operations (joystick, keyboard, mouse)
    3. UI based control systems
    4. AI control systems
    5. Control system scheduling
  10. Tools and toolsets
    1. Game-optimized compilers
    2. Game APIs
    3. Character and object creation software
    4. Scene layout and management software
    5. Physics and behavior APIs
    6. Asset management systems
    7. Scripting engines
Grading

The grading scale used along with the grading criteria is as follows:

Component Weight
Project 65
Exams/Participation/Activities 20
Peer Evaluation 15
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 IT department's policy on cheating, located online at http://www.it.rit.edu/policies/dishonesty.html. 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