Unity: introduzione storica ed analisi di un microprogetto

56
Unity e sviluppo di videogiochi Introduzione storica ed analisi di un microprogetto

Transcript of Unity: introduzione storica ed analisi di un microprogetto

Page 1: Unity: introduzione storica ed analisi di un microprogetto

Unity e sviluppo di videogiochi

Introduzione storica ed analisi di un microprogetto

Page 2: Unity: 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

Page 3: Unity: introduzione storica ed analisi di un microprogetto

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

Page 4: Unity: introduzione storica ed analisi di un microprogetto

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

Page 5: Unity: introduzione storica ed analisi di un microprogetto

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

Page 6: Unity: introduzione storica ed analisi di un microprogetto

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!

Page 7: Unity: introduzione storica ed analisi di un microprogetto

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.

Page 8: Unity: introduzione storica ed analisi di un microprogetto

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

Page 9: Unity: introduzione storica ed analisi di un microprogetto

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é!

Page 10: Unity: introduzione storica ed analisi di un microprogetto

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.

Page 11: Unity: introduzione storica ed analisi di un microprogetto

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

Page 12: Unity: introduzione storica ed analisi di un microprogetto

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?

Page 13: Unity: introduzione storica ed analisi di un microprogetto

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?

Page 14: Unity: introduzione storica ed analisi di un microprogetto

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.

Page 15: Unity: introduzione storica ed analisi di un microprogetto

Area di lavoro e primo oggetto

Page 16: Unity: introduzione storica ed analisi di un microprogetto

Il primo sprite

Page 17: Unity: introduzione storica ed analisi di un microprogetto

Asset grafici

Page 18: Unity: introduzione storica ed analisi di un microprogetto

La gerarchia

Page 19: Unity: introduzione storica ed analisi di un microprogetto

Collisioni

Page 20: Unity: introduzione storica ed analisi di un microprogetto

Collisioni

Page 21: Unity: introduzione storica ed analisi di un microprogetto

Collisioni

Page 22: Unity: introduzione storica ed analisi di un microprogetto

La pallina

Page 23: Unity: introduzione storica ed analisi di un microprogetto

La pallina

Page 24: Unity: introduzione storica ed analisi di un microprogetto

La pallina (creazione di uno script)

Page 25: Unity: introduzione storica ed analisi di un microprogetto

La pallina (creazione di uno script)

Page 26: Unity: introduzione storica ed analisi di un microprogetto

La pallina (creazione di uno script)

Page 27: Unity: introduzione storica ed analisi di un microprogetto

La pallina (creazione di uno script)

Page 28: Unity: introduzione storica ed analisi di un microprogetto

La racchetta

Page 29: Unity: introduzione storica ed analisi di un microprogetto

La racchetta (input)

Page 30: Unity: introduzione storica ed analisi di un microprogetto

La racchetta (limiti del campo)

Page 31: Unity: introduzione storica ed analisi di un microprogetto

La racchetta (inspector e membri pubblici)

Page 32: Unity: introduzione storica ed analisi di un microprogetto

Un mattoncino

Page 33: Unity: introduzione storica ed analisi di un microprogetto

Un mattoncino (gestione delle collisioni)

Page 34: Unity: introduzione storica ed analisi di un microprogetto

Un mattoncino (colorare gli sprite)

Page 35: Unity: introduzione storica ed analisi di un microprogetto

Un mattoncino (due mattoncini)

Page 36: Unity: introduzione storica ed analisi di un microprogetto

Un mattoncino (tanti mattoncini)

Page 37: Unity: introduzione storica ed analisi di un microprogetto

La pallina (variazione)

Page 38: Unity: introduzione storica ed analisi di un microprogetto

La pallina (vita, morte e rinascita)

Page 39: Unity: introduzione storica ed analisi di un microprogetto

La GUI

Page 40: Unity: introduzione storica ed analisi di un microprogetto

La GUI (visualizzare le vite)

Page 41: Unity: introduzione storica ed analisi di un microprogetto

La GUI (visualizzare le vite)

Page 42: Unity: introduzione storica ed analisi di un microprogetto

La GUI (visualizzare le vite)

Page 43: Unity: introduzione storica ed analisi di un microprogetto

Il punteggio

Page 44: Unity: introduzione storica ed analisi di un microprogetto

Il punteggio (GUI)

Page 45: Unity: introduzione storica ed analisi di un microprogetto

Main screen

Page 46: Unity: introduzione storica ed analisi di un microprogetto

Main screen

Page 47: Unity: introduzione storica ed analisi di un microprogetto

Main screen

Page 48: Unity: introduzione storica ed analisi di un microprogetto

Main screen (lo script)

Page 49: Unity: introduzione storica ed analisi di un microprogetto

Main screen

Page 50: Unity: introduzione storica ed analisi di un microprogetto

(Ritorno al) Main screen

Page 51: Unity: introduzione storica ed analisi di un microprogetto

Mettere insieme le scene

Page 52: Unity: introduzione storica ed analisi di un microprogetto

Mettere insieme le scene

Page 53: Unity: introduzione storica ed analisi di un microprogetto

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?

Page 54: Unity: introduzione storica ed analisi di un microprogetto

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 (™)

Page 55: Unity: introduzione storica ed analisi di un microprogetto

Cosa fanno i Veri Programmatori?(insieme ai Veri Grafici)

Oh, e io?

Page 56: Unity: introduzione storica ed analisi di un microprogetto

Link!

http://www.hypothermicgames.com/

[email protected]

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.