Perché questa generazione di contenuti procedurali mentre l'altra non lo è?


18

Sto leggendo il libro online Generation Content procedurale e nel capitolo 1, pagina 2 c'è un esempio di cosa sia PCG e un altro di cosa non è PCG e non posso distinguerli.

Questo è PCG secondo loro:

middleware del motore di gioco che popola rapidamente un mondo di gioco con vegetazione

Questo NON è PCG secondo loro:

un motore di gioco in grado di integrare la vegetazione generata automaticamente

Sempre a pagina 1 hanno affermato esplicitamente di non prendere in considerazione un motore di gioco PCG

Un termine chiave qui è "contenuto". Nella nostra definizione, il contenuto è la maggior parte di ciò che è contenuto in un gioco: livelli, mappe, regole del gioco, trame, storie, oggetti, missioni, musica, armi, veicoli, personaggi, ecc. Il motore di gioco stesso non è considerato contenuto nella nostra definizione.

La mia ipotesi è che l'esempio PCG sia un codice in un gioco (o potrebbe essere un codice che si adatta a qualsiasi gioco) che riconosce la mappa del gioco e la popola di vegetazione in base ad essa. E l'esempio non PCG per me sarebbe come un'opzione disponibile dal motore di gioco in cui lo sviluppatore può aggiungere la vegetazione offline tramite l'interfaccia utente.

L'ultima è un'ipotesi molto folle da parte mia, sono abbastanza sicuro di sbagliarmi perché a prima vista sembrano entrambi PCG. Per favore, aiutami a differenziarli.


9
Confronta due uomini: A entra in una stanza, la guarda, costruisce mobili in base alla stanza e inserisce i mobili nella stanza. B fa lo stesso, ma va all'IKEA (persone che hanno costruito i mobili) per ottenere mobili da mettere nella stanza. Diresti che sia A che B stanno creando mobili? Questa è la differenza che stanno cercando di indicare. A meno che tu non stia creando i mobili da zero, in realtà non stai creando mobili, stai solo usando i mobili esistenti in nuovi modi.
Flater,

Risposte:


27

A titolo di analogia

Un circuito non genera energia. Una lampadina non genera energia. Una batteria non genera energia. Nessuna delle cose che usano o immagazzinano energia generata , sono generatori di energia.

Un generatore a benzina è un generatore di corrente . Una configurazione del pannello solare è un generatore di corrente . Ci si può aspettare che si generino spontaneamente quando vengono lanciati. Altre cose possono usare quell'energia che generano: frigoriferi e televisori e PC e riscaldatori e lampadine.

Allo stesso modo, qualsiasi codice o programma che genera effettivamente il contenuto stesso in fase di esecuzione è PCG. Il resto sono solo utenti di quel contenuto generato proceduralmente (PGC). Adesso,

Generazione di contenuti procedurali

non è lo stesso di

Contenuto generato proceduralmente

PGC è l'artefatto risultante di un processo (programma) che si impegna nel PCG.

Il PCG è sviluppato (programmato) al punto da poter produrre autonomamente contenuti secondo alcune o altre specifiche, ma in (tipicamente) innumerevoli variazioni; PGC viene generato in questo modo come un'unica variazione degli spazi di contenuto possibili altrimenti illimitati all'interno di quella specifica algoritmica più ampia. I PGC sono finiti e statici una volta generati. I PCG gestiscono l' infinito (o abbastanza vicino).

Affrontare le specifiche

"Generazione di contenuti procedurali" si riferisce a codice / applicazioni che generano contenuti.

Qualsiasi gioco può essere considerato un gioco PCG se, in fase di esecuzione , genera dinamicamente nuovi contenuti tramite parte del suo set di istruzioni.

Se tu (o il tuo motore) utilizzate un altro codice di programma che genera contenuto, quindi includete quel contenuto come parte del gioco in fase di compilazione / creazione , quindi il gioco (e il relativo codice) NON è PCG. Quindi:

un motore di gioco in grado di integrare la vegetazione generata automaticamente

... non è PCG, poiché quel motore stesso non produce nuovi contenuti in fase di esecuzione, utilizza semplicemente i contenuti generati da altre parti, che sono stati inclusi manualmente da artisti, designer o sviluppatori.

riconosce la mappa del gioco

PCG non ha nulla a che fare con il riconoscimento. Ha a che fare con il lavoro attivo di creazione di contenuti. Generalmente le applicazioni PCG producono il proprio formato di dati che possono già comprendere e lavorare. In genere non leggono da fonti esterne, anche se quando lo fanno, è semplicemente la vecchia logica del programma ... non il PCG in quanto tale. PCG è tutto basato sulla generazione . Quindi PCG e non PCR :)

