======T-637-GEDE, Game Engine Architecture, Spring 2013====== ===== Basic Info ===== * **Instructor: ** [[http://www.ru.is/kennarar/hannes|Hannes Högni Vilhjálmsson]] * **Contact: ** Office in Venus floor 2, telephone 559-6323, and email hannes[ ]ru.is (open office hours) * **Theory/Lectures: ** Thursdays 14:55-16:30 (M120) * **Practical/Labs: ** Tuesdays 14:00-16:30 (M106) * **Online Forum: ** [[http://ruclasses.proboards.com/index.cgi?board=gedespring2013|Proboards GEDE 2013]] * **YouTube: ** [[http://www.youtube.com/user/RUClassGEDE]] ===== Description ===== The course covers the theory and practice of game engine software development, bringing together topics that range from large-scale software architectures and modern game programming paradigms to the design and implementation of subsystems for rendering, resource management, user interfaces, sound, collision, physics and animation. Through practical lab exercises and group projects, the students will get technical hands-on experience in C++ game development, including the use and development of supporting tool pipelines. =====Book===== The course text book is [[http://www.gameenginebook.com/|"Game Engine Architecture"]] by Jason Gregory, published by AK Peters in 2009. You will be expected to have this book and read the chapters as we work our way through it. Other books you can loan from library (reserved for this course): Game Programming Gems 1 through 8 (various), GPU Gems 3 (Nguyen), OGRE 3D 1.7 Beginner's Guide (Kerger), OGRE 3D 1.7 Application Development Cookbook (Peterson), CryENGINE 3 Cookbook (Tracy), Unity 3.x Game Development Essentials (Goldstone). You also have access to Game Developer's Magazine (several years). ===== Intended Learning Outcomes ===== On completion of the course students are expected to be able to: * Explain game engines and their role in game development * Compare and evaluate game engines with respect to game development goals and system requirements * Sketch the typical components of a run-time game architecture * Use industrial standard C++ development tools and version control tools * Explain and use data structures that are commonly used in game development * Explain what goes on in a typical game loop * Design and implement low-level engine systems that deal with start-up/shut-down, memory management, engine configuration, file system, game resources, game loop, rendering loop and interface devices * Apply 3D math, covering points, vectors, matrices and quaternions, for solving game world problems * Explain what goes on in the rendering pipeline * Use programmable shaders * Explain the anatomy of a game world, game objects, data-driven game engines and the general construction of a run-time game-play foundation system ===== Assignments ===== During the semester, students should complete three problem sets, one engine presentation and a final project. Problem sets can be done in pairs, and the engine presentation and final project in groups of up to 3 people in size. Students discuss final project ideas with instructor in week 7, demonstrate the project in week 12 and turn in a report on the project before exams start. Everything that has to be turned in, should arrive no later than at 23:59 on the due date, or else incur 10% penalty for each additional day, including weekends and holidays. ^Assignment^Description^Material^Assigned^Due^Weight^Results^ |{{public:t-gede-13-1:gede-problem1.pdf|PROB1}}|First Problem Set| Weeks 1-3 |Thu Jan 24|Fri Feb 1|5%| | |[[PRESENT]]|Presentation| Existing Game Engine |Thu Jan 17|Tue Feb 12|10%| | |{{public:t-gede-13-1:gede-problem2.pdf|PROB2}}|Second Problem Set| Weeks 4-7 |Thu Feb 21|Fri Mar 1|5%| | |{{public:t-gede-13-1:gede-problem3.pdf|PROB3}}|Third Problem Set| Week 11|Thu Apr 11|Sun Apr 24|5%| | |[[PROJECT]]|Final Project| "New" Game Engine technology|Thu Feb 21|Tue Apr 09|35%| | ^ ^ ^ ^ ^ Total^ 60% ^ ^ ===== Lab Projects ===== The practical classes on Tuesdays will take place in a computer lab. The focus will be on C++ development using the Ogre 3D graphics engine and related game libraries. The instructor will start each class by introducing a technical feature. The students will then be given an in-class project to complete. These projects will not be graded, but demonstrating successful results to the instructor will count towards participation grade. In addition, all source code should be uploaded into MySchool to register the completion. ===== Online Quizzes ===== Throughout the semester the instructor will provide about 10 online quizzes in MySchool from the theoretical material. These quizzes are meant for students to review recently covered material and will not directly count towards the final grade. However, simply completing a quiz, regardless of outcome, will contribute to the participation grade. ===== Online Forum ===== The course has a dedicated online forum where students can post questions, comments and useful information. Note that everyone should register, in their own name, on this forum before posting (simply go to the address below to register). ^Host^Forum Name^Our Board^ |ProBoards|[[http://ruclasses.proboards.com]]/|[[http://ruclasses.proboards.com/index.cgi?board=gedespring2013|Game Engine Architecture 2013]]| ^ ^^^ ===== Tentative Schedule ===== ^Week^Practical (Tues)^Theory (Thur)^ Due ^ | 01 (JAN 14-18) | [[Lab1|"LAB1: Ogre Startup Sequence"]] | Chapters 1-2: Engines and Tools \\ [[http://prezi.com/u31p5wmghkek/game-engine-runtime-architecture/?auth_key=08487feedd200c7535230a75ca3354b2eb29549e&kw=view-u31p5wmghkek&rc=ref-11168250|Engine Diagram]]| | | 02 (JAN 21-25) | [[Lab2|"LAB2: Applying Math (Chapter 4)"]] | Chapter 7: Game Loop and Time | | | 03 (JAN 28-01) | [[Lab3|"LAB3: Resources"]] (Chapter 6) | Chapter 5: Engine Support Systems | PROB1 | | 04 (FEB 04-08) | [[Lab4|"LAB4: Human Interface Devices (Chapter 8)"]] | Guest: Andie Nordgren (Technical Producer CCP) | | | 05 (FEB 11-15) | [[http://www.youtube.com/user/RUClassGEDE|Engine Presentations]] | Chapter 10: Rendering | PRESENT | | 06 (FEB 18-22) | [[Lab5|"LAB5: Scene Graph"]] | Guest: Dr. Harri Darri (Programmer, CCP) | | | 07 (FEB 25-01) | Catch Up on Labs | No Class | PROB2 | | 08 (MAR 04-08) | [[Lab6|"LAB6: Programmable Shaders"]] | Chapter 10: Rendering and Shader Programming | | | 09 (MAR 11-15) | [[Lab7|"LAB7: Collision and Physics"]] (Chapter 12) | Guest: Páll Ragnar (Graphics Programmer, CCP) | | | 10 (MAR 18-22) | Final Status Meetings | Chapter 14: Runtime Gameplay Foundation | PROB3 | | 11 (MAR 25-29) | Final Project Work | EASTER BREAK | | | 12 (APR 01-05) | EASTER BREAK | Guest: Claudio Pedica (Scientist, RU) | | | 13 (APR 08-12) | Final Demos | Exam Review | PROJECT | ^ ^^^^ =====Attendance====== Please note that there is a 70% attendance requirement. You must pass this attendance limit in order to take the exam. Please inform the instructor if this is hard for you for some reason such as scheduling conflicts or sick leave. =====Participation Grade===== Participation grade will be based on: (1) Attendance, (2) Completing online quizzes, (3) Completing lab projects, (4) Participation in online discussion. To the extent possible, this will also be based on how actively the student participates in in-class discussion (based on instructor's subjective assessment). UPDATE: Since online quizzes were not regularly provided and online discussion was not very active, the base participation grade will be calculated as 10 * (0.5*(Labs_completed/7) + 0.5*(Lectures_attended/10)). The teacher can then add possible bonus points to this base grade based on a subjective evaluation of the student's participation throughout the semester (into which the online forum may factor). =====Grading===== ^Part of Course^Total Weight^ |Participation| 10%| |Problem Sets | 15%| |Engine Presentation| 10%| |Final Project| 35%| |Final Written Exam| 30%| ^ Total 100% ^^