Il programma del master

1500 ore di lezione

Il master mira a soddisfare le esigenze di formazione elevata nell’ambito dello sviluppo di applicazioni videoludiche, si svolge in stretto contatto con le principali aziende videoludiche italiane e in particolare con l'Italian Interactive Digital Entertainment Association (IIDEA). Le competenze acquisite durante il master sono immediatamente spendibili al termine del percorso formativo.

Le lezioni sono a frequenza obbligatoria e si terranno principalmente nei giorni di venerdi e sabato (per esigenze organizzative saranno eventualmente coinvolti anche altri giorni). La modalità di erogazione della didatticà sarà mista telematica e in presenza.

Il programma nel dettaglio

Fundamentals of computer graphics

L’insegnamento fornisce una panoramica sui fondamenti della Computer Graphics interattiva, con particolare attenzione ai fondamenti matemetici e computazionali. Verrà sommariamente descritta una tipica pipeline di rasterizzazione OpenGL-like.
Verranno trattati i seguenti argomenti: Vettori, matrici e trasformazioni, quaternioni. Algoritmi e strutture dati spaziali. Paradigmi di rendering, modelli di illuminazione, pipeline di rasterizzazione.

Fundamentals of artificial intelligence

Metodi della I.A: algoritmi e complessità. Ricerca: agenti razionali, path finding. Ricerca informata: euristiche, algoritmi genetici, tecniche anytime, algoritmi A* e SMA*. Adversary search: minimax, strategy computation. Pianificazione: block world, planning by search.
Probabilità di base. Decisioni in situazione di incertezza – tecniche bayesiane, algoritmo di Pareto. Reti neurali. Vaghezza e logica fuzzy.

Fundamentals of software engineering

L’insegnamento fornisce una panoramica sui principi di base della ingegneria del software. In particolare, verranno presentate le fasi e le tecniche di sviluppo software; le tecniche di testing del software; i design pattern generali e specifici per videogiochi, anche su architettura mobile; la gestione dei repository software.

Fundamentals of human-computer interaction

L’insegnamento fornisce una panoramica sulle tecniche di design, realizzazione e valutazione di paradigmi di interazione, principalmente di tipo grafiche o visuali. Verranno analizzati i principi dell’interazione e dell’usabilità con enfasi nel constesto dei videogiochi.
Verranno inoltre introdotti paradigmi di interazione avanzati basati sul concetto di interfaccia pervasiva nella quale il calcolatore percepisce (tramite sensori visivi, magnetici etc…) i movimenti e l’intenzione dell’utente.
Saranno inoltre analizzate le interfacce immersive con particolare riferimento alle applicazioni di realtà virtuale e realtà aumentata.

Elements of game production

Obiettivo di questo insegnamento è di fornire una visone d’insieme sulla produzione di un videogioco. Prevede una breve panoramica dell’attuale scenario dei videogiochi, evidenziando le classificazioni e le meccaniche dei principali filoni. Significato del videogioco; design; interattività; regole e game design patterns; analisi di un documento di design.
Verranno inoltre introdotti i metodi e gli strumenti orientanti all’organizzazione dello sviluppo del videogioco.

Mobile Game Programming

L’insegnamento fornisce una panoramica sullo sviluppo di videogiochi per le principali piattaforme mobile, Google Android e Apple iOS, affrontando tutte le procedure coinvolte nella creazione e distribuzione di un’app fruibile su tali dispositivi, soffermandosi in particolar modo sullo sviluppo in Unity e la programmazione C#.
La fase finale del corso prevede la progettazione e lo sviluppo di un minigame.

C++ programming

Lo scopo dell’insegnamento è quello di fornire allo studente le basi indispensabili per produrre codice C++ di qualità. Il corso copre argomenti fondamentali quali il funzionamento del build system e le direttive del pre-processore, i tipi fondamentali del C++, il polimorfismo statico (template) e dinamico (ereditarietà) nonche' alcuni argomenti piu' avanzati come ad esempio il policy-based design, l'idioma PIMPL e gli use-cases per le strutture dati messe a disposizione dalla STL. Il corso e' principalmente teorico ma include anche sessioni pratiche ed esercizi di programmazione.

