base di conoscenza
CTRL+F per cercare la tua parola chiave

Generazione procedurale

Nell'informatica, la generazione procedurale è un metodo per creare dati in modo algoritmico anziché manuale, in genere attraverso una combinazione di risorse e algoritmi generati dall'uomo associati a casualità e potenza di elaborazione generate dal computer. Nella computer grafica, viene comunemente utilizzato per creare trame e modelli 3D. Nei videogiochi, viene utilizzato per creare automaticamente grandi quantità di contenuti in un gioco. I vantaggi della generazione procedurale includono file di dimensioni inferiori, quantità di contenuto maggiori e casualità per un gameplay meno prevedibile.

Panoramica

Il termine procedurale si riferisce al processo che calcola una particolare funzione. I frattali sono motivi geometrici che spesso possono essere generati proceduralmente. Il contenuto procedurale comune include trame e mesh. Il suono viene spesso generato anche proceduralmente e ha applicazioni sia nella sintesi vocale che nella musica. È stato usato per creare composizioni in vari generi di musica elettronica da artisti come Brian Eno che ha reso popolare il termine "musica generativa".

Mentre gli sviluppatori software hanno applicato tecniche di generazione procedurale per anni, pochi prodotti hanno ampiamente utilizzato questo approccio. Nei videogiochi precedenti sono comparsi elementi generati proceduralmente: The Elder Scrolls II: Daggerfall si svolge in un mondo prevalentemente generato proceduralmente, dando a un mondo circa i due terzi delle dimensioni effettive delle Isole britanniche. Soldier of Fortune di Raven Software utilizza semplici routine per dettagliare i modelli nemici, mentre il suo sequel presentava una modalità di livello generata casualmente. Avalanche Studios ha utilizzato la generazione procedurale per creare un gruppo ampio e vario di isole tropicali dettagliate per Just Cause . No Man's Sky , un gioco sviluppato dallo studio di giochi Hello Games, è tutto basato su elementi generati proceduralmente.

Il moderno demoscene utilizza la generazione procedurale per impacchettare una grande quantità di contenuti audiovisivi in ​​programmi relativamente piccoli.

Nuovi metodi e applicazioni vengono presentati ogni anno in conferenze come la Conferenza IEEE su intelligenza computazionale e giochi e intelligenza artificiale e intrattenimento digitale interattivo.

Applicazione contemporanea

Videogiochi

Storia antica

Prima dei videogiochi orientati graficamente, i giochi roguelike, tra cui Beneath Apple Manor (1978) e l'omonimo genere, Rogue (1980), utilizzavano la generazione procedurale per costruire dungeon per ASCII o sistemi regolari basati su tessere. La generazione procedurale avrebbe definito stanze, corridoi, mostri e tesori che il giocatore avrebbe trovato. I Roguelike e i giochi basati sui concetti roguelike, consentono lo sviluppo di un gameplay complesso senza dover dedicare troppo tempo alla creazione del mondo di un gioco.

Il Maze Craze del 1978 per Atari VCS usò un algoritmo per generare un labirinto casuale, top-town per ogni gioco.

Alcuni giochi utilizzavano generatori di numeri pseudocasuali venivano spesso usati con valori seed predefiniti per generare mondi di gioco molto grandi che sembravano essere premade. Presumibilmente Sentinel aveva 10.000 livelli diversi memorizzati in soli 48 e 64 kilobyte. Un caso estremo è stato l' Elite , che inizialmente doveva contenere un totale di 248 (circa 282 trilioni) di galassie con 256 sistemi solari ciascuna. Tuttavia, l'editore temeva che un universo così gigantesco avrebbe causato incredulità nei giocatori e otto di queste galassie furono scelte per la versione finale. Altri importanti primi esempi includono il gioco del 1985 Rescue on Fractalus che utilizzava i frattali per creare proceduralmente, in tempo reale, le scoscese montagne di un pianeta alieno e River Raid , il gioco Activision del 1982 che utilizzava una sequenza numerica pseudocasuale generata da un registro a scorrimento a feedback lineare al fine di generare un labirinto scorrevole di ostacoli.

Uso moderno

Sebbene i moderni giochi per computer non abbiano le stesse restrizioni di memoria e hardware che avevano i giochi precedenti, l'uso della generazione procedurale è spesso impiegato per creare giochi, mappe, livelli, personaggi o altri aspetti casuali che sono unici in ogni gioco.

Nel 2004, uno sparatutto in prima persona per PC chiamato .kkrieger è stato rilasciato da un gruppo demo tedesco. È interamente contenuto in un eseguibile da 96 kilobyte per Microsoft Windows che genera centinaia di megabyte di dati 3D e di trama durante l'esecuzione. Secondo uno dei programmatori, "si è trattato di un completo fallimento per quanto riguarda la parte di gioco (soprattutto perché nessuno coinvolto ha veramente a cuore questo aspetto)".

