Università degli studi dell'Insubria

COMPUTER GAME DEVELOPMENT

A.A. di erogazione 2017/2018

Laurea Magistrale in INFORMATICA
 (A.A. 2016/2017)
Docenti
Anno di corso: 
2
Tipologia di insegnamento: 
Affine/Integrativa
Settore disciplinare: 
INFORMATICA (INF/01)
Crediti: 
6
Ciclo: 
Primo Semestre
Ore di attivita' frontale: 
48
Dettaglio ore: 
Lezione (48 ore)

Il corso fornisce alcune delle conoscenze di base per lo sviluppo di un videogioco moderno.

A questo scopo, il corso illustra le tecnologie (algoritmi, strutture di dati, tecniche) adottate in modo universale dai videogiochi moderni, con una forte enfasi sui giochi 3D.

I risultati di apprendimento mirati possono essere sintetizzati come segue:

-- Conoscenze e comprensione

* elementi essenziali di: conoscenza di base dello stato dell'industria del gioco, delle sue pratiche, del suo stato attuale (compresa: compiti di alto livello, composizione di un team di game dev, distribuzione).

* conoscenza della matematica impiegata alla base di giochi 2D e, in particolar modo, di 3D: algebra di punti e vettoriali, trasformazione spaziali rigide e conformali.

-- Conoscenze applicate

* conoscenza delle strutture di dati di utilizzate da un videogioco per rappresentare internamente i propri asset, incluso: modelli 3D, materiali, animazioni 3D, comportamenti di NPC, trasformazioni spaziale, scene dinamiche composite.

* consapevolezza delle soluzioni tecniche (algoritmi, strumenti, librerie, lingue) impiegate nell'industria per affrontare i numerosi sub-task tecnici coinvolti nello sviluppo di un videogioco moderno: simulazione fisica, networking, AI, rendering del suono (cenni), gioco 3D rendering, GUI (cenni); (questi argomenti sono trattati esclusivamente nel contesto di un videogioco, piuttosto che in modo generico o esaustivo)

-- Capacità di apprendimento

* capacità di acquisire rapidamente la familiarità con qualsiasi toolkit di sviluppo di videogiochi, o game engine; ad esempio, di riconoscere i componenti, di comprendere o linguaggi adottati, i metodi di soluzione dei task;

* ultima analisi, capacità di contribuire allo sviluppo di un videogioco, sia come sviluppo completo, sia tramite adozione di game engine specializzati, librerie o SDK

-- Autonomia di giudizio

* Molti di questi elementi includono un'analisi comparativa delle diverse alternative comunemente impiegate, in modo che lo studente sia dotato degli strumenti per identificare il percorso migliore per un determinato caso specifico.

Prerequisiti: 

Non esiste alcun requisito formale. Il corso assume alcune conoscenze di base di matematica, algoritmi e programmazione, ma altrimenti tutte le conoscenze richieste sono impartite all'interno del corso. Un corso di 3D Compupter Graphics può risultare di grande aiuto, e costituisce un ottimo complemento delle conoscenze impartite da questo corso, ma non è un requisito preliminare. I contenuti dei due corsi sono in gran parte reciprocamente ortogonali.

(Tutti i timing sono dati come [X h + Y h], dove X sono le ore di lezione frontale e Y sono esercitazioni).

Lez 1: Introduzione: Game Dev (2h + 0h)
Note storiche. Introduzione alle tecnologie del gioco: asset, motori di gioco, strumenti di gioco. Video game dev team: composizione, ruoli. Modding, Proceduralità, Baking nei giochi.

Lez 2: preliminare: Matematica per i Giochi (3.5h + 6h)
Algebra di vettori e punti. Trasformazioni spaziali: rappresentazione, applicazione, interpolazione, inversione, cumulazione. Rappresentazione delle rotazioni 3D. Quaternions.

Lez 3: strutture dati: lo Scene Graph: rappresentazione, utilizzo (1h + 4h)

