3d video games

A.Y. 2020/2021
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
ATTENTION: this information is subject to change (the course takes place starting from February 2021).
Reference is made to university announcements.

In the emergency phase, teaching is carried out through live video lessons with the Zoom platform.
The links to the videolectures are provided, lesson by lesson, in the Ariel platform.

The written exam is carried out in written mode on the Moodle SEB platform, and consists of a sequence of small quizzes
(closed, open, solving small exercises) covering the entire program.

Per more info:
Course syllabus
* Lect.01: Introduction: 3D games

* Lect.02: Math for 3D games: Points, Vector, Versors
* Exerc.A: Math for 3D games: exercises, examples
* Lect.03: Math for 3D games: Geometric Transforms
* Lect.04: Math for 3D games: 3D Rotations
* Lect.05: Math for 3D games: Quaternionic based representations

* Lect.06: The scene graph

* Lect.07: 3D Game physics: dynamics and integrators
* Lect.08: 3D Game physics: position based dynamics
* Exerc.B: 3D Game physics: sandbox on dynamics
* Lect.09: 3D Game physics: collision handling and proxyes
* Exerc.C: 3D Game physics: sandbox on collisions

* Exerc.D: Particle systems

* Lect.10: Geometric representations in 3D Games

* Lect.11: Asset pipeline production in 3D Games

* Lect.12: Textures in 3D Games: as assets
* Lect.13: Textures in 3D Games: normal maps

* Lect.14: Animations in 3D Games: kinematics
* Lect.15: Animations in 3D Games: blend shapes
* Lect.16: Animations in 3D Games: skeletal aniamtions
* Exerc.E: Animations in 3D Games: sandbox

* Lect.17: Bridge lecture: Audio in 3D games
* Lect.18: Bridge lecture: Networking in 3D games
* Lect.19: Bridge lecture: AI in 3D games
* Lect.20: Bridge lecture: Lighting and materials
* Exerc.F: Bridge lecture: Recap of rendering techniques


* Each Lecture or Exercitation is approximatively 2 hour long (including breaks).

* Exercitations are structured 40 min of introduction followed by 80 min of practical exercises (incuding with the support of game engines).

* The "bridge" lectures are bird-eye view of entire topics, which connect the contents of this course with other courses.

* Game of the Week: every week, a "Game of the week" unofficial minilecture will be offered after the normal lectures. In it, a existing video-game will be briefly analyzed, which "abuses" or contradict the traditional use of the mechanism presented of the last lectures. (this is completely off-schedule, fully optional, and not a subject of the exam)
Prerequisites for admission
No formal prerequisite is required.

A background in Math (linear algebra), Physics (Newtonian dynamics), programming (imperative, OO), and Computer Graphics is STRONGLY advised.
Teaching methods
Frontal lessons.

In some lecture, in order to make examples and demonstrations, an existing Game Engine will be used. It is recommended to attend the lectures with a working laptop.
Teaching Resources
Slides of each lesson are provided (see on the Ariel platform)

Suggested textbooks (not strictly required):

* for the math part: "Mathematics for programming 3D games and computer graphics" - Eric Lengyel - ISBN: 1435458869

* for the physics and animation parts: "Game Engine Architecture (any edition is fine)" - Jason Gregory - ISBN: 1138035459
Assessment methods and Criteria
The exam is carried out in written mode on the Moodle SEB platform, and consists of a sequence of small quizzes screening the knowledge and understanding of the entire course. The exam is completed with a brief oral exam. It is possible (but not necessary) to present a small project agreed with the professor (this is offered as a support for the student and no extra mark is awarded).
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Tarini Marco
Tuesday 14:30-17:30 (or by appointment)
Department (Via Celoria 18) -- Office 4006