Programming Game Engines ITP 485 (4 Units)

Similar documents
Internet Web Technologies ITP 104 (2 Units)

Introduction to Information Technology ITP 101x (4 Units)

Digital Forensics ITP 375 (3 Units)

Enterprise Network Design ITP 499 (3 Units)

Database Systems: Concepts, design, and implementation ISE 382 (3 Units)

ITP489 In-Memory DBMS for Real Time Analytics

ITP454 Enterprise Resource Planning, Design, and Implementation

ITP454 Enterprise Resource Planning, Design, and Implementation

Introduction to Programming System Design CSCI 455x (4 Units)

Pipelines for Games and Interactives CSCI 281, (3 Units)

CSCI 201L Syllabus Principles of Software Development Spring 2018

Recommended Prior Courses: CTAN 462, Visual Effects, or CTAN 452, Introduction to 3D Computer Animation

CSCE 441 Computer Graphics Fall 2018

IOM Business Database Systems

CS535: Interactive Computer Graphics

CSE 167: Introduction to Computer Graphics. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2016

IML 300: Reading and Writing the Web

EECE.2160: ECE Application Programming Spring 2019

3D Design and Prototyping ITP 415 (2 Units)

CSC 111 Introduction to Computer Science (Section C)

EECE.2160: ECE Application Programming Spring 2017

CoSci 440 SYLLABUS Programming in C++ INSTRUCTOR Mari Rettke cell SECTION : and 13345

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

CSCI 281 Pipelines for Games (4 units) Spring Pipelines for games, CSCI 281, 4 units EGG 108, Monday 10:00 a.m. 12:50 p.m.

CMPUT 391 Database Management Systems. Fall Semester 2006, Section A1, Dr. Jörg Sander. Introduction

Computer Science Technology Department

CSE 167: Introduction to Computer Graphics. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013

Lecture 0 of 41: Part A Course Organization. Introduction to Computer Graphics: Course Organization and Survey

CS 241 Data Organization using C

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

CISC 3130 Data Structures Spring 2018

Rochester Institute of Technology Golisano College of Computing and Information Sciences Department of Information Sciences and Technologies

COLLEGE OF DUPAGE CIS 2542 Advanced C++ with Data Structure Applications Course Syllabus

ce Hours: MW 12:30 PM 1:30 PM (till 12/12/18), or by appointment

INFS 2150 (Section A) Fall 2018

ESET 369 Embedded Systems Software, Fall 2017

NOTE: This syllabus is subject to change during the semester. Please check this syllabus on a regular basis for any updates

CS380: Computer Graphics Introduction. Sung-Eui Yoon ( 윤성의 ) Course URL:

Trina Gregory. Background. Contact

Course Producer. Prerequisites. Textbooks. Academic integrity. Grading. Ming Chen. Same office hours as TA. The Hobbit: The Desolation of Smaug (2013)

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

Lahore University of Management Sciences. CS 452 Computer Graphics

ESET 349 Microcontroller Architecture, Fall 2018

San Jose State University College of Science Department of Computer Science CS185C, Introduction to NoSQL databases, Spring 2017

CIS 581 Interactive Computer Graphics

CSCI-6962 Advanced Computer Graphics

GET 433 Course Syllabus Spring 2017

AE Computer Programming for Aerospace Engineers

Course and Contact Information. Course Description. Course Objectives

Game Mathematics. (12 Week Lesson Plan)

ISM 324: Information Systems Security Spring 2014

In this course, you need to use Pearson etext. Go to "Pearson etext and Video Notes".

LIS 2680: Database Design and Applications

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

CSCI 528: OBJECT ORIENTED PROGRAMMING, Fall 2015

Course Syllabus. Instructor Availability Outside of Class: (To be completed by instructor) Geometry for Computer Graphics

B. Subject-specific skills B1. Problem solving skills: Supply the student with the ability to solve different problems related to the topics

MISSION VALLEY REGIONAL OCCUPATION PROGRAM COMPUTER ANIMATION COURSE OUTLINE