Prospettive storiche

Ciò che consideriamo "contenuto" in questo contesto generalmente copre quelle cose che, in passato, gli umani hanno dovuto produrre da soli. Ad esempio negli anni '70 e '80, praticamente tutti i giochi (ad eccezione di alcuni molto speciali) dovevano avere la sua arte, la sua trama, la sua musica, i suoi personaggi e i nomi dei pianeti, e simili, prodotti da un essere umano . Quello era l' opposto polare del PCG.

PCG ha cominciato quando i programmatori di gioco resi conto che al posto della trafila di assunzione di artisti, musicisti, scrittori, ecc - e poi ancora la necessità di integrare il loro lavoro con il codice, o peggio ancora, fare tutto quel lavoro se stessi , così come la codifica - che potevano invece scrivi programmi per generare tutta quella roba per loro. Tali sforzi furono alcune delle prime funzioni, moduli e programmi veramente PCG. Un esempio perfetto è l' XCom / UFO originale , in cui il codice del gioco genera un livello completamente unico per te prima del combattimento. Ancora prima (1979) era il Tempio di Apshai .

Elite è stato un caso diverso: parte del suo contenuto è stato generato quando il gioco era in fase di sviluppo; non solo quel codice era stato scritto dagli stessi autori, ma anche quel contenuto pre-generato veniva in genere utilizzato in fase di esecuzione elite.exe(ovvero quando il giocatore eseguiva il gioco) da ulteriori generatori che facevano parte del codice del gioco , creando il mondo giocato in.

Un esempio più recente è Minecraft (e altri giochi ispirati da esso) in cui il mondo si genera letteralmente intorno a te mentre cammini verso l'orizzonte, grazie in gran parte alla moderna potenza di calcolo. Paragonalo a Rogue o Moria riprodotti su un PC-XT negli anni '80, per i quali potresti doverti sedere qualche volta in attesa del livello da generare! (a seconda delle impostazioni di gioco scelte).

Non tutto il PCG è storicamente radicato nel settore dei giochi. Ad esempio, ci sono quelli che scrivono generatori di fiction. Ad esempio, Ken Perlin nel campo della grafica e della geometria computazionale ha creato l'algoritmo Perlin Noise, per il quale gli è stato successivamente assegnato un premio accademico. Ad esempio, il musicista Brian Eno è da tempo impegnato nella generazione procedurale di spartiti musicali. E come altro esempio, i giochi da tavolo non digitali come HeroQuest / Warhammer Quest hanno inventato molto tempo fa le dinamiche procedurali per creare un tabellone diverso per ogni gioco.


6
Un'eccezione tecnica molto minore: c'era una prova del progetto / progetto di ricerca concettuale in cui il gioco stesso era generato proceduralmente. Cioè, gli obiettivi, le regole e, in una certa misura, la rappresentazione sono stati generati dinamicamente in fase di esecuzione. Sfoca in qualche modo il confine tra contenuto e motore, ma la cartina di tornasole di "genera" continua a essere valida anche lì. Distillazione eccellente.
Pikalek,

3
@Pikalek Sono pienamente d'accordo con questa linea di pensiero. Possiamo spingerci fino a Lisp - che alla fine non c'è distinzione tra istruzioni e dati. Non volevo complicare troppo le cose nella risposta. Grazie per aver commentato.
Ingegnere,

2
@Adocad: penso che tu abbia perso un dettaglio minore nella risposta: "Se tu (o il tuo motore) utilizzate qualche altro codice di programma che genera contenuto e quindi includete tale contenuto come parte del vostro gioco in fase di compilazione / costruzione, il vostro gioco ( ed è codice) NON È PCG " Se avessi incluso il programma nel tuo gioco, invece del contenuto generato dal programma, e il tuo gioco avrebbe attivato il programma quando necessario (localmente, sul computer di un giocatore), quindi sarebbe davvero PCG offline. Ma non è così quando si include semplicemente un risultato di una generazione di PCG (che ora è statico).
Flater,

2
@AC: Penso che la distinzione sia più chiara quando si etichetta come contenuto generato proceduralmente o generazione di contenuti procedurali .
Flater,

4
@Flater Grazie, questo è un modo migliore per dirlo: i contenuti generati proceduralmente possono essere generati offline e / o in fase di runtime, ma la generazione di contenuti procedurali è esplicitamente runtime. (Si noti che uno strumento che genera contenuto che verrà successivamente compilato sta eseguendo PCG, tuttavia dopo che tale contenuto è stato pre-generato e compilato, il gioco che utilizza tale contenuto NON sta eseguendo PCG)
AC
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.