======T-637-GEDE, Game Engine Architecture, Spring 2016====== ===== Basic Info ===== * **Instructor: ** [[http://www.ru.is/kennarar/hannes|Hannes Högni Vilhjálmsson]], Marinó Vilhjálmsson * **Contact: ** Hannes: Office in Venus floor 2, telephone 559-6323, and email hannes[ ]ru.is (open office hours) * **Contact: ** Marinó: marinov10[]ru.is * **Theory/Lectures: ** Mondays 14:00 - 15:40 (M124) and Fridays 8:30-10:05 (M124) * **Practical/Labs: ** Thursdays 8:30-10:05 (group 1) and Thursdays 10:20-11:55 (group 2) (M102) * **Online Forum: ** [[http://piazza.com/ru.is/spring2016/t637gede/home|Piazza Course Page]] * **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, **Second Edition** published by AK Peters in 2014. 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 and animation 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 should be done individually, but 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-16-1:problemset1.pdf|PROB1}}|First Problem Set| Weeks 1-3 | FEB 1 | FEB 8 |5%| | |[[PRESENT]]|Presentation| Existing Game Engine | JAN 22 | FEB 15 |10%| | |{{:public:t-gede-16-1:problemset2.pdf|PROB2}}|Second Problem Set| Weeks 4-8 | MAR 7 | MAR 14 |5%| | |PROB3|Review Quizzes in MySchool | All Weeks | APR 6 | APR 22 |2%| | |[[PROJECT]]|Final Project| "New" Game Engine technology| FEB 15 | APR 4 |35%| | ^ ^ ^ ^ ^ Total^ 57% ^ ^ ===== Lab Projects ===== The practical classes on Thursdays will be in the form of self-guided lab projects with assistance. The focus will be on C++ development using the Ogre 3D graphics engine and related game libraries. These projects will not be graded in a traditional sense, but turning them in to the lab instructor gives you **lab points** (zero, half or full), which in total counts towards 8% of your final grade. ===== Online Quizzes ===== Throughout the semester the instructor may provide several 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. ===== Discussion System ===== Please use this course discussion system for posting questions regarding labs, problems or projects - or in fact anything you wish related to the course - rather than sending us emails. That way we can build a shared repository of useful questions/answers (you can of course still send us emails, but consider first whether you can post things here instead). [[http://piazza.com/ru.is/spring2016/t637gede/home|Piazza Course Page]] ===== Tentative Schedule ===== ^Week^Lecture (Mon)^Lab (Thu)^Lecture (Fri)^ Due ^ | 01 (JAN 11-17) | Chapter 1: Introduction / Engines\\ [[http://www.maximumpc.com/doom-to-dunia-a-visual-history-of-3d-game-engines/|Visual History of 3D Game Engines]] | [[LAB1|"LAB1: Ogre Startup Sequence"]] | | | | 02 (JAN 18-24) | Chapter 1: Introduction / Engines | [[LAB2|"LAB2: Making a Scene"]] | Chapter 2: Tools \\ + Assign PRESENT project | | | | 03 (JAN 25-31) | Chapter 4: 3D Math for Games | [[LAB3|"LAB3: Applying Math"]] | Chapter 4: 3D Math for Games | | | 04 (FEB 01-07) | Chapter 7: Game Loop and Time | [[LAB4|"LAB4: Resources"]] | Chapter 5: Engine Support Systems (A) | | | 05 (FEB 08-14) | Chapter 5: Engine Support Systems (B) \\ (Chapter 3: Software Engineering) | Problem Set 1 Review | Chapter 8: Human Interface Devices (A) | PROB1 | | 06 (FEB 15-21) | Engine Presentations | [[LAB5|"LAB5: Human Interface Devices"]] | Chapter 8: Human Interface Devices (B) | PRESENT | | 07 (FEB 22-28) | Chapter 6: Resources (A) | [[LAB6|"LAB6: Scene Graph"]] | Chapter 6: Resources (B) | | | 08 (FEB 29-06) | Chapter 10: Rendering (A) | [[LAB7|"LAB7: Programmable Shaders"]] | Chapter 10: Rendering (B) | | | 09 (MAR 07-13) | Chapter 10: Rendering (C) | "Catching-Up" Lab Session | Chapter 10: Rendering (D) | | | 10 (MAR 14-20) | Guest: Gunnar Steinn (Aldin Dynamics) | [[LAB8|"LAB8: Particle Systems"]] | Guest: Harri Darri (Autodesk) | PROB2 | | 11 (MAR 21-27) | Guest: Steve and Logi (CCP Games) | EASTER | EASTER | | | 12 (MAR 28-03) | EASTER | [[LAB9|"LAB9: Physics"]] | Chapter 14: Gameplay Foundation Systems | | | 13 (APR 04-10) | Final Project Demos | Open | Exam Review | PROJECT | ^ ^^^^^ =====Attendance====== Please note that there is a 50% attendance requirement for lectures. 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) Participation in online discussion and (3) Advanced lab work (bonuses and independent stuff). 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). =====Grading===== ^Part of Course^Total Weight^ |Participation| 5%| |Labs | 8% | |Problem Sets | 12%| |Engine Presentation| 10%| |Final Project| 35%| |Final Written Exam| 30%| ^ Total 100% ^^