Building scalable 3D applications. Ville Miettinen Hybrid Graphics

San José State University Department of Computer Science CS049J, Programming in Java, Section 2, Fall, 2016

Computer Graphics Disciplines. Grading. Textbooks. Course Overview. Assignment Policies. Computer Graphics Goals I

San José State University Computer Science Department CS49J, Section 3, Programming in Java, Fall 2015

Introduction to Computer Graphics. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2011

University of Maryland at College Park Department of Geographical Sciences GEOG 477/ GEOG777: Mobile GIS Development

School of Computing and Information Sciences. Course Title: Mobile Application Development Date: 8/23/10

CSCD18: Computer Graphics. Instructor: Leonid Sigal

INF 315E Introduction to Databases School of Information Fall 2015

Database Design and Management - BADM 352 Fall 2009 Syllabus and Schedule

A: 90% - 100% B: 80% - <90% C: 70% - <80% D: 60% - <70% F: < 60% Important Dates:

Time and Location: T 6:30 PM to 9:20 PM SAL 127 (Section 1, 28758) Th 6:30 PM to 9:20 PM SAL 127 (Section 2, 28759)

Course and Contact Information. Course Description. Course Objectives

CASPER COLLEGE COURSE SYLLABUS MSFT 1600 Managing Microsoft Exchange Server 2003 Semester/Year: Fall 2007

Course Syllabus - CNT 4703 Design and Implementation of Computer Communication Networks Fall 2011

CISC 3130 Data Structures Fall 2018

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing

CIS 581 Interactive Computer Graphics (slides based on Dr. Han-Wei Shen s slides) Requirements. Reference Books. Textbook

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing

Oklahoma State University Institute of Technology Face-to-Face Common Syllabus Fall 2017

In this course, you need to use Pearson etext. Go to "Pearson etext and Video Notes".

Advanced Client-Side Web Programming CSCI 491/595 Syllabus Fall 2018

(1) It is your responsibility to drop the class; failure to drop the class in a timely manner could result in a W or F on your record.

MWF 9:00-9:50AM & 12:00-12:50PM (ET)

Object Oriented Programming

San José State University Computer Science Department CS157A: Introduction to Database Management Systems Sections 5 and 6, Fall 2015

You must pass the final exam to pass the course.

CSE (Computational Geometry) SYLLABUS

(1) It is your responsibility to drop the class; failure to drop the class in a timely manner could result in a W or F on your record.

MGMT 4336 Networks & Data Communication Section D10

Overview. Computer Graphics CSE 167

Syllabus. Computer Science Information Technology 975. Information Storage and Management for Computer Networks

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

CIS 408 Internet Computing (3-0-3)

Optimized C++ o Websites and handouts Optional: Effective C++, Scott Meyers. Fall 2013

Computer Science Technology Department

ITT Technical Institute. IT217P Programming in C++ II Onsite Course SYLLABUS

The Linux Command Line: A Complete Introduction, 1 st ed., by William E. Shotts, Jr., No Starch Press, 2012.

San Jose State University College of Science Department of Computer Science CS185C, NoSQL Database Systems, Section 1, Spring 2018

Game Development for

PELLISSIPPI STATE COMMUNITY COLLEGE MASTER SYLLABUS 3D MODELING & ANIMATION VPT 2165

CS 0449 Intro to Systems Software Fall Term: 2181

Transcription:

