3d Video Games

A.Y. 2023/2024
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.
Single course

This course can be attended as a single course.

Course syllabus and organization

Single session

Lesson period
Second semester
Course syllabus
* Lecture 01: Introduction to 3D games.

PART 1: Mathematics.

* Lecture 02: Mathematics for 3D games: points, vectors, versors.
* Lecture 03: Math for 3D games: geometric transformations.
* Lecture 04: Mathematics for 3D games: 3D rotations.
* Lecture 05: Mathematics for 3D games: quaternion-based representations.
* Lecture 06: Mathematics for 3D games: various examples of application.

* Lecture 07: The Scene-Graph

PART 2: Physics.

* Lecture 08: 3D Game physics: simulation of Newtonian dynamics.
* Lecture 09: 3D Game physics: integration systems
* Lecture 10: 3D Game physics: position based dynamics
* Lecture 11: 3D Game physics: collision management
* Lecture 12: 3D Game physics: sandbox on collisions

* Lecture 13: particle systems

PART 5: 3D models.

* Lecture 14: Geometric representations for 3D games.
* Lecture 15: Textures for 3D Games (including normal maps).
* Lecture 16: Representation of Materials
* Lecture 17: Asset production pipelines for 3D Games.

PART 6: Computer Animation

* Lecture 18: Animations in 3D Games: kinematics
* Lecture 19: Animations in 3D Games: blend-shapes.
* Lecture 20: Animations in 3D Games: skeletal animations


* Lecture 21: Bridge lesson: audio in 3D games.
* Lecture 22: Bridge lesson: networking in 3D games.
* Lecture 23: Bridge lesson: AI in 3D games
* Lecture 24: Bridge lesson: review of rendering techniques for 3D games.

(Each topic is approximately 2 hours in length).


(*) "Bridge" lectures are a bird-eye view of entire topics, which are intended to connect the content of this Course with other Course in the degree program.

=== After-class extracurricular activities:

Each lecture is followed by a brief extracurricular activity, lasting no more than about 1h. This is a small activity *entirely optional*, offered to interested students, intended as recreation rather than work. The covered topics are not, in any way, part of the examination test.

Two lines are alternated (each of which has, therefore, a weekly cadence):

* "Game of the Week": an existing video game is shown and briefly analyzed, that "abuses" or contradicts the traditional use of a basic mechanism presented in the lecture.

* "C++ mini-lab": an introduction to the C++ language (one of the main reference languages for the video game industry) in which some basic constructs of the language are presented by writing "from scratch" a small library for handling the mathematics of a 3D video game.
Prerequisites for admission
No formal prerequisite is required.

A background in Math (linear algebra), and Computer Graphics is STRONGLY advised. A basic level of preparation in Physics (Newtonian dynamics) and programming (imperative, OO) is also useful.
Teaching methods
Frontal lectures.

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 consist in a screening written test and an oral part. The written test is carried out 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
Educational website(s)
Tuesday 14:30-17:30 (or by appointment)
Department (Via Celoria 18) -- 4th floor.