MATEMATICA E INFORMATICAInformaticaAnno accademico 2023/2024
1006278 - SVILUPPO DI GIOCHI DIGITALI
Docente: FILIPPO STANCO
Risultati di apprendimento attesi
Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.
- Conoscenza e capacità di comprensione (knowledge and understanding): l'obiettivo del corso è quello di far acquisire conoscenze che consentano allo studente di comprendere i meccanismi teorici e fisici che stanno alla base della creazione di un gioco digitale.
- Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze necessarie per progettare e realizzare un gioco digitale. In particolare una parte del corso sarà relativa allo studio del software Unity per applicare tali conoscenze teoriche.
- Autonomia di giudizio (making judgements): Attraverso esempi in aula lo studente sarà messo nelle condizioni di comprendere se le soluzioni da lui proposte soddisfano un certo grado di qualità.
- Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e la proprietà di linguaggio tecnico nell'ambito del settore dei giochi digitali.
- Capacità di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie teoriche e pratiche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero sorgere durante una attività lavorativa. A tale scopo diversi argomenti saranno trattati a lezione coinvolgendo lo studente nella ricerca di possibili soluzioni a problemi reali.
Modalità di svolgimento dell'insegnamento
Lezioni frontali
Attività di laboratorio in Aula
Prerequisiti richiesti
Buone conoscenze di programmazione
Frequenza lezioni
la frequenza è fortemente consigliata
Contenuti del corso
Introduzione a Unity e interfaccia
Player settings, build
GameObject, Components, Prefab, Tag, Layer
Script Unity e funzioni principali (Start, Awake, Update, LateUpdate, FixedUpdate)
Vettori
Enable/Disable Components, Activate Gameobjects
Translate/Rotate, LookAt, Lerp, Destroy
GetButton/Key/Axis, OnMouseDown, GetComponent
DeltaTime, Instantiate
Classi Statiche
Enums, Method Overload
Generics, Ereditarietà
Interfacce(script), Extension methods, delegates
Singleton, Coroutines, PlayerPrefs
Collisioni, Raycast
Textures, Materials
Luci
Audio Listener, Audio Source, Audio 2D/3D
Animazioni e Animator
UI
NavMesh
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus
Testi di riferimento
Non esiste uno specifico testo di riferimento. E' possibile usare qualsiasi manuale di Unity o servirsi delle referenze online.
Programmazione del corso
| Argomenti | Riferimenti testi |
1 | Unity | materiale fornito dal docente su Studium |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L’esame consiste nella presentazione di un progetto, individuale o di coppia.
Il voto conseguito dipenderà fortemente dalla seguente scaletta dei punteggi.
- Impostazioni generali (2 elementi diversi obbligatori)
- Build mobile: 1pt
- Splash Screen: 1/2pt
- Icona gioco: 1/2pt
- Main menu (2 elementi diversi obbligatori)
- Load Game (CheckPoint in mezzo ad un livello): 2pt
- Options:
- Sound/Music: 1pt
- Controls: 2pt
- Resolution/Quality: 1/2pt
- Credits Screen: 1/2pt
- Classifica
- Ordinata: 2pt
- Con rimpiazzo dinamico delle entry (Cancellazione score più basso e inserimento nuovo score): 2pt
- Non ordinata: 1pt
- Tutorial
- Schermata statica(3 max): 1/2pt per schermata
- GamePlay (3 elementi diversi obbligatori)
- Score: 1pt
- PowerUp/Shop/Bonus giocatore(Max 3): 1pt ogni powerup
- Gioco a tempo:1/2pt
- Presenza di nemici/sfida: 1pt
- Livelli di difficoltà: 1pt
- Difficoltà crescente: 1pt
- AI base (segue il player, spara automaticamente, non ha comportamenti “Intelligenti”, ecc): 1pt
- AI complicata (NavMesh, comportamenti basati sulle azioni del player,ecc): 3pt
- Multiplayer Locale (2 o più player nello stesso dispositivo): 2pt
- Strutture (8 elementi diversi obbligatori)
- PlayerPrefs: 1/2pt
- Singleton(4 max): 1pt ogni singleton
- Coroutines(4 max): 1/2pt ogni coroutine
- Enums: 1/2pt
- Classi statiche(2 max): 1/2pt ogni classe
- Generics(Anche interfacce): 2pt
- Method overload: 1/2pt
- Presenza di ereditarietà: 1pt
- Interfacce(2 max): 1pt ogni interfaccia
- ExtensionMethods(4 max): 1/2pt ogni metodo
- Delegates: 1pt
- Eventi: 1pt
- Animazioni originali(2 max): 1/2pt ogni animazione
- Sound:
- Soundtrack: 1/2pt
- Altri suoni (3 max): 1/2pt ogni suono
- Raycast: 1pt
- User Interface(max 6): 1/2pt ogni elemento grafico (nei livelli di gioco, non nel main menu)
- EXTRA
- Particelle(max 3): 1/2pt ogni sistema di particelle
- Bug
- Lieve/Glitch (Non impediscono il corretto funzionamento del gioco: superamento di barriere invalicabili, accorciamento imprevisto del livello, sfasamento nel sistema di score/powerup, ecc): -1/2pt per ogni bug
- Medio(Animazioni desincronizzate, audio desincronizzato, errori di collisione diversi dal superamento di barriere, errori di IA, ecc): -1pt per ogni bug
- Grave (Crash, Freeze, interruzioni improvvise del gioco, ecc): -2pt per ogni bug.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Esempi di domande e/o esercizi frequenti
Non esistono domande frequenti in quanto ciò che viene valutato è il progetto del gioco che cambia da studente a studente.
Un esempio di gioco potrebbe essere: Come esempio di gioco possiamo immaginare un classico space shooter 2D a scorrimento orizzontale o verticale. Il giocatore manovra una navicella e dovrà affrontare dei nemici che possono essere altre navicelle. Sarà dotato di un'arma che potrà essere potenziata tramite dei powerup rilasciati dai nemici distrutti
English version