RoboBlitz di Naked Sky ha utilizzato la generazione procedurale per massimizzare il contenuto in un file scaricabile inferiore a 50 MB per Xbox Live Arcade. Will Wright's Spore si avvale anche della sintesi procedurale.

La generazione procedurale viene spesso utilizzata nei sistemi di bottino di giochi basati sulle missioni, come giochi di ruolo d'azione e giochi di ruolo online multiplayer di massa. Sebbene le missioni possano avere ricompense fisse, altri bottini, come armi e armature, possono essere generati per il giocatore in base al livello del personaggio del giocatore, al livello della missione, alla loro prestazione nella missione e ad altri fattori casuali. Ciò porta spesso al bottino a cui viene applicata una qualità di rarità per riflettere quando il sistema di generazione procedurale ha prodotto un oggetto con attributi migliori della media. Ad esempio, la serie Borderlands si basa sul suo sistema di generazione procedurale che può creare oltre un milione di pistole e altri equipaggiamenti unici.

Molti giochi open world o di sopravvivenza creano proceduralmente un mondo di gioco da un seme casuale o da uno fornito dal giocatore, in modo che ogni gioco sia diverso. Questi sistemi di generazione creano numerosi biomi basati su pixel o voxel con distribuzione di risorse, oggetti e creature. Il giocatore ha spesso la possibilità di regolare alcuni dei parametri di generazione, come specificare la quantità di copertura dell'acqua in un mondo. Esempi di tali giochi includono Dwarf Fortress e Minecraft . Un artefatto della generazione procedurale attorno a questi giochi è che se lo spazio che il giocatore è autorizzato ad esplorare non è limitato, la casualità della generazione procedurale inizierà a produrre più rumore del contenuto; questo è esemplificato nell'idea delle "Terre lontane" in alcune versioni precedenti di Minecraft , dove le solite transizioni fluide tra i biomi sono state sostituite con formazioni casuali.

La generazione procedurale viene utilizzata anche nell'esplorazione dello spazio e nei giochi di trading. Elite: Pericoloso , sebbene utilizzi i 400 miliardi di stelle conosciute della Galassia della Via Lattea come base mondiale, utilizza la generazione procedurale per simulare i pianeti in questi sistemi solari. Allo stesso modo, Star Citizen utilizza la tecnologia per i suoi pianeti, per creare una raccolta di pianeti di dimensioni planetarie perfettamente caricati nel suo universo fatto a mano. I-Novae Infinity presenta una pletora di pianeti che sono generati proceduralmente tra i quali il giocatore può viaggiare su navi spaziali. Outerra Anteworld è un videogioco in sviluppo che utilizza la generazione procedurale e i dati del mondo reale per creare una replica virtuale del pianeta Terra in scala reale. No Man's Sky presenta un universo contenente 18 quintilioni di pianeti che si generano proceduralmente al volo quando il giocatore li incontra, incluso il terreno, il clima, la flora e la fauna, nonché un certo numero di specie aliene che spaziano nello spazio. Questo universo è definito dall'uso di un singolo numero seme casuale per il loro motore deterministico, assicurando che lo stesso contenuto verrà generato negli stessi posti per tutti i giocatori, il che consente ai giocatori di condividere le scoperte usando solo la conoscenza delle posizioni dei pianeti in la galassia virtuale.

Film

Come nei videogiochi, la generazione procedurale viene spesso utilizzata nei film per creare rapidamente spazi visivamente interessanti e precisi. Questo è disponibile in un'ampia varietà di applicazioni.

Un'applicazione è conosciuta come una fabbrica imperfetta , in cui gli artisti possono generare rapidamente un gran numero di oggetti simili. Ciò spiega il fatto che, nella vita reale, non esistono due oggetti esattamente uguali. Ad esempio, un artista potrebbe modellare un prodotto per uno scaffale di un negozio di alimentari e quindi creare una fabbrica imperfetta che genererebbe un gran numero di oggetti simili per popolare lo scaffale.

MASSIVE è un pacchetto software di animazione e intelligenza artificiale di fascia alta utilizzato per generare effetti visivi legati alla folla per film e televisione. È stato sviluppato per creare eserciti di combattimento di centinaia di migliaia di soldati per i film de Il Signore degli Anelli di Peter Jackson automaticamente.

Un rumore coerente può essere estremamente importante per il flusso di lavoro procedurale nel film. Il rumore simplex è spesso più veloce con meno artefatti, anche se può essere usata anche una vecchia funzione chiamata rumore di Perlin. Il rumore coerente, in questo caso, si riferisce a una funzione che genera una pseudo-casualità regolare in n dimensioni.