6 maggio 2010

Struttura

Il Master è strutturato in 1500 : il master mira a soddisfare le esigenze di formazione elevata nell’ambito dello sviluppo di applicazioni videoludiche. Il master si svolge in stretto contatto con le principali aziende videoludiche italiane e in particolare con l’Associazione Editori e Sviluppatori Videogiochi Italiani (AESVI). Le competenze acquisite durante il master sono immediatamente spendibili al termine del percorso formativo.

Le lezioni sono a frequenza obbligatoria e si terranno da Gennaio a Novembre 2017 principalmente nei giorni di venerdi e sabato (per esigenze organizzative saranno eventualmente coinvolti anche altri giorni).

Scheda didattica

  •  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 scientifici e professionali di base della Ingegneria del software, con particolare attenzione alle diverse fasi della progettazione e realizzazione di sistemi software complessi su larga scala (“in the large”): pianificazione, progettazione, modellazione e specifica, implementazione, collaudo e verifica, valutazione, manutenzione.

  • Fundamentals of human-computer interaction

L’insegnamento fornisce una panoramica sulle tecniche di design, realizzazione e valutazione di paradigmi di interazione, principalmente di tipo gra?che 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 Programming

L’insegnamento fornisce una panoramica sui fondamenti del Mobile Programming, allo scopo di affrontare tutte le fasi che permettono di creare e distribuire una app fruibile su vari dispositivi mobili (smart-phone e tablet). Verranno analizzate le principali piattaforme mobile quali Android, iOS e Microsoft. Infine si passerà ad una fase di progettazione e sviluppo di un minigame in Unity.

  • C++ programming

Lo scopo dell’insegnamento è quello di fornire allo studente gli strumenti indispensabili per produrre codice C++ di qualità. Tematiche di design: polimorfismo statico (template) e dinamico (ereditarietà), generic programming, design patterns, policy-based design, parallelismo. Caratteristiche specifiche del C++: I/O e Streaming, exception handling, C++ standard, C++ Idioms (RAII, The Rule of Three, DRY, YAGNI, SFINAE ).

  • 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 overview 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 illustrare metodi e best-practices di sviluppo allo scopo di fornire gli strumenti necessari a implementare nuove componenti all’interno di un progetto strutturato. Nello specifico, verranno presi in esame alcuni casi d’uso in ambiente Unreal Engine 4, di cui saranno analizzate le singole parti al fine di comprenderne le interazioni ed espanderne le funzionalità.

  • 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

Nel modulo avanzato di C++ programming ci si concentrerà soprattutto sull’organizzazione del lavoro di gruppo. Teamwork e Videogame Development: Optimization, Bit Hacks, Floating point calculation, Cache Coherence, modularità/riusabilità/testabilità del codice, coding standards. Nella parte di laboratorio verranno analizzati i principali ambienti di sviluppo e compilatori,  librerie generiche di largo impiego non game oriented (STL, Boost, Loki), librerie e Frameworks game oriented. Verrà  prodotto codice C++ con lavoro in team utilizzando repository e VCS

  • 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.

 

Comitato Scientifico

Il Comitato Scientifico ha la responsabilità di indirizzo e di gestione del Master. È composto da docenti dell’Università di Verona e dai persone provenienti dall’industria videoludica con provata esperienza.Il Comitato Scientifico è nominato, contestualmente all’approvazione della proposta istitutiva, dal Consiglio di Dipartimento ed è composto da almeno cinque componenti: il Comitato Scientifico provvede alla programmazione delle attività formative, all’eventuale riconoscimento allo studente di crediti, alla definizione dei criteri di valutazione e delle modalità di espletamento delle procedure selettive, delle verifiche periodiche e della prova finale. Inoltre, per le attività di stage, individua uno o più referenti sia per il coordinamento delle attività sia per gli aspetti organizzativi e la stipula delle convenzioni.

