Unity: introduzione storica ed analisi di un microprogetto
-
Upload
devday -
Category
Technology
-
view
115 -
download
2
Transcript of Unity: introduzione storica ed analisi di un microprogetto
Unity e sviluppo di videogiochi
Introduzione storica ed analisi di un microprogetto
Mi presento
Maurizio Tatafiore: game programmer dal 2005 e game designer per passione.
Scarra: uno scarafaggio che vive in un videogioco e forse ne sa più di me
Il programma
Introduzione storica alla nascita dei moderni “game engine”
Come si colloca Unity
Passi principali nello sviluppo di un mini clone di Break Out
Focus su alcuni erroriPerò ascoltate solo me
In principio (anni ‘80 e ‘90)
Partiamo dagli anni ‘80
CGA e memory mapping (1981)
Commodore 64 (1982)
Processore VIC-II
Memory mapping con blitting e sprites
Tutto scritto da zero appoggiandosi sull’hardwareMenomale che è partito dagli anni
‘80...
Memoria videoRAM
In principio (anni ‘80 e ‘90)
Commodore Amiga (1986/87)
Ancora più specializzazione dei chipset
Incremento di prestazioni
Maniac Mansion e lo SCUMM di LucasArts
Prime API grafiche
OpenGL (1991)
DirectX (1995)
Sì, è un fan di Commodore, abbiate pazienza.
Hardware
API Grafica
Videogame software
I “construction kit”
Pinball Construction Set (1983)
Shoot-em-up Construction Kit (1987)
STOS (1988) e AMOS (1990)
Orientato al codice
Dialetto del basic
Eh, a quei tempi ci si divertiva con poco!
La svolta: idSoftware e Doom (1993)
Data driven
Netta separazione tra renderer, level data e art assets
Famoso il formato .wad per le mappe
Inventa il termine “game engine”
Licenziabile
Di fatto crea un nuovo mercatoIl tizio che vi parla, quando ha giocato a Doom per la prima volta, ha quasi
vomitato.
L’evoluzione: fine ‘90, primi 2000
id Software - Id tech (1993)
Epic - Unreal (1998)
GarageGames - Torque (2001)
Valve - Source Engine (2004)
CryTek - Cry Engine (2004)Provate a fargli qualche domanda su
Torque, alla fine...
L’evoluzione: princìpi fondanti
IDE general purpose
Sottosistemi
grafica
sonoro
fisica
dati
gestione del multipiattaforma
separazione dei workflow
Data driven
Scripting
Gli scarafaggi sono molto più evoluti… tzé!
Un mostro di nome Unity3D
Nasce nel 2005 solo per Mac
Oggi supporta 21 piattaforme
Consente lo sviluppo su OSX, Windows e Ubuntu (sperimentale)
4,5 milioni di sviluppatori registrati
Eppure:
Si produce moltissima “fuffa”
Ha molti difetti, alcuni gravi
Perché?
Flessibilità senza paragoni
Semplicità di approccioancora ineguagliata
E mi sa che a ‘sto punto gli ritirano l’account.
Unity: panoramica sull’architettura
Unity Editor
Embedded player
Game package
Embedded player
Game package
Embedded player
Game packageIDE
(MonoDevelop o Visual Studio)
Asset Processor
3D Modeling 2D Painting Audio
Unity: panoramica sull’architettura
Struttura component based
Ogni istanza in una scena Unity è un GameObject
Non possiede proprietà se non quelle che consentono la gestione delle componenti
Di default possiede il componente Transform
All’ultima versione ci sono 129 componenti standard
Possibilità di scriptare custom components Perché non ero nella slide precedente? eh? EH?
Unity: panoramica sull’architetturaCustom components (Behaviours)
Scriptabile in C# o UnityScript (dialetto di JS)
Sistema di callback nel ciclo di vita delle entità di gioco
Ehi! Le mie radiografie! Chi te le ha date?
Un esempio: Freak Out
Micro clone di Break Out
Rinominato con un piccolo gioco di parole sul titolo originale
Progetto 2D per semplicità di esposizione
Tempo di creazione originalmente previsto: 3 ore
Alla fine ne ho impiegate 5
Avevo sottovalutato la parte di documentazione
Sì, certo, come no. L’ha chiamato così perché se la fa addosso quando
deve parlare in pubblico.
Area di lavoro e primo oggetto
Il primo sprite
Asset grafici
La gerarchia
Collisioni
Collisioni
Collisioni
La pallina
La pallina
La pallina (creazione di uno script)
La pallina (creazione di uno script)
La pallina (creazione di uno script)
La pallina (creazione di uno script)
La racchetta
La racchetta (input)
La racchetta (limiti del campo)
La racchetta (inspector e membri pubblici)
Un mattoncino
Un mattoncino (gestione delle collisioni)
Un mattoncino (colorare gli sprite)
Un mattoncino (due mattoncini)
Un mattoncino (tanti mattoncini)
La pallina (variazione)
La pallina (vita, morte e rinascita)
La GUI
La GUI (visualizzare le vite)
La GUI (visualizzare le vite)
La GUI (visualizzare le vite)
Il punteggio
Il punteggio (GUI)
Main screen
Main screen
Main screen
Main screen (lo script)
Main screen
(Ritorno al) Main screen
Mettere insieme le scene
Mettere insieme le scene
Pitfalls
Ho “volutamente” commesso vari errori
Uso diretto di “transform”
Input sparso
Spaghetti code (il sistema a componenti invita)
Uso di costanti literal e magic numbers
Scena data driven
Gestione della fisica ed altri sistemi complessi
Gestione della memoria (stringhe, in questo caso)
E se distruggo tutti i mattoncini? (logica di gioco dispersa/manca una gestione centralizzata)
Non avrete mica creduto di esservi liberati di me?
Marketing e realtà
Chiunque può realizzare un videogioco!
E chi sarebbe? TU? LOL!
Chiunque può realizzare un prototipo di videogioco!
Se vorrete realizzare qualcosa di stabile, duraturo e vendibile, assicuratevi la collaborazione di un Vero Programmatore (™)
Cosa fanno i Veri Programmatori?(insieme ai Veri Grafici)
Oh, e io?
Link!
http://www.hypothermicgames.com/
http://bit.ly/hypo_freakout_src (sorgenti utilizzati)
http://bit.ly/hypo_freakout (progetto compilato)
http://bit.ly/hypo_freakout_slides (queste slide in formato ppt)Adesso fategli un po’ di domande… vediamo come se la cava.