Programming Game Engines ITP 485 (4 Units) Objective This course provides students with an in-depth exploration of 3D game engine architecture. Students will learn state-of-the-art software architecture principles in the context of game engine design, investigate the subsystems typically found in a real production game engine, survey some engine architectures from actual shipping games, and explore how the differences between game genres can affect engine design. Students will participate in individual hands-on lab exercises, and also work together like a real game development team to design and build their own functional game engine by designing and implementing engine subsystems and integrating 3 rd party components. Concepts Engine subsystems including rendering, audio, collision, physics and game world models. Large-scale C++ software architecture in a games context. Tools pipelines for modern games. Prerequisite CSCI-102 and ITP-380 Lecture 2 hrs/week Lab 2 hrs/week Course Structure Textbooks Lectures given on Tuesday. Project assignments and some supplemental lectures given on Thursday; instructor and/or TA available for questions and help during office hours, Thursday lab sessions, via email, and by appointment. Required: 1. Jason Gregory. Game Engine Architecture. AK Peters. ISBN 978-1-56881-413-1. Recommended: 2. Eric Lengyel. Mathematics for 3D Game Programming & Computer Graphics. Charles River Media. ISBN 978-1-58450-277-7. 3. Gregory Junker. Pro Ogre 3D Programming. Apress. ISBN 978-1-59059-710-1. 4. John Lakos. Large-Scale C++ Software Design. Addison-Wesley Professional. ISBN 978-0-20163-362-7.

Grading Final grade is based upon the student s score on individual labs and assigned problems, the midterm and final exams, and the grades earned on a multi-lab team-based project. For the team project, it is especially important that students display their names on all documentation and source code you personally produce, so that the instructor will know which student contributed which material. Individual Labs and Assigned Problems 20% Midterm Exam 20% Final Exam 20% : Individual Contribution 20% : Overall Project Grade 20% TOTAL POSSIBLE 100% Policies It is the student s responsibility to complete both individual and team-based assignments on or before deadlines as set by the instructor. Before logging off a computer, students must ensure that they have submitted to Subversion any work created during the class or lab session. Any work saved to the local computer s disk drive may be erased after restarting the computer. ITP is not responsible for any work lost. ITP offers Open Lab use for all students enrolled in ITP classes. These open labs are held beginning the second week of classes through the last week of classes. Please contact your instructor for times and days for the current semester. Academic Integrity Students with Disabilities - The use of unauthorized material, communication with fellow students during an examination, attempting to benefit from the work of another student, and similar behavior that defeats the intent of an examination or other class work is unacceptable to the University. It is often difficult to distinguish between a culpable act and inadvertent behavior resulting from the nervous tension accompanying examinations. When the professor determines that a violation has occurred, appropriate action, as determined by the instructor, will be taken. - Although working together is encouraged, all work claimed as yours must in fact be your own effort. Students who plagiarize the work of other students will receive zero points and possibly be referred to Student Judicial Affairs and Community Standards (SJACS). - All students should read, understand, and abide by the University Student Conduct Code listed in SCampus, and available at: http://www.usc.edu/student-affairs/sjacs/nonacademicreview.html - Any student requesting academic accommodations based on a disability is required to register with Disability Services and Programs (DSP) each semester. A letter of verification for approved accommodations can be obtained from DSP. Please be sure the letter is delivered to me (or to your TA) as early in the semester as possible. DSP is located in STU 301 and is open 8:30 a.m. - 5:00 p.m., Monday through Friday. The phone number for DSP is (213) 740-0776. - 2 -

Programming Game Engines ITP 485 (4 Units) Course Outline Week 1 Introduction - Course overview - What is a game? - What is a game engine? - Engine differences between game genres - Survey of run time engine subsystems - Survey of tools and the asset pipeline - Course text: 1.2 1.7 Pongre 1: One-Dimensional Bouncing Ball - Create project by copying template - Create simple bouncing ball (Ogre head) in 1D Week 2 Tools of the Trade - Version control and Subversion - Microsoft Visual Studio tips and tricks - Profiling tools - Memory leak / corruption detection - Other tools - Course text: 2.1 2.5 Pongre 2: Bouncing, Paddles and Basic Gameplay - Create simple box meshes for paddles - Use Ogre s OIS human input device API to move paddles - Detect collisions with paddles and bounce ball - End/reset game if ball misses one of the paddles Week 3 3D Math for Games (Part 1) - Points, vectors and Cartesian coordinates - Vector operations, dot and cross product - 2D and 3D matrices, homogeneous coordinates - Hierarchical coordinate frames, change of basis - Comparison of rotational representations - 3 -