Umberto Castellani Ricercatore del Dipartimento di Informatica dell’Università di Verona. Ha ottenuto il Dottorato di Ricerca in Informatica nel 2003 lavorando sulla modellazione e ricostruzione di dati 3D. I suo interessi di ricerca attraversano l’elaborazione di dati 3D fino all’addestramento statistico. Direttore del master.
Andrea Fusiello Professore associato di Informatica all’Università di Udine, dove insegna Informatica di base e Visione Computazionale. I suoi interessi di ricerca riguardano principalmente l’analisi di immagini, acquisizione di modelli tridimensionali, image based rendering È stato direttore del Master per le prime tre edizioni.
Vice-direttore
Paola Cesari Paola Cesari (Ph.D Penn State University 1999) è Professore Associato presso l’università di Verona nel dipartimento di Scienze neurologiche e della Visione. Insegna controllo motorio e bioingegneria presso la Facoltà di Scienze Motorie. Dirige il laboratorio LAP (Laboratorio Azione Percezione). La sua ricerca verte sullo studio del controllo sensitive-motorio.
Componente del Comitato Scientifico.
Matteo Cristani Matteo Cristani è Ricercatore Universitario dal 1997 a Verona. È stato visiting scholar presso l’Università di Rochester nel 1993-1994 epresso l’Università di Leeds nel 1999 e nel 2004. È autore di oltre 60pubblicazioni tra articoli su rivista internazionale e comunicazioni aconvegno internazionale. Ha tenuto corsi presso l’università di Verona e presso la Scuola Interateneo di Specializzazione degli insegnanti del Veneto.
Componente del Comitato Scientifico.
Antonio Farina È uno dei pionieri dell’industria videoludica italiana. Nel 1992 ha fondato la software house Graffiti poi divenuta Milestone, la maggiore azienda di sviluppo videogiochi per console italiana. Ha lasciato l’azienda nel 2011 per fondare Reludo, specializzata in sviluppo e publishing di giochi mobile.Componente del Comitato Scientifico.
Paolo Giacomello Lavora nel mondo dei videogiochi da 10 anni, seguendo sia aspetti tecnici che commerciali. Socio fondatore del team di sviluppo di Idoru nel 2001, nel corso degli anni si è occupato del game design e dell’organizzazione dei vari progetti. Dal 2004, opera in Italia all’interno del network Ingress Europa, struttura che rappresenta e collabora con diverse strutture internazionali per lo sviluppo di special business e nuove attività legate a progetti interattivi e multimediali.
Componente del Comitato Scientifico.
Dario Migliavacca Dario Migliavacca, laureato a Milano in Economia e Commercio, è entrato a far parte del gruppo Ubisoft nel 1996 in qualità di Sales Manager e, dopo aver ricoperto altri importanti ruoli è – dal 2003 – Managing Director di Ubisoft Milan. Sotto la sua direzione gli studi italiani del publisher francese hanno prodotto videogiochi per tutte le piattaforme, collaborando allo sviluppo di celebri brand quali Rabbids, Just Dance e Assassin’s Creed, per citare solo i più recenti.
Marco Cristani Ricercatore al dipartimento di Informatica dell’università di verona. So occupa di computer vision e statistical pattern recognition con enfasi sulle applicazioni pratiche
Andrea Giachetti Professore associato presso il Dipartimento di Informatica dell’Università di Verona ove è docente nei corsi di Grafica al Calcolatore, Interazione Uomo-Macchina ed Analisi di Immagini e dati volumetrici. I suoi interessi di ricerca riguardano l’elaborazione di immagini e dati 3D.
Andrea Martinoli Responsabile di produzione e supervisore di Digital Tales SRL dove si occupa anche del coordinamento dei collaboratori interni ed esterni
Fausto Spoto Laurea in Informatica, è professore associato presso il Dipartimento di Informatica di Verona, dove si occupa di tecniche a supporto dello sviluppo di software di qualità, verifica e analisi automatica del software.