Entwicklung einer funktionsfähigen Welterzeugungssprache

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Die WBO ist beendet!
    Alle Beiträge wurden eingerecht und nun warten wir auf die Bewertungen der Juries.

    Wir wünschen allen Teilnehmern viel Erfolg!
    Das WBO-Orgatool findet ihr hier.

    • Entwicklung einer funktionsfähigen Welterzeugungssprache

      Hallo,

      Viele von euch kennen sicher die Myst-Spiele oder sogar die Myst-Bücher. In diesem Franchise ging es um eine Kultur, die D'Ni, die mit einer Kunstsprache Welten beschrieben hat in Form von Büchern. Diese Bücher hatten die Eigenschaft, dass man durch sie die beschriebene Welt wirklich betreten und erkunden konnte. Es handelt sich also um eine Form des Weltenbastlens. Ich habe vor vielen Jahren mal mit der Idee gespielt, ob man im digitalen Zeitalter eine solche Sprache entwickeln könnte und in all der Zeit immer wieder darüber nachgebrütet. Inzwischen bin ich zu dem Schluss gekommen, dass das möglich ist. Falls jemand Zweifel daran hegt: Ich arbeite seit vielen Jahren als Datenbankentwickler und kann sowas ganz gut einschätzen.

      Die Eigenart dieser Sprache war so, dass man (großteils) nur das allgemeine der Welt beschreibt (im aktuellen Thread-Jargon würden wir "nicht-instanziiert" sagen). Ich beschreibe z.B. Tierarten und Pflanzen oder die Kultur der dortigen Bewohner, aber ich erwähne keine konkreten Namen oder Orte und auch keine konkreten Geschehnisse der Gegenwart. Beim Betreten der Welt wird die Welt dann instanziiert, d.h. man landet in einer der möglichen Welten, die der Beschreibung genügt.

      Wie stelle ich mir das vor? Zu definieren ist eine Sprache mit syntaktischen Regeln, die so ähnlich wirkt, wie eine Programmiersprache (aber der Ästhetik wegen nicht so aussehen soll) und die dazu dient, Welten zu beschreiben. Die Hauptarbeit hier liegt (a) in der praktischen Erstellung eines Wortschatzes, mit dem Welten beschrieben werden können und (b) in der theoretischen Entwicklung der Syntax, wie diese Worte aneinandergereiht und/oder dekliniert werden müssen, damit ein Computerprogramm anhand dieser Beschreibung eine Welt erzeugen kann. Diese Welt ist dann erstmal nur ein Datenbestand (für die Kenner: z.B. eine XML-Datei), mit der eine Welt algorithmisch verständlich definiert werden kann. Die Definition eines solchen Datenmodells muss erarbeitet werden (c). Dann fehlt noch die Möglichkeit, die Welt zu betreten. Hier stelle ich mir im einfachsten Fall ein Textadventure vor, das vom Computerprogramm aus dem Datenmodell erzeugt wird. D.h. man kann mittels eines generisch erzeugten Textadventures die Welt erkunden. Dieses Programm müsste entwickelt werden (d). Und dann brauchen wir natürlich fleißige Bastler, die mit diesem System konkrete Welten erstellen (e).

      Konkret stelle ich mir das so vor: Ich möchte meiner Welt rote Rosen hinzufügen, aber nur an Küstengebieten. Also öffne ich mein Weltendefinitionsbuch (Textdatei) und ergänze in der Kunstsprache "Rosiroton an Küstozono!" (wie zu sehen ist, läge der kreative Part der Wortschatzentwicklung nicht bei mir :weissnicht: ). Das Übersetzungsprogramm öffnet meine zur Textdatei verknüpfte XML-Definitionsdatei und ergänzt irgendwas in der Form <spezies><name>Rose</name><farbe>rot</farbe><verbreitung>Küste</verbreitung></spezies> (stark vereinfacht dargestellt, es fehlen die ganzen Beschreibungs-Fragmente, aus denen das Textadventure generiert wird). Dann logge ich mich in das Textadventure-Programm, öffne die Datei und laufe im Spiel so lange herum, bis ich an eine Küste komme und freue mich, dass das Programm anzeigt "Es gibt viele rote Rosen an diesem Küstenstreifen." oder sowas.

      Also mal ins Blaue gefragt: Gibt es hier genügend Verrückte, so ein Unterfangen auszuprobieren? Ich selbst übernehme gern die theoretischen Arbeiten (Datenmodell etc. habe ich über Jahre sowieso schon mental durchgekaut) und, falls kein weiterer Entwickler hinzuspringt, könnte ich auch die Programmierung übernehmen. Wir bräuchten aber mindestens noch einen/mehrere der hier in Hülle und Fülle herumlaufenden Sprachenbastler. Vielleicht hat ja sogar jemand schon eine geeignete Sprache herumliegen.

      Gruß Marcel
    • Also ich wäre durchaus an dem Projekt interessiert, weiss jetzt allerdings noch nicht so genau, wie ich mich am besten einbringen könnte. Bin leider kein Programmierer. HTML, CSS und Script-Modding für Europa Universalis 4 kann ich anbieten. Und Kreativität. Also wenn es irgendetwas zu tun gibt versuche ich mich gern daran.
      :alt: :arbeit:

      Erst wenn wir die Vergangenheit gelesen haben, können wir die Zukunft schreiben.
    • Was du da beschreibst, ist mehr oder weniger, wie Minecraft seine Welten erzeugt?

      In der letzten Version, deren Code ich gesehen habe (1.12), waren zwar alle Biominformationen in ihren jeweiligen Java-Klassen hard gecoded, allerdings meine ich mich zu erinnern, dass alle Werte, die ein Biom beschreiben, irgendwann mal in JSON-Datein ausgelagert werden sollten.
      "The only thing I ever want to give a cat is its name and address to my dogs"
    • Ein Schritt zum .world-Dateiformat, mit dem irgendwann Westworld-Simulationen und Holodecks laufen *__*


      Als Vorarbeit zu a) wäre aber noch wichtig das theoretische Konstrukt "Welt" zu definieren. Da versucht sich z.B. worldanvil.com/ mit einem Text-Template-System dran. Man kann dort also Templates für Textformate erstellen und die Querverlinken. Zum Teil sind wohl auch Datenstrukturen wie Karte oder Zeitleiste konstruier- und verknüpfbar. Wenn du alle Variablen vorgeben möchtest (ich hoffe ein wenig als XML-Attribute und nicht in endlosen Verschachtelungen <_<) wird das ganze etwas umfangreich und muss ggf. ewig erweitert werden.

      Am theoretischen und konzeptionellen Teil würde ich gerne mitmachen, vielleicht im Anschluss auch am technischen.
      > Möchte in Fantasy-Ausrichtung an den Erfolg von Scientology anknüpfen.
    • Also Thalak, Eru und ich als handliche Arbeitsgruppe, zumindest für den Anfang? Das ist überschaubar genug, dass es keine Projektform oder sowas braucht. Falls das Projekt dereinst Fahrt aufnimmt, kann man ja noch einen organisatorischen Rahmen drüberstülpen.

      Ich hoffe nicht darauf, dass wir nennenswert oft gleichzeitig online sind, um via Chat oder Teamspeak etc. zu arbeiten, schriftlich via Mail, PN oder Forum dürfte zielführender sein. Oder sagen wir so: Ich möchte mir wegen dieser Sache keine festen Termine machen, davon habe ich genug :) Ich schlage vor, solange wir nur zu dritt sind und das Projekt ein Keimling ist, dass wir die Arbeitsgespräche per Mail führen und hier im Forum dann immer mal wieder Zwischenstände bringen, bis evtl. mehr Leute an Bord wollen? Wenn ihr damit einverstanden seid, schickt mir doch bitte eure Mailadressen per PN.

      Gruß Marcel
    • Wie genau stellst du dir denn die zu bastelnde Sprache vor? Soll das im Endeffekt einfach nur eine "hübsche" Variante von XML sein? Oder soll die noch mehr können? Wenn ja, was genau? Sollen die Story-Elemente für das Text-Adventure auch in dieser Sprache verfasst werden und dann erst durch den Algorithmus des Spiels ins Deutsche übersetzt werden. Oder soll die Sprache wirklich nur die "nicht-instanzierte" Welt beschreiben können?
      Ich glaube, für eine französische Hure ist Elatan ein bisschen zu provinziell.

      Kann man eigentlich mit Fäkalien töpfern? -- Tö.
    • Hallo Trajan,

      Die Detailausprägungen werden natürlich erst im Zuge des Projekts erarbeitet. Meine Vision bzw. Denkansätze kann ich aber schon äußern.

      Du fragst nach der Mächtigkeit der Sprache gegenüber XML. Da aus dem Sprachtext ein XML erzeugt wird, ist die Sprache technisch natürlich nicht mächtiger als das zu entwickelnde XML-Format. Aber so gesehen haben wir seit der Erfindung Assemblers auch keine Fortschritte unter der Sonne mehr gehabt. Inhaltlich gibt es aber bedeutende Unterschiede: XML ist hierarchisch aufgebaut. Wenn ich dort z.B. einem Objekt, sagen wir meinen Rosen, nachträglich eine Eigenschaft hinzufügen möchte (z.B. wie zart sie sich doch im Wind wiegen), muss ich meine Rosen im XML suchen und dort die neue Eigenschaft einfügen. D.h. in der Datei sind strukturell zusammengehörende Daten auch nah beieinander. Im Sprachtext ist das nicht erforderlich. Ich kann meine "Rosi-so-zarto im Windo"-Zeile z.B. auch einfach ans Ende schreiben oder eben dahin, wo es mir passt. Dadurch gibt es die Möglichkeit, den Welt-Beschreibungstext nach eigenem Augenmerk zusammenzustellen, z.B. nach Spezies oder nach Regionen in der Welt etc. Dadurch kann ich der Welt bereits im Text den Tiefgang oder Anklang mitgeben, den ich beim Weltenbasteln empfinde. Viele, die ihre Welten auf Homepages beschreiben, möchten die Struktur und Zusammenstellung ja auch frei wählen. Ich verstehe den Sprachtext bereits als künstlerischen, inhaltlichen Aspekt des Bastelns, den ich beim Bearbeiten einer XML-Datei nicht empfinde.

      Weiter sprichst du von Story-Elementen. Bei einem Textadventure denkt man gleich an eine Story, aber der Sinn unseres Textadventures besteht in der Erkundung der Welt. D.h. man läuft herum, betrachtet die großen und kleinen Dinge der Welt, interagiert mit ihnen (Rosen pflücken, dran riechen etc.). Es gibt keinen Mord oder sowas, den es aufzudecken gilt, daher ist das Wort Story für unser Textadventure unpassend.

      Die nächste Frage bezieht sich auf die exakte Transformation von Sprache über XML bis hin zum endgültigen Textadventure-Text. Hier habe ich mir schon ausführliche Gedanken zur Machbarkeit und Umsetzung gemacht, werde das aber im Projekt offen zur Diskussion stellen. Meine Idee ist es, die Daten für die Definition und für die Darstellung der Welt zu trennen. Die Definition der Welt ist eine Sprachdatei bzw. zugehörige XML-Datei, die der Weltenbastler schreibt, der die konkrete Welt bastelt. Die Darstellungs-Datei ist ebenfalls eine XML- oder sonstige Datendatei die fest zum Programm gehört, nicht zur Welt. Darin steht, wie die einzelnen Objekte, die es in der Sprache gibt, repräsentiert werden, bei uns also durch Textfragmente eines Textadventures. Ich möchte dem Projekt nicht vorgreifen und zu weit ins Detail gehen. Hintergrund der Idee ist, dass der Wortschatz der Sprache leicht erweiterbar sein soll (ohne den Quelltext anzufassen) und dass man in seiner Sprachdatei nicht immer das Rad neu erfinden soll, indem man erstmal erklärt, was Rosen eigentlich sind und wie sie in einem Textadventure dargestellt werden.

      Deine letzte Frage zielt auf die funktionelle Mächtigkeit der Sprache. Es gibt bereits zahllose Sprachen und Formate, mit denen konkrete (instanziierte) Textadventures erzeugt werden können, wo man also jeden Ort, jede Person etc. beschreiben muss. Die Sprache hier soll vorwiegend allgemeines, nicht-instanziiertes beschreiben, das soll ihr Mehrwert gegenüber den bisherigen Systemen sein. Der spannende Punkt ist, dass man die Welt dann betreten und selber erstaunt entdecken kann - und live vor Ort umschreiben. Ich sage z.B. (in meiner Kunstsprache) während ich blühende Blumen betrachte, "Wo immer Blumen unter freiem Himmel blühen, sollen auch Bienen sein.". Wenn ich nun an x-und-80 Stellen im Text definiert habe, dass diese und jene Art von Blumen irgendwo blühen, habe ich automatisch auch überall Bienen, ohne das im XML überall händisch anzufügen. Dass die Sprache ihre Stärke in nicht-instanziierten, allgemeinen Beschreibungen sucht, verhindert aber nicht, dass sie auch konkretes beschreiben kann. Sicher will ich z.B. auf die Sonne hinweisen, wenn sie grün leuchtet statt gelb, ohne in meinem Text von irgendeiner vagen Zahl an grünen Sonnen zu spechen.

      Bist du interessiert, dann komm an Bord!

      Gruß Marcel
    • Vielen Dank für die sehr ausführlichen Antworten! Das klingt alles wirklich cool und spannend, und theoretisch hätte ich auch große Lust, mitzuhelfen. Aber in der Praxis habe ich derzeit einfach viel zu viele Projekte offen, um die ich mich kümmern sollte. Da hätte dieses hier allerletzte Priorität, und das hat es nun wirklich nicht verdient.

      Ich bin aber sehr gespannt auf die Ergebnisse! :sabber:
      Ich glaube, für eine französische Hure ist Elatan ein bisschen zu provinziell.

      Kann man eigentlich mit Fäkalien töpfern? -- Tö.
    • Dass alle Welten sich in so einem System kategorisieren lassen, würde ich mal klar verneinen. ;) Aber es gibt eine gewisse Menge, bei der das (sinnvollerweise) machbar ist, allerdings vermutlich eine gigantische Menge Aufwand bedeuten würde... jedenfalls wenn es sich um eine seit vielen Jahren bebastelte Welt handelt.

      Die Syntax, die du anklingen hast lassen, erscheint mir Probleme in Massen heraufzubeschwören. Also das "Rosi-so-zarto im Windo". Es muss ja darin alle Information behalten bleiben, daher müsste das Wort "Rose" schon mal komplett ausgeschrieben sein - oder halt in irgendeiner komprimierten Weise codiert, sodass kein Informationsverlust stattfindet.
      Am naheliegensten scheint mir eine Syntax mit kurzen, grammatisch eindeutigen Sätzen.

      "Rosen können sich bewegen: Diese Bewegung erfolgt im Wind (zart)."

      Und da musste ich dann an Dwarf Fortress denken - und ich glaube, DF ist eh das ambitionierteste Projekt, eine nichtinstanzierte Welt zu schaffen. Es gibt dort aber natürlich auch viele Sachen, die festgeschrieben ist, wie z.B. die Möglichkeit, Wasser von der zweiten Zehe von links zu trinken. :freak: (Hab ich mal gemacht im DF-Adventurer-Modus ;) )
      Nights are deep when days are long. / / / Any sufficiently complex explanation is indistinguishable from ISSO. / / / Art should comfort the disturbed and disturb the comfortable.
      »Aus den Nacken waren Kehlköpfe geworden.« (2019)
    • Hallo Jundurg,

      deine Anmerkungen klingen für mich ähnlich wie die von Trajan, weshalb ich auf meine Aussagen oben verweise. Ich bin auch gespannt, wie weit wir mit dem Projekt kommen. Ich halte es aber für motivierender, mich mit dem zu befassen, was wir erreichen können anstatt mit dem Gegenteil.

      Was die Sprachsyntax angeht: Meine Beispiele waren frei fiktiv. Und tatsächlich haben wir uns inzwischen auf eine Teilmenge des Englischen verständigt, um die Lernschwelle des Systems zu reduzieren. Das mit der eindeutigen Grammatik kriegen wir schon hin. Das Studium formaler Grammatiken ist ja Teil jeder Informatiker- und Mathematikerausbildung.

      Gruß Marcel
    • Saavedro schrieb:

      Das mit der eindeutigen Grammatik kriegen wir schon hin. Das Studium formaler Grammatiken ist ja Teil jeder Informatiker- und Mathematikerausbildung.
      Bah, Chomsy... :kotz:
      Aber ja, in der Informatik und somit auch bei euch ist der wohl tatsächlich ganz gut aufgehoben.^^ Solange er sich doch bitte aus der Kognitionsforschung raushält! %-)

      [Sorry, off-topic Rant ende!]
      Ich glaube, für eine französische Hure ist Elatan ein bisschen zu provinziell.

      Kann man eigentlich mit Fäkalien töpfern? -- Tö.
    • Hallo zusammen,

      Thalak und ich möchten euch gerne unseren Zwischenstand vorstellen (Eru hat sich wegen Zeitmangel aus dem Projekt zurückgezogen).

      Wir sind dem zuvor vorgestellten Architekturplan gefolgt und testen bereits mit einem rudimentären Prototypen.



      Im Programm wird eine Welt geladen und über die Navigationsbuttons erkundet. Auf "umschauen" erhält man detailliertere Einsicht in den aktuell betretenen Ort. Dies soll später ein richtiges Textadventure werden, aber im Gegensatz zu klassischen Textadventures sind nicht die einzelnen Orte/Szenen vom Autor definiert, sondern nur die inhaltlichen Regeln der Welt. Die konkret besuchten Orte werden dann vom Programm nach diesen Regeln zufallsbasiert generiert. Hier z.B. ein Auszug aus der Definition von Thalaks aktueller Testwelt:


      create marshes.
      create flowers in marshes rarely.
      create butterflies in marshes almostnowhere.
      create hummingbirds in marshes almostnowhere.
      create cranes in marshes everywhere.
      create stones in marshes partly.


      create deserts.
      create flowers in deserts almostnowhere.
      create butterflies in deserts almostnowhere.
      create hummingbirds in deserts almostnowhere.
      create cranes in deserts rarely.
      create stones in deserts almosteverywhere.

      Die syntaktischen Regeln dieser Definitionssprache haben wir mittels "Formaler Grammatiken" (einem Konstrukt aus der theoretischen Informatik) entworfen und gestalten sie weiter. Die einzelnen grammatikalischen Bestandteile organisieren wir in einer Regelliste in Excel:



      Das Programm ließt die Definition der Welt und wendet die grammatikalischen Regeln an, um das Geschriebene zunächst grammatikalisch zu verstehen. Diese Regeln sind im Quelltext fest progammiert. In der Konsolenausgabe können wir die Interpretation des Programms zu Debugging-Zwecken mitverfolgen:

      reading sentences from world definition
      there are 6 interpretable sentences
      first sentence has 2 words
      last sentence has 5 words
      interpret sentences
      sentence: create marshes.
      IE_SATZ tries parsing word index 0
      IE_CREATE_SATZ tries parsing word index 0
      IE_THINGS (area) tries parsing word index 1
      class interpreter.elemente.IE_THINGS succeeded parsing from word index 1 to 1
      class interpreter.elemente.IE_CREATE_SATZ succeeded parsing from word index 0 to 1
      class interpreter.elemente.IE_SATZ succeeded parsing from word index 0 to 1

      Implementiert ist der Quelltext in Java und liegt online in einem Versionsverwaltungstool, sodass man auch zusammen daran arbeiten kann (das passiert aktuell jedoch nicht, da ich leider der einzige Programmierer bin):



      Wenn das Programm die Weltendefinition gelesen und grammatikalisch verstanden hat, muss es sie noch inhaltlich verstehen. Hierzu konsultiert es unser XML-basiertes Kompendium. Darin steht z.B. dass Schmetterlinge hübsch und klein sind, also alles inhaltliche. Später wird es möglich sein, in der Definition der eigenen Welt vom Kompendium abweichende Regeln anzugeben, sodass die eigenen Schmetterlinge z.B. riesig und hässlich sind.



      Wenn die Welt vom Programm nun auch inhaltlich verstanden wurde, erzeugt es ein spielbares Textadventure daraus, d.h. es erzeugt Text, der den aktuell besuchten Ort beschreibt. Woher weiß das Programm, welche Worte und Satzformen es dabei benutzen muss? Dies haben wir in einem ebenfalls XML-basierten Erzählkatalog definiert. Hier ein Auszug. Die Platzhalter $...$ werden durch die konkreten Bezeichnungen von Objekten und Verben ersetzt.





      Da das Programm noch keinen eigenen Installer hat, kann ich keine Demoversion mit hochladen, aber wir hoffen, ihr habt trotzdem einen Einblick ins Projekt erhalten. Wir würden uns auf jeden Fall auch um Unterstützung freuen, zu zweit in der wenigen Freizeit, die man hat, kommt man doch recht langsam voran :)

      Gruß Saavedro und Thalak
    • Ich bin fasziniert und habe gleichzeitig keine Ahnung, was ihr letztlich damit machen wollt. Aber wahrscheinlich trägt das meiner Faszination eher bei. :D
      Nights are deep when days are long. / / / Any sufficiently complex explanation is indistinguishable from ISSO. / / / Art should comfort the disturbed and disturb the comfortable.
      »Aus den Nacken waren Kehlköpfe geworden.« (2019)
    • Eigentlich hatten wir gehofft, durch diesen Zwischenstandsbericht weitere Projektbegeisterte anzuziehen, doch ist das leider nicht geglückt :) Im August werde ich nämlich zum zweiten Mal Vater und werde dann wohl einige Monate nicht am Projekt weiterarbeiten können. Thalak und ich haben daher entschieden, das Projekt nicht fortzuführen. Wir sind stolz auf das Erreichte und freuen uns, durch den Prototypen zumindest die Machbarkeit des Vorhabens gezeigt zu haben. Vielleicht graben wir das Projekt ja irgendwann mal wieder aus.
    • Ich glaube, in bewusstes Beenden eines solchen Projekts ist immer besser und angenehmer als dass es irgendwann einfach im Sande verläuft. Ich finde es auf jeden Fall sehr cool, was ihr erreicht habt. Das ist definitiv viel mehr als bei den allermeisten WB-Kooperationen normalerweise ;D

      Und ganz herzlichen Glückwunsch zum anstehenden Nachwuchs, @Saavedro!! :D
      Ich glaube, für eine französische Hure ist Elatan ein bisschen zu provinziell.

      Kann man eigentlich mit Fäkalien töpfern? -- Tö.