Physics programming

Obiettivo dell’insegnamento è quello di fornire le conoscenze di base per comprendere ed affrontare le problematiche relative allo sviluppo di simulazioni fisiche all’interno dei videogames. L’insegnamento prevede un primo modulo nel quale verranno richiamati concetti base di matematica e fisica, cinematica e dinamica delle particelle e dei corpi rigidi. Segue la trattazione riguardo l’utilizzo di tali concetti all’interno del software, le architetture comunemente utilizzate e l’integrazione numerica delle equazioni, con particolare attenzione ai sistemi molla-smorzatore.
L’insegnamento si conclude con un terzo ed ultimo modulo inerente tematiche più avanzate, come la determinazione e la gestione delle collisioni, la dinamica dei veicoli ed i corpi deformabili, con esempi pratici riguardanti soluzioni adottate correntemente in giochi tripla A.

Graphics programming

L’insegnamento si propone di approfondire lo studio delle tecniche di rendering real-time nelle architetture GPU di ultima generazione a shader programmabili. In particolare sarà introdotta la programmazione grafica attraverso l’utilizzo delle API DirectX 10/11 e del linguaggio HLSL; verrà inoltre illustrato come procedere al debug e al profiling di applicazioni DirectX attraverso l’utilizzo di PIX.
Saranno esaminate tecniche ed effetti avanzati, quali gestione dell’ombreggiatura e applicazione di filtri real-time e post-processing.

Game engine programming

L’insegnamento ha come obiettivo principale l’analisi di un game engine, a partire dai principali aspetti architetturali fino alla discussione delle scelte tecniche e implementative.La prima parte del corso presenterà un panoramica generale della tematica, con particolare attenzione agli elementi comuni e ricorrenti nei principali engine utilizzati nell’industry.
Successivamente il focus si sposterà sullo studio dell’Unreal Engine 4, ambiente in forte crescita e sempre più al centro dell’industria AAA moderna.

Tools programming

Obiettivo dell’insegnamento è focalizzare l’attenzione sull’importanza dei tools nel ciclo di sviluppo di un videogioco. Partendo dalla conoscenza approfondita dell’ambiente di sviluppo utilizzato dai programmatori fino alla scelta e/o realizzazione dei molti tools indispensabili al lavoro di grafici, musicisti e designer. Nello specifico verranno sottolineate le scelte da compiere nella realizzazione di tools da usare all’interno del team di sviluppo, con enfasi sugli strumenti di condivisione del codice e controllo delle versioni.
Sarà altresì eseguita una panoramica sui principali linguaggi di programmazione più indicati nella realizzazione di tools.

High-level programming

L’insegnamento ha l’obiettivo di presentare tecniche e metodologie di sviluppo avanzate all’interno di un game engine complesso, utilizzando come base alcuni casi d’uso in ambiente Unreal Engine 4. Partendo dal design di specifiche feature di gioco, si procederà all’individuazione e alla realizzazione di una soluzione, valutando aspetti fondamentali quali l’efficienza, l’usabilità e l’integrazione con l’ambiente di sviluppo.

Advanced graphics programming

L’insegnamento ha lo scopo di fornire le conoscenze metodologiche e gli algoritmi per lo sviluppo di videogiochi 3D con enfasi sull’animazione e rendering di oggetti complessi in tempo reale. Riguardo alla modellazione e animazione degli oggetti gli argomenti trattati saranno lo skeleton animation, skinning, particle systems.
Rispetto al rendering avanzato i temi rigurarderanno il normal mapping, parallax mapping, screen space ambient occlusion, depth of field effects, high dinamic range rendering.

Sound programming

