Tu sei qui

Computer game development

Computer Game Development
Corso di laurea magistrale in Informatica F008

SCV0342
Docente: Marco Tarini


CFU SSD LEZIONI ANNO LINGUA
6 INF/01 48 I o II Italiano


Obiettivi dell’insegnamento e risultati di apprendimento attesi
Il corso fornisce alcune delle conoscenze di base pertinenti allo sviluppo di un video game.
Una parte consistente del corso è dedicata alla presentazione e all’approfondimento delle tecnologie (gli algoritmi, le strutture dati, le tecniche) comunemente adottate nell'industria dello sviluppo moderni video game 3D. Alla fine del corso, lo studente comprende tutte le principali soluzioni tecniche disponibili per la soluzione i molti task, tecnici e computazionali, che devono essere risolti nello sviluppo di un Video Game.
L’obiettivo formativo principale è fornire gli strumenti concettuali necessari al fine di orientarsi con relativa facilità nell’uso di un qualunque toolkit di sviluppo di un video game, o di un Video Game Engine esistente, riconoscendone i componenti e capendone il linguaggio tecnico adottato. Il corso impartisce anche le prime basi per concorrere ad uno sviluppo ex-novo, o all’adattamento, di un game engine o di un Video Game. Durante il corso viene impartito il lessico tecnico proprio di questa disciplina.
Il corso è completato dalla dimostrazione dell’uso di un piccolo insieme di strumenti di sviluppo di esempio, funzionalmente agli obiettivi formativi esposti.
Per chiarezza, è utile specificare che i seguenti aspetti esulano dagli scopi del corso: Game Theory; aspetti inerenti al Game Design (come i game mechanisms, il balancing, lo story telling); analisi dei Computer Games come fenomeno sociale o culturale; storia dei Computer Games -- salvo cenni; “serious gaming” o “gamification”; capacità artistiche di creazione degli assets, che sono proprie delle varie categorie di artisti digitali, come modellatori 3D, animatori 3D, audio artists, etc -- solo pochi cenni saranno dedicati alle modalità di utilizzo di alcuni degli strumenti software corrispondenti, contestualmente all'esposizione delle strutture dati che vengono manipolate.

Prerequisiti
Non è prevista alcuna propedeuticità formale. Il corso assume alcune conoscenze base di matematica, di algoritmi e di programmazione, ma tutte le conoscenze più avanzate necessarie vengono impartite contestualmetne al corso (vedi Contenuti, Parte I)

Contenuti e programma del corso
Di seguito si elencano i contenuti impartiti durante il corso e il tempo approssimativo che viene dedicato ad ogni argomento. I conenuti vengono elencati secondo una sequenza logica, che non sempre coincide con lo svolgimento temporale del programma. Ad esempio, le basi matematiche vengono impartite a mano a mano che gli altri argomenti lo richiedono.
Parte I: Introduzione e prerequisiti. (tot: 10h)

  • Introduzione (2h)
    • cenni storici; generi; processo di sviluppo di un video-game suoi ruoli.
  • Basi matematiche per il game programming: (6h)
    • vettori, (proprietà, operazioni), matrici & trasformazioni affini, rotazioni e trasformazioni rigide (rappresentazioni: quaternioni, quaternioni duali)
  • Tecniche di programmazione per applicazioni interattive (2h)
    • Programmazione basata su eventi

Parte II: tecnologie del gaming (tot: 28h)
In questa parte si intende fornire una panoramica delle tecnologie (algoritmi, strutture dati, tecniche) più comunemente adattate nello sviluppo dei Video Games.

  • Anatomia di un Video Game (moduli che compongono un Video Game): (2h) 
core, gestore delle risorse, sottosistema di rendering, physics engine, AI system, networking, control, sound system, tools.
Alcuni moduli vengono poi discussi in maggior dettaglio:
    • Core: ciclo degli eventi (1h)
    • Physics engine: collision detection, collision response, dynamics (simulazione di Eulero e di Verlet), ragdolling, sistemi di particelle. Sfrutamento del parallelismo. (4h)
    • Sottosistema di rendering: rasterization based rendering, hardware, pipeline GPU.
      Tecniche du rendering comuni nel gaming: shadow mapping, bumpmapping, parallax mapping, SSAO. (5h)
    • AI system (cenni): path finding, flocking, collision avoidance. (2h)
    • Tools (strumenti per content creators e gestione in preprocessing degli assets). (1h)
  • Assets di un Video Game (strutture dati per i contents di un Video Game): 
3D content; audio e video; 2D art; scripts, levels e altri content specifici di contesto. (1h)
Saranno poi approfondite le tipologie più comuni di 3D content:
    • 3D models (4h)
      • Rappresentazioni, gerarchie di livelli di dettaglio, definizione di attributi. Costruzione e tecniche di sintesi. Compressione (cenni).
    • Descrittori di materiali (2h)
      • Tessiture (bumpmapping), shaders, modelli di illuminazione
    • Animazioni (4h)
        Key-framed animations, rigging (linear blend skinning). Origine dei dati.
  • Collision objects e altri assets per la fisica: (2h)
    • bounding volumes, hit-boxes, sistemi di particelle, effects.
  • Scene (2h)
    • Scene graphs, props, skyboxes

Parte III: strumenti e piattaforme (tot: 10h)
In questa parte si passano in rassegna i tool di sviluppo, le librerie e gli SDK più diffusi che possono essere adottati per lo sviluppo di un video game. Per alcuni di queste vengono fornite demo ed esempi pratici.

  • Piattaforme del gaming (cenni) (1h)
    • mobile applications, game consoles, PC + video cards, browser games (3D su browser).
  • Applicazioni software per la creazione di contenuto 3D (1h)
  • Toolkit di sviluppo più diffusi: CryEngine, Unreal Engine, Unity (8h)

Tipologia delle attività didattiche
Lezioni frontali: 48h.

Testi e materiale didattico
Alcuni libri coprono molti degli argomenti trattati da questo corso:

  • Game Engine Architecture - Jason Gregory, A K Peters / CRC Press
  • Mathematics for 3D Game Programming and Computer Graphics, Third Edition -Eric Lengyel, Cengage Learning
  • Introduction to 3D Game Programming with DirectX 11 - Frank Luna, Mercury Learning & Information

Le slide delle lezioni saranno fornite sul sito di e-learning.

Modalità di verifica dell’apprendimento
L’esame consiste in una prova scritta seguita da un colloquio orale. Opzionalmente, è possibile concordare un piccolo progetto personale, che consiste in un piccolo videogioco o un proof of concept.
La prova scritta e la prova orale consistono in domande tese alla verifica delle conoscenze impartite durante il corso.
Il progetto è del tutto facoltativo ed va inteso come un'opportunità fornita agli studenti di essere seguiti dal docente nelle varie fasi dello sviluppo di un piccolo VideoGame di propria concezione, attraverso l'uso di strumenti appositamente individuati, di caso in caso. La consegna di un progetto non esonera dalla prova scritta od orale.

Orario di ricevimento
Il docente è a disposizione per il ricevimento studenti un pomeriggio a settimana (da determinare in base all’orario del corso) e su appuntamento da concordare tramite posta elettronica.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer