======T-637-GEDE, Game Engine Architecture, Spring 2012====== ===== 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) * **Lectures/Discussion: ** Tuesdays 8:30-10:05 (M121) * **Labs (not always, check schedule): ** Thursdays 14:45-15:40 (M106) * **Practical/Demos: ** Fridays 10:20-11:55 (M121) ===== 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, collision, physics 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. ===== 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 * Sketch the typical components of a runtime game architecture * Use C++ development tools, profiling tools and version control tools * Apply best practice in object oriented C++ development * Design and implement low-level engine systems that deal with start-up/shut-down, memory management, complex data types, engine configuration, file system, game resources, game loop, rendering loop and interface devices * Apply 3D math, covering points, vectors, matricies and quaternions, for solving game world problems * Explain the core functionality of the rendering engine and animation system * Solve basic collision detection and use rigid body physics middleware * Explain the anatomy of a game world, game objects, data-driven game engines and the general construction of a runtime gameplay foundation system ===== Assignments ===== During the semester, students should complete four problem sets, one topical presentation and a final project. Problem sets can be done in pairs, and the presentation and final project in groups up to 4 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-12-1:gede-problem1.pdf|PROB1}}|First Problem Set| Chapters 1-3 |Fri Jan 20|Tue Jan 31|5%| | |{{:public:t-gede-12-1:gede-problem2.pdf|PROB2}}|Second Problem Set| Chapter 5 |Mon Feb 6|Tue Feb 14|5%| | |[[PRESENT]]|Presentation| Existing Game Engines |Tue Jan 17|Fri Feb 17|10%| | |{{public:t-gede-12-1:gede-problem3.pdf|PROB3}}|Third Problem Set| Weeks 6-8|Thu Mar 8|Fri Mar 16|5%| | |{{public:t-gede-12-1:gede-problem4.pdf|PROB4}}|Fourth Problem Set| Weeks 9-10|Mon Mar 26|Wed Mar 28|5%| | |[[PROJECT]]|Final Project| "New" Game Engine |Fri Feb 24|Fri Mar 30|30%| | ^ Total 60% ^^^^^^^ ===== 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=gede2012|Game Engine Architecture 2012]]| ^ ^^^ ===== Tentative Schedule ===== ^Week^Lectures ^Labs^ Due ^ | 01 (JAN 09-13) | Chapters 1-2:\\ {{:public:t-gede-12-1:gede-introduction.pdf|Introduction}}\\ {{:public:t-gede-12-1:gede-tools.pdf|Tools}} | [[http://www.maximumpc.com/article/features/doom_dunia_visual_history_3d_game_engines|Visual History of 3D Game Engines]]\\ [[BuildingOgreFromScratch|Building an Ogre App from the Ogre source files]] | | | 02 (JAN 16-20) | Chapter 3:\\ {{:public:t-gede-12-1:gede-engineeringa.pdf|Software Engineering Part A}}\\ {{:public:t-gede-12-1:gede-engineeringb.pdf|Software Engineering Part B}} | | | | 03 (JAN 23-27) | Chapter 5:\\ {{:public:t-gede-12-1:gede-supporta.pdf|Engine Support Systems Part A}}\\ {{:public:t-gede-12-1:gede-supportb-updated.pdf|Engine Support Systems Part B (Updated)}} | [[Lab 1|Lab 1: Getting Started with Ogre 3D]] | | | 04 (JAN 30-03) | Chapter 6:\\ {{:public:t-gede-12-1:gede-resourcesfilesystema.pdf|Resources and File System Part A}}\\ {{:public:t-gede-12-1:gede-resourcesfilesystemb.pdf|Resources and File System Part B}} | [[Lab 2|Lab 2: Getting Meshes and Materials into Ogre 3D]] | PROB1 | | 05 (FEB 06-10) | Chapter 7:\\ {{:public:t-gede-12-1:gede-gamelooprealtimea.pdf|The Game Loop and Real-Time Simulation Part A}}| | | | 06 (FEB 13-17) | Chapter 7:\\ {{:public:t-gede-12-1:gede-gamelooprealtimeb.pdf|The Game Loop and Real-Time Simulation Part B}} | [[Lab 3|Lab 3: Updating the Scene Every Frame]] | PROB2\\ PRESENT | | 07 (FEB 20-24) | Chapter 8:\\ {{:public:t-gede-12-1:gede-humaninterfacedevices.pdf|Human Interface Devices}} | [[Lab 4|Lab 4: Unbuffered and Buffered Input]] | | | 08 (FEB 27-02) | Chapter 10:\\ {{public:t-gede-12-1:gede-renderingenginea.pdf|The Rendering Engine Part A}} | Define Final Project | | | 09 (MAR 05-09) | Chapter 10:\\ {{public:t-gede-12-1:gede-renderingengineb.pdf|The Rendering Engine Part B}} | | | | 10 (MAR 12-16) | TUESDAY GUEST: Harri Darri (CCP) \\ {{public:t-gede-12-1:gede-guest-harri.pdf|Networks, Protocols and Distributed Systems}} | Final Project Status Meetings ([[http://signupschedule.com/hanneshogni|sign up here]]) | | | 11 (MAR 19-23) | TUESDAY GUEST: Páll Pálsson (CCP)\\ {{public:t-gede-12-1:gede-guest-pall.pdf|Shaders in EVE Online}}\\ FRIDADY GUEST: Robert Galanakis (CCP)\\ [[http://tech-artists.org/downloads/Misc/RobGalanakis-Tools-and-Pipeline-Game-Developments-Underbelly.pdf|The Pipline: Game Development's Underbelly]] | Review of Problem Set 3 | | | 12 (MAR 26-30) | {{public:t-gede-12-1:gede-examoverview.pdf|Review for Exam}}\\ Final Project Presentations | | PROJECT | ^ ^^^^ =====Attendance====== Please note that there is a 70% attendance requirement for the Tuesday and Friday classes. 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. =====Grading===== ^Part of Course^Total Weight^ |Participation| 10%| |Problem Sets | 20%| |Topical Presentation| 10%| |Final Project| 30%| |Final Written Exam| 30%| ^ Total 100% ^^