come sfruttare la procedural content generation - presentazione svilupparty 2014
Post on 16-Apr-2017
645 Views
Preview:
TRANSCRIPT
come sfruttare laProcedural Content Generation
(e quanto è divertente)
by Michele Pirovano
Bologna, 11 Maggio 2014
Chi sono io
Scaletta• Generazione di Contenuti Procedurali– Cosa è– Qualche esempio– Perché usarla– Quando usarla– Come farla
• Il nostro esempio: – Daedalus Random Dungeon Generator– Come funziona– Qualche dritta– Come va sull’Unity Asset Store
Procedural Content Generation (PCG)• “La Generazione Procedurale di Contenuti è la
generazione programmatica di contenuti per videogiochi usando un processo casuale o pseudo-casuale che risulta in una gamma impredicibile di spazi di gioco.”
- da http://pcg.wikidot.com/
– Generazione Procedurale• Senza (o con limitato) intervento umano
– Di contenuti• Qualsiasi cosa possa essere considerata ‘contenuto’ di un gioco
– Processo casuale• Permette infinite variazioni
Ma funziona?
ROGUE
Ma funziona?
Elite
Ma funziona?
Dwarf fortress
Ma funziona?
Minecraft
Ma funziona?
Civilization V
Ma funziona?
Spore
Quali sono i vantaggi?• Si generano un gran numero di variazioni di un unico contenuto in
poco tempo– Potenzialmente infinite
• Creazione di contenuti dinamici– Off-line, dato un certo input– In tempo reale, adattandosi
al giocatore
• Pesa meno sulla memoria
• Può sorprendere
Quali sono gli svantaggi?• Per generare qualcosa di complesso, richiede un
algoritmo molto complesso• Per generare qualcosa, richiede una conoscenza
approfondita di quel qualcosa– Per fare un generatore di livelli, devi saper far bene i
livelli!• Se non si fa attenzione:– il 90% di ciò che si genera è inutile– Si riempie il codice di ‘casi speciali’– Si eliminano parti interessanti per via dei limiti imposti
Cosa si può generare?• Qualsiasi contenuto di un videogame– Mappe• Livelli• Dungeon• Terreni
– Suoni– Musica– Texture
Cosa si può generare? (e due)
– Modelli• Piante• Edifici• Animali
– Strategie dell’IA – Narrativa– Regole
– ???– Interi giochi
Quanto generare?• Compromesso tra– Tutto fatto a mano– Tutto generato da zero
• La cosa ‘migliore’:– Generare ciò che si può– Aggiungere a mano dettagli difficili da generare, o per cui un
algoritmo è difficile• Esempio:– Struttura dell’albero generata, foglie fatte a mano– Struttura di un dungeon generata, tiles fatti a mano
PCG A MANO
Come generare? (versione base)• Prendete un po’ di dadi
• Scegliete qualche regola• Generate!
Come generare? (versione seria)• Due metodi principali per generare– Search-based:
• Si generano diverse istanze di un contenuto, si valutano le istanze generate e si selezionano le migliori– Richiede tempi di computazione elevati– Permette di scovare delle istanze particolari, a cui il designer
dell’algoritmo non aveva pensato• Può essere interattivo
– Costruttivo:• Si genera direttamente ciò che si vuole ottenere con un
algoritmo ad-hoc– Richiede un algoritmo ‘a colpo sicuro’– Richiede di ‘giocare’ con i parametri di generazione
Qualche tecnica• Tecniche valide per entrambi i metodi (ricerca
o meno)– Vettori di parametri– L-systems– Simplex/perlin noise– Cellular automata– Frattali – Agent-based
Milano, 13 Gennaio 2014
Evoluzione!
Milano, 13 Gennaio 2014
Hastings 2012 - Evolving Content in the Galactic Arms Race Video Game
Il nostro esempio:Daedalus Random Dungeon Generator
Milano, 13 Gennaio 2014
daedalus.artskillz.net
Funzionalità• Mappe 2D e 3D• Completo di asset grafici• Decine di parametri per
gestire la generazione• Interfaccia intuitiva• Tiles direzionali, variazioni, etc.• Full source code
• New: Torri 3D (con scale)
Daedalus è…• Metà PCG. Metà no.– La struttura è generata, i tiles sono fatti a mano
• Costruttivo– Una mappa totalmente navigabile è sempre
generata• I tempi di generazione sono consistenti!
• Agent-based– L’algoritmo si basa su un agente virtuale che ‘scava’
• Pieno di casi speciali
Come funziona
Generatore
Interprete
Mappa ‘Fisica’
Mappa ‘Virtuale’
Parametri
Algoritmo di base (a grandi linee)• Recursive Backtracking (o simili)
• Considera una mappa piena di ‘rocce’• Parti da una cella a caso
1. Scegli una roccia adiacente2. Scava un tunnel3. Ripeti
Dove sta la difficoltà?
Milano, 13 Gennaio 2014
• Dove metto le stanze?– Scelgo delle aree grandi abbastanza, collegate al corridoio
• E le porte?– Tra le stanze e il corridoio
• Voglio le colonne nelle stanze? E nei corridoi?
• Dove metto l’inizio e la fine?
• Decine di casi specifici di cui tener conto!– Decine di euristiche!
L’importanza dell’interfaccia
Milano, 13 Gennaio 2014
• Scegliete parametri intuitivi
• Raggruppate parametri con funzionalità simili
• Pensate ad una modalità «one click»
Come va sull’Asset Store?• Versione Beta sottoposta all'approval nell’ultima settimana di Gennaio.• Review sullo store: 5 giorni• Prezzo di rilascio: $35 (sconto del 30% sull’ipotetico prezzo finale di $50)• Nella prima settimana di vita sull'AssetStore, Daedalus ha totalizzato 17 copie. • Campagna pubblicitaria non aggressiva: forum di Unity, social networks, thread
su vari forum• Nel mese di Febbraio: 31 copie vendute.
Secondo posto nella classifica Top Paid e Top Grossing dell'AssetStore (sezione Editor Add On).
• Da lì in poi, le vendite si sono assestate con circa una copia al giorno• Pubblicazione della versione completa nella prima settimana di Aprile • Prezzo aumentato a $70 (con aggiunta di features e asset)• Nuovo incremento delle vendite, spinte anche dalla nuova feature (generazione
multi-livello)• Ora siamo circa 90 copie vendute.
Grazie per l’attenzione!
michele.pirovano@mail.polimi.it
Qualche fonte utile:
http://pcg.wikidot.com/
http://www.gamasutra.com/view/news/181853/5_tips_for_using_procedurallygenerated_content_in_your_game.php
http://www.gamasutra.com/view/feature/174311/procedural_content_generation_.php
http://www.gamasutra.com/blogs/JayelindaSuridge/20130903/199457/Modelling_by_numbers_Part_One_A.php
http://games.ws.dei.polimi.it/wp-content/vdp/VDP2013-10-ProceduralContentGeneration.pdf
http://homes.di.unimi.it/pirovano
top related