Warum wird dieser prozedurale Inhalt erstellt, während dies bei anderen nicht der Fall ist?

18

Ich lese das Online-Buch zur Erstellung von prozeduralen Inhalten und in Kapitel 1, Seite 2 finden Sie ein Beispiel dafür, was PCG ist und ein anderes Beispiel dafür, was PCG nicht ist, und ich kann sie nicht auseinanderhalten.

Dies ist PCG nach ihnen:

Game Engine Middleware, die eine Spielwelt schnell mit Vegetation bevölkert

Dies ist NICHT PCG nach ihnen:

eine Game-Engine, die automatisch erzeugte Vegetation integrieren kann

Ebenfalls auf Seite 1 gaben sie ausdrücklich an, keine Game-Engine-PCG in Betracht zu ziehen

Ein Schlüsselbegriff ist hier „Inhalt“. In unserer Definition ist der größte Teil des Inhalts in einem Spiel enthalten: Levels, Karten, Spielregeln, Texturen, Geschichten, Gegenstände, Quests, Musik, Waffen, Fahrzeuge, Charaktere usw. Die Spiel-Engine selbst wird nicht als Inhalt betrachtet in unserer Definition.

Ich vermute, das PCG-Beispiel ist ein Code in einem Spiel (oder es könnte ein Code sein, der sich an jedes Spiel anpasst), der die Spielkarte erkennt und sie entsprechend mit Vegetation bevölkert. Und das nicht-PCG-Beispiel für mich wäre wie eine Option, die über die Game-Engine verfügbar ist, wenn der Entwickler die Vegetation über die Benutzeroberfläche offline hinzufügen kann.

Der letzte ist eine sehr sehr wilde Vermutung von mir, ich bin mir ziemlich sicher, dass ich falsch liege, denn auf den ersten Blick klingen beide wie PCG. Bitte helfen Sie mir, sie zu unterscheiden.

Adocad
quelle
9
Vergleichen Sie zwei Männer: A betritt einen Raum, schaut ihn sich an, baut Möbel auf der Grundlage des Raums und stellt die Möbel in den Raum. B tut dasselbe, aber er geht zu IKEA (Leuten, die die Möbel gebaut haben), um Möbel für den Raum zu holen. Würden Sie sagen, dass sowohl A als auch B Möbel schaffen? Das ist der Unterschied, auf den sie hinweisen wollen. Wenn Sie die Möbel nicht von Grund auf neu erstellen, erstellen Sie sie nicht tatsächlich, sondern verwenden vorhandene Möbel nur auf neue Weise.
Flater

Antworten:

27

In Analogie

Ein Stromkreis erzeugt keinen Strom. Eine Glühbirne erzeugt keinen Strom. Eine Batterie erzeugt keinen Strom. Keines der Dinge, die erzeugten Strom verbrauchen oder speichern , sind Stromerzeuger.

Ein benzinbetriebener Generator ist ein Stromgenerator . Ein Solarpanel-Aufbau ist ein Stromerzeuger . Es ist zu erwarten, dass sie sich beim Anpfiff spontan bilden. Andere Dinge können den Strom verbrauchen, den sie erzeugen: Kühlschränke, Fernseher, PCs, Heizungen und Glühbirnen.

Ebenso ist jeder Code oder jedes Programm, das zur Laufzeit selbst Inhalte generiert, PCG. Der Rest sind nur Benutzer dieses prozedural generierten Inhalts (PGC). Jetzt,

Prozedurale Inhaltsgenerierung

ist nicht dasselbe wie

Prozedural generierter Inhalt

PGC ist das resultierende Artefakt eines Prozesses (Programms), der sich mit PCG beschäftigt.

PCG wird so entwickelt (programmiert), dass es selbstständig Inhalte nach einigen oder anderen Spezifikationen produzieren kann, jedoch in (typischen) unzähligen Variationen. PGC wird dabei als eine einzige Variation der ansonsten unbegrenzten möglichen Inhaltsräume innerhalb dieser breiteren algorithmischen Spezifikation erzeugt. Einmal erzeugte PGCs sind endlich und statisch . PCGs befassen sich mit Unendlichkeit (oder nahe genug).

Adressangaben

"Prozedurale Inhaltsgenerierung" bezieht sich auf Code / Anwendungen, die Inhalte generieren.

Jedes Spiel kann als PCG-Spiel betrachtet werden, wenn es zur Laufzeit über einen Teil seines Befehlssatzes dynamisch neuen Inhalt generiert.

Wenn Sie (oder Ihre Engine) einen anderen Programmcode verwenden, der Inhalte generiert, fügen Sie diesen Inhalt zum Zeitpunkt der Kompilierung / Erstellung in Ihr Spiel ein, und Ihr Spiel (und sein Code) ist NICHT PCG. Daher:

eine Game-Engine, die automatisch erzeugte Vegetation integrieren kann

... ist keine PCG, da diese Engine selbst zur Laufzeit keinen neuen Inhalt erzeugt, sondern lediglich generierten Inhalt von anderen Stellen verwendet, der manuell von Künstlern, Designern oder Entwicklern eingefügt wurde.

erkennt die Spielkarte

PCG hat nichts mit Anerkennung zu tun. Es hat mit der aktiven Arbeit an der Erstellung von Inhalten zu tun. Im Allgemeinen erzeugen PCG-Anwendungen ein eigenes Datenformat, das sie bereits verstehen und verarbeiten können. Normalerweise lesen sie keine externen Quellen ein, obwohl dies dann nur eine alte Programmlogik ist ... nicht PCG als solche. PCG dreht sich alles um Generierung . Daher PCG und nicht PCR :)