- Course text: 4.1 4.5 3D Math Problems - Work some problems, see some applications, get some practice Pongre 3: Congratulations, It s a Game! - Add HUD, scoring, and personalization of your choice Week 4 3D Math for Games (Part 2) - Lines, line segments and rays - Spheres - Planes - Hardware-accelerated vector math with SIMD - Random number generation - Course text: 4.6 4.8 3D Math Problems - Work more problems, see more applications, get more practice - Teams generate simple design doc and rough project schedule Week 5 Fundamentals of Software Engineering for Games - C++ best practices - Data, code and memory - Memory allocation and management - Errors, exceptions and assertions - Data structures for games - Strings and hashed string ids - Course text: 3.1 3.3, 5.2 5.4 - RECOMMNEDED: Lakos: Ch. 0; Ch. 5 sections 5.1 5.3, 5.7 Week 6 Rendering and the Graphics Pipeline - Triangle meshes and tessellation - Coordinate spaces and rendering transformations - Lighting, color and texturing - The virtual camera and projection - The rendering pipeline - Tools stage - Asset conditioning stage - Application stage: Visibility determination and primitive submission - 4 -

- Course text: 10.1 (review), 10.2.1 10.2.3, 10.2.7.4 10.2.7.5 Week 7 Advanced Shading and Visual Effects - The rendering pipeline (continued) - Geometry processing and rasterization stages: GPU architecture - Rendering engine architecture - Introduction to global illumination and programmable shaders - Particle effects, overlays and decals - Tools for debugging and development - Course text: 10.2 (except 10.2.1 10.2.3, 10.2.7.4 10.2.7.5), 10.3, 10.4, 9.1 9.8 Week 8 MIDTERM EXAM - Midterm review and preparation - Review prior weeks readings MIDTERM EXAM during lab hours Week 9 Character Animation - Fundamentals of character animation - Skinning - Blending, post-processing and compression - Animation system architecture and pipeline - Ogre s animation system - Introduction to player mechanics - Interfaces between game characters and animation - Course text: 11.1 11.4 (review), 11.5 11.12 - Ogre Manual (online): Section 8 - RECOMMENDED: Junker: Chapter 9 Week 10 Collision and Rigid Body Dynamics - Collision - Collision detection basics - The Gilbert-Johnson-Keerthi (GJK) algorithm - Typical collision system architectures - Optimization: Broad phase, narrow phase, spatial subdivision - The prune and sweep algorithm - Rigid Body Dynamics - 5 -

- Review of point mass linear dynamics - Angular dynamics, moment of inertia - Collision response - Numerical integration - Ray and sphere casting - Typical Collision/Physics API: ODE, PhysX, Havok - Course text: 12.3 12.5 Week 11 Gameplay Foundation Systems - Introduction to gameplay systems - World editors - Components of the gameplay foundation layer - Runtime object model architectures - Course text: 13.1 13.4, 14.1 14.2 Week 12 Engine Subsystem Integration - Review: The game loop - Review: Time in games - Updating a multi-object simulation in real time - Integrating rendering, physics and animation into the game loop - Multiprocessor game loops - Course text: 7.1 7.5 (review), 7.6, 14.6, 12.5 Week 13 The File System, Resources and Streaming - File system APIs for game engines - The resource manager - World chunk data formats - Streaming - Engine start-up, shut-down and configuration - Course text: 6.1 6.2, 14.3 14.4, 5.1, 5.5-6 -

Week 14 Rounding Out the Game Object Model - Object references and queries - Events and message passing - High-Level Game Flow - Other gameplay systems (time permitting) - Course text: 6.1 6.2, 14.3 14.4, 5.1, 5.5 Week 15 Wrap-Up - Overflow topics as necessary - Getting into the game industry resumes, interviews, demos - Life in the game industry Team Labs - Teams perform final integration and add finishing touches - Code freeze one day prior to Gold Master Exam Week Final Exam and Team Game Project Due - 7 -