SVILUPPO DI GIOCHI DIGITALI

Anno accademico 2020/2021 - 3° anno - Curriculum B
Docente: Filippo STANCO
Crediti: 6
SSD: INF/01 - Informatica
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

Obiettivi formativi

Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.

  1. 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.
  2. 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.
  3. 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à.
  4. Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e la proprietà di linguaggio tecnico nell'ambito del settore dei giochi digitali.
  5. 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

 ArgomentiRiferimenti testi
1Unitymateriale 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
    • Overriding: 1/2pt
  • 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