Lez 4: strutture dati: modelli 3D nei giochi (2h + 4h)
Mesh indicizzate. Attributi per vertice. Risoluzione, formato dati, attributi utilizzati nei videogiochi. Authoring di modelli 3D.

Lez 5: strutture dati: Materiali e texture (1.5h + 2h)
Tipo di texture: normal map, diffuse map, displacement maps. Utilizzi, authoring.

Lez 6: Game Physics (3.5h + 8h)
Simulazione dinamica: metodi di Eulero, Leapfrog, Verlet. Position Based Dynamics. Modellazione di vincoli fisici. Collision detection e rensponse. Strutture dati: proxy gemetrici: strutture semplici e gerarchiche.

Lez 7: Sistemi di particelle (0h + 2h)
Concetti, autori, usi.

Lez 8: animazioni scritte / cotte in giochi (3.5h + 4h)
Strutture di dati / panoramica per: animazioni cinematiche, forme di fusione, animazioni scheletriche, cache delle geometrie. Caratteristiche. Utilizzi. Interpolazione. Tecniche di elaborazione.

Lez 9: Networking di gioco (2h + 0h):
Confronti di algoritmi e strategie per la fisica distribuita.

Lez 10: Intelligenza artificiale per i giochi (2h + 2h)
Panoramica, metodologie, algoritmo per sottotassi comuni. Modellazione della mente AI. Modellazione dei sensi. FSM. FSM gerarchico. Alberi comportamentali. Comportamenti di basso livello di NPC: routing (algoritmo A star), aiming.

Lez 11: Audio in giochi (1h + 1h)
Strutture di dati, abstrazioni comunemente usate. Authoring.

Lez 12: Tecniche di rendering per i giochi (2h + 3h)
Sfide e soluzioni. Librerie. Posizionamento della telecamera – trasformazione di vista. Illuminazione locale e globale: tecniche comunemente utilizzate nei videogames. Illuminazione e rendering fisici (cenni).

Lezioni: didattica frontale.

Esercitazioni: alcuni dei contenuti coperti dal corso sono esemplificati in pratica anche attraverso l'adozione di una piccola serie di strumenti game-dev specifici, al fine del conseguimento degli obiettivi sopra descritti. A questo scopo, Unity è stato impiegato nella maggior parte delle edizioni del corso, ma Engines o IDE differenti (come Unreal Engine) possono essere utilizzati in aggiunta o in sostituzione di esso.

Modalita' di verifica dell'apprendimento: 

L'esame consiste in una prova scritta della durata di due ore, finalizzata all'accertamento delle conoscenze teoriche di base. La prova scritte consiste di un insieme di domande chiuse o aperte (ma brevi) e puo' includere esercizi matematici. Il superamento di questa prova costituisce un prerequisito del progetto.

Gli studenti devono inoltre consegnare un progetto concordato col docente (un piccolo prototipo di videogame), in cui siano messe in pratica alcuni o tutti gli elementi imparati nel corso, scelti dallo studente. Il progetto viene discusso e giudicato in una apposita prova. Il design del concept del gioco (inlcusi degli elementi di gameplay) è a complete discrezione degli studenti, e non costituisce elemento di giudizio.

E' consentito presentare progetti di gruppo, ma in questo caso deve esistere una chiara divisione dei compiti implementativi, e il progetto deve essere maggiormente completo.

Testi di riferimento consigliati (ma non obbligatori):

Mathematics for 3D Game Programming and Computer Graphics
Eric Lengyel
(qualsiasi edizione o editore)

Game Engine Architecture
Jason Gregory
(qualsiasi edizione o editore)

Mutuato da

clicca sulla scheda dell'attività mutataria per vedere ulteriori informazioni, quali il docente e testi descrittivi.

Cerchi il programma? Potrebbe non essere ancora stato caricato o riferirsi ad insegnamenti che verranno erogati in futuro.
Seleziona l‘anno in cui ti sei immatricolato e troverai le informazioni relative all'insegnamento del tuo piano di studio.

A.A. 2017/2018

Anno di corso: 1
Curriculum: GENERICO