Il suono è fondamentale nella realizzazione di software multimediale. L’insegnamento intende fornire un set minimo di basi e di metodologie per l’integrazione di contenuti audio nei videogame. Dopo una breve introduzione alla psicoacustica, verranno presentate alcune tecniche, componenti, ed esempi di utilizzo del suono nei videogame.
Verranno trattati i seguenti argomenti: l’audio nel ciclo di produzione di un videogame, categorie di suoni, formati audio e compressione (wav, mp3, ogg); suoni in streaming, suoni in ram; categorie di SFX: one shot, loop; suoni 3D; formati per la musica: MIDI vs wav vs XM\MOD; SFX: animazione, codice, evento

Artificial Intelligence programming

L’insegnamento è volto alla comprensione delle problematiche relative alle intelligenze artificiali nei vari domini applicativi. Sul piano teorico saranno esposti alcuni approcci comunemente usati per la risoluzione di problemi osservando le principali differenze al variare di: domini spazio/tempo, spazi continui/discreti, realismo/finzione, training online/offline, complessità ed astrazioni per sensori/attuatori, debugging, tweaking, GPU-assisted AI, con un occhio di riguardo alle scelte effettuate nei giochi commerciali.
In laboratorio saranno risolti problemi giocattolo al fine di apprendere tecniche basilari di tool building, pathfinding, pattern matching, implementazione di agenti reattivi.

Network programming

L’insegnamento fornisce una panoramica sulle problematiche relative allo sviluppo di modalità di gioco Multiplayer. L’insegnamento affronterà in una prima fase le problematiche di basso livello: Socket, UDP, TCP, protocolli custom con servizi TCP on demand. Successivamente si affronteranno le problematiche di Match Making, front-end e back-end. Creazione di sessioni di gioco, reporting di statistiche, VOIP, gestione di AI e spettatori. Cenni sulle Tecnichal Requirement Certification (TRC) specifiche delle varie piattaforme di sviluppo.
Nel terzo, e più sostanzioso, modulo si affronteranno problemi “game-dependent” di gestione e dati di gioco, data integration, data estimation, latency avoiding, dead reckoning, bandwidth management, con esempi concreti nell’ambito di racing games. Eventualmente cenni sulle problematiche associate ai Massive Multiplayer Game.

Advanced C++ programming

L’insegnamento ha l’obiettivo di approfondire la conoscenza del linguaggio C++ affontando tematiche avanzate come: Optimization, Floaing Point Calculaton, Memory Management e Cache Coherence, Bit Hacks. Gli argomenti trattati saranno discussi con particolare attenzione al Game Development e a librerie e framework game-oriented.

Game developement laboratory

A conclusione del processo formativo è prevista una fase di laboratorio mirata alla realizzazione una porzione di un videogioco complesso. Particolare attenzione verrà posta nella suddivisione dei compiti del team, nella strutturazione del progetto, nella condivisione delle scelte e nello sfruttamento ottimale delle risorse a disposizione.
Grazie alle conoscenze e al software messi a disposizione dai corsi specifici si giungerà alla creazione di un prototipo di videogioco, simulando il più fedelmente possibile l’effettivo ambiente lavorativo di produzione.

Mettiamo in contatto le migliori aziende di gaming con i talenti di domani

Crediamo nella collaborazione, non solo con talenti professionisti, ma anche con le migliori aziende del settore videoludico per creare un ponte tra formazione e il mondo del lavoro.

i nostri partner

L’Università di Verona rappresenta garanzia di Didattica qualificata, Strutture e Ricerca.

Sono numerosi i riconoscimenti ricevuti negli ultimi anni dall'Università degli studi di Verona e dal Dipartimento di Informatica per qualità degli insegnamenti e della ricerca. Il master è organizzato per cogliere le nuove opportunità di didattica telematica proponendo una modalità mista che coniughi le esigenze di sicurezza del momento con i vantaggi legati alle lezioni in presenza e ad un approfondimento delle relazioni interpersonali.

il master