3d video games

A.Y. 2019/2020
Overall hours
Learning objectives
The objective of the course is to provide an in-depth understanding of the techniques commonly adopted by 3D video-games (ie games set in virtual 3D worlds) in order to tackle the numerous challanges that must be solved during their execution; this includes the mathematical background, the data-structures, the algorithms, and the related technical terminology. The ultimate goal is to provide the concepts at the basis of the development of a modern 3D game-engine, which are also necessary for the correnct use of existing tools of this type.
Expected learning outcomes
At the end of the course, the students will have learned the techniques underlying the solutions ubiquitously adopted by modern 3D video games. In particular, they will have acuqired familiarity with the mathematical background, the algorithms and the data structures employed to tackle the challenges that are faced by a 3D video-game, including: the representation of 3D objects and virtual environments, the representation of their appearance, the simulation of their physical evolution, the reproduction of 3D computer animations (scripted or procedural) and 3D visual effects. Students are also provided with notions suitable to bridge the contents imparted by this course to the relevant ones offered by other courses, such as those related to: real-time audio, advanced real-time rendering, artificial intelligence for virtual agents, and networking. Some of the contents covered in the teaching are reinforced through practical exemplification with existing game-dev tools or game-engines.
Course syllabus and organization

Single session

Lesson period
Second semester
Course syllabus
Lessons 0 and 1 introduce the course and *briefly* retrace some basic concepts of linear algebra. Lessons 2 and 3 specialize these concepts by providing the mathematical bases useful in the specific context of 3D videogames. Lessons 4 to 12 delve into the mechanisms underlying the function of a 3D videogame, with particular attention to algorithmic aspects, the employed assets, and the related data-structures (including a few notes on the techniques for building these assets in production pipelines). Lessons 13 to 17 bridges this course with the topics covered in some other relevant course: in particular, the courses Sound in Interaction, Real Time Graphics Programming, Mobile Games, and Artificial intelligence for Video Games.

* Lecture 0: Introduction: 3D videogames. Game Dev teams. 3D game assets.

* Lecture 1: Math: Points, Vectors, Versors algebra [recap]

* Lecture 2: Math: Transforms in 3D games

* Lecture 3: Math: 3D Rotations: representations, operations

* Lecture 4: Scene graph: data structures, uses.

*** Lecture 5: Game Physics: dynamics [metodi di integrazione, approcci ai vincoli]

** Lecture 6: Game Physics: collisions [detection, response]

* Lecture 7: Particle Systems in 3D Games

* Lecture 8: 3D Models in Games

** Lecture 9: Textures in 3D Games

* Lecture 10: 3D Animations in Games: kinematics

* Lecture 11: 3D Animations in Games: blend shapes

** Lecture 12: 3D Animations in Games: skeletal animations

* Lecture 13: Sound in 3D Games

* Lecture 14: Networking for 3D Games

* Lecture 15: AI/IA for 3D games

* Lecture 16: Rendering in games: lighting & materials

* Lecture 17: Rendering in games: popular techniques

* Lecture 18: Concluding remarks.

(each asterisk roughly corresponds to 2 hours of lecture)
Prerequisites for admission
Basic knowledge of linear algebra, algorithms, and an object-oriented programming language are required.
Computer Graphics course is strongly recommended .
Teaching methods
Most of the topics are exposed through lectures. Some topics (such as physical simulation, or screen space effects) are exemplified through code writte in the classroom. Game engines and asset creation tools will be used to exemplify some of the content.
Teaching Resources
The web-page of the course provides lecture slides and additional material: https://mtarini3dvg.ariel.ctu.unimi.it/

The following textbooks can help studying for this course:

* Game Engine Architecture (any edition) Jason Gregory

* Mathematics for 3D Game Programming and Computer Graphics (any edition) Eric Lengyel

A more detailed description of the content of the two texts and a list of additional materials can be found on the indicated site (lesson 0)
Assessment methods and Criteria
Written and oral exam. Upon request, the exam can be completed with an project agreed with the lecturer.

The written test, lasting 2 hours, consists of a review of short questions on each of the covered topics, with one or two questions for each lesson. Students passing the written exam access the oral exam, which covers the entire program. The final mark is the average of the two tests.

The project is optional and is agreed with the teacher. It can consist of the implementation, possibly integrated with an existing project, which puts in practice one of the covered topics, or a in-depth study of a research topic related to one of the topics, to be presented in a short seminar.

The evaluation is aimed at verifying the full understanding of the topics covered in the course, the ability to identify existing solutions suitable to face a given technical challenge in the development of a 3D video games, the acquisition of the technical vocabulary of the field, and the degree of familiarity achieved by the student in the use of the relative mathematical and algorithmic tools.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Tarini Marco
Educational website(s)
Tuesday 14:30-17:30 (or by appointment)
Department (Via Celoria 18) -- Office 4006