3d video games

A.A. 2023/2024
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Inglese
Obiettivi formativi
L'obiettivo dell'insegnamento è fornire un'approfondita comprensione delle soluzioni adottate dai videogiochi 3D (ovvero giochi ambientati in mondi 3D virtuali) al fine di affrontare i numerosi compiti che devono essere risolti durante la loro esecuzione, compreso il background matematico, le strutture di dati, gli algoritmi maggiormente impiegati, e la relativa terminologia tecnica. L'obiettivo finale è quello di fornire i concetti che sottendono allo sviluppo di un game-engine 3D moderno, che sono anche necessari all'uso pienamente consapevole di strumenti esistenti di questo tipo.
Risultati apprendimento attesi
Al termine dell'insegnamento, gli studenti avranno appreso le tecniche alla base delle soluzioni ubiquamente adottate dai moderni videogiochi 3D. In particolare, avranno familiarizzato con il background matematico, gli algoritmi e le strutture dati preposte ad affrontare le sfide tecnologiche che devono essere superate da un videogioco 3D, fra cui: la rappresentazione di oggetti e ambienti virtuali 3D, la rappresentazione del loro aspetto, la simulazione della loro evoluzione fisica, la riproduzione di computer animations 3D (scripted o procedurali) e di effetti visuali 3D. Gli studenti vengono inoltre dotati delle nozioni atte a collegare i contenuti impartiti da questo insegnamento a quelli proposti da altri insegnamenti del corso di laurea, che siano pertinenti ai 3D videogames, come quelli inerenti a: real-time audio, real-time rendering avanzato, intelligenza artificiale per virtual agent, e networking. Alcuni dei contenuti trattati nell'insegnamento sono rinforzati attraverso l'esemplificazione in pratica con game-dev tools o game-engines esistenti.
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre

Programma
* Lez.01: Introduzione ai 3D games

PARTE 1: Matematica

* Lez.02: Matematica per 3D games: punti, vettori, versori
* Lez.03: Matematica per 3D games: trasformazioni geometriche
* Lez.04: Matematica per 3D games: rotazioni 3D
* Lez.05: Matematica per 3D games: rappresentazioni basate su quaternioni
* Lez.06: Matematica per 3D games: vari esempi di applicazione

* Lez.07: Lo Scene-Graph

PARTE 2: Fisica

* Lez.08: 3D Game physics: simulazione di dinamica Newtoniana
* Lez.09: 3D Game physics: sistemi di integrazione
* Lez.10: 3D Game physics: position based dynamics
* Lez.11: 3D Game physics: gestione delle collisioni
* Exer12: 3D Game physics: sandbox su collisioni

* Exer13: sistemi di particelle

PARTE 5: Modelli 3D

* Lez.14: Rappresentazioni geometriche per 3D games
* Lez.15: Textures per 3D Games (incluso normal maps)
* Lez 16: Rappresentazione di Materiali
* Lez.17: Pipeline di produzione di asset per 3D Games

PARTE 6: Computer Animation

* Lez.18: Animazioni nei 3D Games: cinematica
* Lez.19: Animazioni nei 3D Games: blend-shapes
* Lez.20: Animazioni nei 3D Games: animazioni scheletali

PARTE 7: LEZIONI PONTE (*)

* Lez.21: Lezione ponte: audio nei 3D games
* Lez.22: Lezione ponte: networking in 3D games
* Lez.23: Lezione ponte: AI in 3D games
* Lez.24: Lezione ponte: rassegna di tecniche di rendering per 3D games

(Ogni argomento è della durata di circa 2 ore.)

Note:

(*) Le lezioni "ponte" sono una visione dall'alto di interi argomenti, che hanno lo scopo di collegare i contenuti di questo insegnamento con altri insegnamenti del corso di laurea.

=== Attività extracurriculari dopolezione:

Dopo ogni lezione, si svolge una breve attività extra-curriculare, della durata massima di circa 1h. Si tratta di una piccola attività del tutto facoltativa, offerta agli studenti interessati, intesa come uno svago piuttosto che un lavoro. Gli argomenti trattati non sono in alcun modo parte dalla prova di esame.

A turni alterni, vengono proposte due attività (ciascuna delle quali ha quindi, una cadenza settimanale):

* "Il gioco della settimana": viene mostrato e brevemente analizzato un videogioco esistente che "abusa" oppure contraddice l'uso tradizionale di un meccanismo presentato nella lezione.

* "Mini-laboratorio C++": un'introduzione al linguaggio C++ (uno dei principali linguaggi di riferimento per l'industria dei videogames) in cui si presentano alcuni costrutti base del linguaggio scrivendo "da zero" una piccola libreria per la gestione della matematica di un videogame.
Prerequisiti
Non è richiesto alcun prerequisito formale.

Si consiglia FORTEMENTE una formazione in Computer Graphics, e, in Matematica (algebra lineare). E' utile una formazione di base di fisica (dinamica newtoniana), e programmazione (linguaggi imperativi e OO).
Metodi didattici
Lezioni frontali.

Talvolta, per effettuare esempi e dimostrazioni, ci si avvarrà dell'uso di un Game Engine esistente. E' consigliata la disponibilità di un proprio laptop durante lo svolgimento delle lezioni.
Materiale di riferimento
Vengono forniti lucidi di ogni lezione (vedere piattaforma Ariel)

Libro di testo suggeriti (non è necessario il loro possesso):

* per la parte di matematica: "Mathematics for 3D game programming and computer graphics" - Eric Lengyel - ISBN: 1435458869

* per le parti di fisica ed animazione: "Game Engine Architecture" (quasiasi edizione) - Jason Gregory - ISBN: 1138035459
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste in uno scritto di sbarramento seguito da un breve orale. Lo scritto si svolge in modalità scritta attraverso la piattaforma Moodle SEB, e consiste in una sequenza di domande (chiuse, aperte, risoluzione di piccoli esercizi...) che vertono sull'intero programma. L'esame è completato da un orale. E' possibile (ma non necessario) presentare un piccolo progetto concordato con il docente. (questo è offerta come opportunità di apprendimento per lo studente, e non prevede un incremento del voto)
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Tarini Marco
Siti didattici
Docente/i
Ricevimento:
Martedì 14:30-17:30 (o su appuntamento)
Dipartimento (Via Celoria 18) -- 4to piano.