Unity: introduzione storica ed analisi di un microprogetto

Preview:

Citation preview

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/

m_tatafiore@yahoo.it

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.

Recommended