Historische Perspektiven

Was wir „Inhalt“ in diesem Zusammenhang betrachten deckt im Allgemeinen die Dinge , die in der Vergangenheit haben Menschen haben selbst zu produzieren. Zum Beispiel musste in den 70er und 80er Jahren so ziemlich jedes Spiel (mit Ausnahme einiger weniger) seine Kunst, seine Handlung, seine Musik, seinen Charakter und seine Planetennamen und dergleichen von einem Menschen produzieren lassen . Das war das genaue Gegenteil von PCG.

PCG begann , als Spieleprogrammierer erkannte , dass anstelle der rigmarole der Einstellung Künstler, Musiker, Schriftsteller usw. - und dann mit noch ihre Arbeit mit dem Code zu integrieren, oder schlimmer noch, all diese Arbeit selbst zu tun sowie Codierung - sie konnten Schreiben Sie stattdessen Programme, um all das Zeug für sie zu generieren. Diese Bemühungen waren einige der ersten wirklich PCG-Funktionen, -Module und -Programme. Ein perfektes Beispiel ist das Original XCom / UFO , bei dem der Code des Spiels vor dem Kampf ein für Sie völlig einzigartiges Level erzeugt. Noch früher (1979) war der Tempel von Apshai .

Elite war ein anderer Fall: Ein Teil des Inhalts wurde während der Entwicklung des Spiels generiert. Dieser Code wurde nicht nur von denselben Autoren geschrieben, sondern auch elite.exevon weiteren Generatoren, die Teil des Code des Spiels waren, zur Laufzeit (dh als Sie das Spiel ausführten) für die Erstellung Ihrer eigenen Welt verwendet gespielt in.

Ein neueres Beispiel ist Minecraft (und andere davon inspirierte Spiele), bei denen die Welt buchstäblich um Sie herum generiert wird, während Sie sich dem Horizont nähern, was zum großen Teil der modernen Rechenleistung zu verdanken ist. Vergleichen Sie dies mit Rogue oder Moria, die in den 1980er Jahren auf einem PC-XT gespielt wurden und auf deren Erzeugung Sie möglicherweise warten müssen! (abhängig von den gewählten Spieleinstellungen).

Nicht alle PCGs sind historisch in der Spieleindustrie verwurzelt. Zum Beispiel gibt es Leute, die Fiktionsgeneratoren schreiben. Zum Beispiel hat Ken Perlin im Bereich Grafik und Computergeometrie den Perlin Noise-Algorithmus entwickelt, für den er später einen Academy Award erhielt. Beispielsweise beschäftigt sich der Musiker Brian Eno seit langem mit der prozeduralen Generierung von Partituren. Und als weiteres Beispiel haben nicht-digitale Brettspiele wie HeroQuest / Warhammer Quest vor langer Zeit die Verfahrensdynamik erfunden, um für jedes Spiel ein anderes Spielbrett zu erstellen.

Ingenieur
quelle
6
Eine sehr kleine technische Ausnahme - es gab ein Proof-of-Concept-Forschungsprojekt / -Spiel, in dem das Spiel selbst prozedural generiert wurde. Das heißt, die Ziele, Regeln und bis zu einem gewissen Grad die Darstellung wurden alle zur Laufzeit dynamisch generiert. Es verwischt die Grenze zwischen Inhalt und Engine ein wenig, aber der Lackmustest von "Erzeugt es" hält auch dort noch an. Hervorragende Destillation.
Pikalek
3
@Pikalek Da stimme ich voll und ganz zu. Wir können es so weit bringen wie Lisp - dass es letztendlich keinen Unterschied zwischen Anweisungen und Daten gibt. Ich wollte die Antwort jedoch nicht zu komplizieren. Danke für den Kommentar.
Ingenieur
2
@Adocad: Ich denke, Sie haben ein kleines Detail in der Antwort verpasst: "Wenn Sie (oder Ihre Engine) einen anderen Programmcode verwenden, der Inhalt generiert , und diesen Inhalt dann beim Kompilieren / Erstellen als Teil Ihres Spiels einbeziehen ( und es ist Code) ist NICHT PCG " Wenn Sie das Programm in Ihr Spiel aufgenommen hätten, anstatt den Inhalt, der durch das Programm generiert wurde, und Ihr Spiel das Programm auslösen würde, wenn es benötigt wird (lokal auf dem Computer eines Spielers), dann es wäre in der Tat offline PCG. Dies ist jedoch nicht der Fall, wenn Sie einfach ein Ergebnis aus einer PCG-Generation (die jetzt statisch ist) einbeziehen.
Flater
2
@AC: Ich denke, die Unterscheidung ist klarer, wenn man sie entweder als prozedural erzeugten Inhalt oder als prozedurale Inhaltserzeugung bezeichnet .
Flater
4
@Flater Danke, das ist eine bessere Art, es zu formulieren - prozedural generierte Inhalte können offline und / oder zur Laufzeit generiert werden, aber prozedural generierte Inhalte werden explizit zur Laufzeit generiert . (Beachten Sie, dass ein Werkzeug , die Inhalte erzeugt , die später erstellt werden , in wird PCG tun, aber nach , dass der Inhalt wurde vorab generierte und kompilierte in dem Spiel , dass Verwendungen , dass Inhalte nicht PCG tun)
AC