Adventure in BASIC - nur datengetrieben ablaufend (nicht festkodierte Daten)

  • Hallo,


    ich bin am Schreiben einer Textadventure-Software in BASIC (GWBASIC), die nur datengetrieben ablaufen soll.

    Damit meine ich, dass im Source-Code keinerlei festkodierte Daten den Ablauf und Inhalt des Adventures bestimmen sollen.

    Stattdessen werden die Daten des Adventures in DATA Zeilen oder ggfls. dann später in einer recht einfach zu editierende Tabelle zu finden sein (DATA Zeilen ist auch nicht schlecht, weil dann nur eine einzige Datei zum Spielablauf gebraucht wird, nämlich das Programm selbst). Das war mir sehr wichtig, alles andere bedeutet, dass das Spiel unwartbar ist/die Handlung nicht wirklich veränderbar ist. Ich arbeite nur mit Arrays (DIM ....) wenn es nicht anders geht, der Rest wird mit Listen aus einem Feldinhalt verarbeitet, das spart eine Menge Speicher (auch wenn es aufwendiger ist, die Liste in einzelne Items zu splitten).

    Ich bin soweit schon gekommen, dass es ein Parser für die Befehlswörter gibt (Leerzeichen und Groß-/Kleinschreibung egal), und dass viele (Test-)Daten bereits vorhanden sind.

    Im Spiel soll es außerdem auch nötig sein, dass man sich für die Bewegung, die man vornimmt, auch ernähren muss (= Nahrung sammeln und essen muss), außerdem auch gegen allerlei Feinde/Monster kämpft.

    Momentan arbeite ich am Spiel-Inventory, ich muss auch bestimmte Items aus der Map entfernen können, das geht leider noch nicht.


    Hier mal ein paar Impressionen:



    So sind momentan die Daten im Programm abgelegt (praktischerweise kann man Excel zum einfacheren Design nutzen):


    Leider bin ich damit noch nicht soweit, das komplett zu veröffentlichen, aber es wird immer besser.

    Wenn ich sehe, das jemand daran Interesse hat, hier mehr zu erfahren und dann auch das Programm zum Entwickeln eigener Adventures benutzen will, werde ich auch noch weitere Beiträge dazu posten.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

    Einmal editiert, zuletzt von Peter z80.eu ()

  • Hi,


    Das hört sich spannend an. Ich habe früher auch Text-Adventures geschrieben (größtenteils CBM-Basic V2 sowie mit Simons' Basic und einige wenige in CBM-Basic V3.5). Diese waren natürlich vom Ablauf vorgegeben.


    Interessant finde ich den Ansatz mit den Data-Zeilen. Aber ich habe Dich schon richtig verstanden, dass Du im Grunde kein Textadventure schreibst, sondern eher ein universales Adventure-Grundgerüst, oder?

  • Geht es da um die Sache als solche - oder letztlich darum, ein eigenes Adventure zu bauen ?

    Wollte nur mal dezent auf den Z-Interpreter und SCUMM hinweisen, die man dafür auch nutzen könnte.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Ich vermute mal, dass es Peter eher um die Sache als solches geht und auch, dies in Basic umzusetzen. Mit Z-Machine kenne ich mich nicht aus (weiß nur, dass es älter sein dürfte als SCUMM), aber SCUMM ist natürlich ne feine Sache für Point/Click-Adventures. Es gibt da mittlerweile sogar ein Opensource-Projekt, das in C++ programmiert ist.

  • Den Z-Interpreter (mit fertigen Adventures) nutzen kann jeder.

    Ein neues Adventure für den Z-Interpreter zu kreieren, hingegen fast keiner.

    Mir geht es aber wirklich um die Implementierung in einem "alten" BASIC-Dialekt. Um zu zeigen, dass man auch modular in BASIC programmieren kann, und natürlich weil ich Text-Adventure Fan war und bin.

    Bis zum Ende der Woche hänge ich mal eine Testversion hier rein, es geht inzwischen schon recht viel.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Wenn es um das Adventure an sich (und nicht um's selbst programmieren, wie bei Dir) geht, ist nach meiner Einschätzung "Inform" heutzutage ein sehr gutes Werkzeug mit dem man neue Textadventures schreiben kann. Da schreibt man den "Quellcode" in einer nach etwas Gewöhnung recht gut lesbarer Form und hat sehr viele Möglichkeiten, bis hin zum Einfügen von Bildern (wenn man mehr als ein klassisches Text-Adventure haben möchte).

    Das ganze entspricht mehr dem schreiben eines Buchs in Englisch als dem Programmieren.


    Beispiel für eine Raumbeschreibung aus einem nachgemachten "350 Point Adventure":

    Aus solchen Texten generiert das System dann die Verlinkung der Räume, Objekte, Beschreibungen etc. Das Ganze hat ist sehr anpassungsfähig.


    Das System gibt es für MacOS, Windows, Linux, aber nicht für klassische Homecomputer.

    Weitere Details finden sich auf der Inform Home Page.

  • .... dachte hier im Forum geht es um klassische Computer ... aber ja, generell ist das eine Möglichkeit, eigene Adventure-Spiele zu erstellen. Wie Du aber schon selbst geschrieben hattest, geht's mir um das Nutzen einer alten BASIC Version auf alten Computern :)

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • So, habe mal einen Testlauf auf Youtube gepostet (via DOSBox).


    Siehe https://www.youtube.com/watch?v=JwG_NA042sM (ich hoffe der Link ist hier anklickbar)


    Den Source-Code der gezeigten Version hänge ich hier man dran, es sind noch Kleinigkeiten zu codieren, dann veröffentliche ich auch die Version 1.00 ;)

  • Alles was ich erstmal implementieren wollte läuft. Das Kartendesign (und damit der Spielablauf) ist nicht besonders ausgefeilt, fühlt Euch nicht gehemmt hier die DATA Zeilen am Schluß des Programms beliebig abzuändern. Man könnte sogar alles in Deutsch umsetzen, aber da müssen dann auch ein paar Statements vor den DATA Zeilen angepasst werden. Vielleicht ändere ich das in einer nächsten Version, um verschiedene Sprachversionen möglich zu machen. Am Anfang der DATA Zeilen steht eine Erklärung wie man die Angaben macht. Viel Spass beim Ausprobieren.



    Das Programm läuft *natürlich* auch mit CP/M und MBASIC.

    Ich habe es auch mit BASCOM compilieren können:

    B> BASCOM =PADVENT/X/O

    B> L80 PADVENT,PADVENT/N/E


    Das ausführbare Programm für CP/M habe ich auch mal als ZIP drangehängt.


    Wer für mich testet, ob noch Fehler drin sind (und wo), kann eine fehlerbereinigte Version als Belohnung bekommen ;)

  • Einen kleinen Fehler habe ich noch korrigiert, das Kommando HELP zeigt nicht an, dass der SHOW Befehl auch ohne Parameter funktioniert - was aber recht wichtig ist, benutzt man doch den Befehl "SHOW" im Spiel recht häufig.

    Außerdem habe ich eine erklärende Textdatei bzgl. der Struktur des Programms und der Änderungsmöglichkeiten hinzugefügt.

    Die CP/M Version habe ich mit dem leicht geänderten Sourcecode noch nicht erneut kompiliert, kommt noch.

  • Nachdem ich das Spiel auf einem CP/M-Rechner gestern ausprobiert hatte, musste ich feststellen, dass ein kleiner Fehler noch existierte, wenn man an die Grenze der Karte (im Code erweiterbar, Default 11x11) stösst. Ist in Zeile 3605 jetzt abgefangen.

    Daher der Update auf Version 1.02 ...

    Arbeite gerade an einem Editor für die MAP, wird aber nichts für CP/M sein, weil ich dazu ladbare Fonts in DOS nutze.

  • Und wieder Neuigkeiten. Da mir das auf den "Sack" ging, die DATA Zeilen manuell zu editieren (Excel CSV als Hilfe mal ausgeblendet, ist auch nicht so einfach und manuell ebenfalls anzupassen), nun das erste "Mockup" des Editors (ist schon komplett in GWBASIC geschrieben, aber unvollständig in der Legende am Anfang, und unvollständig bei der Funktion, nur Feld-Cursor bewegen geht schon mal).

    Sieht noch ein bisschen kryptisch aus, aber 11x11 Felder auf einen 80x24 Zeichen Bildschirm zu bringen ist schwierig, man hat ja nicht beliebig Platz.

    Die einzelnen Zeichen wie 'g' z.B. stehen für die verschiedenen Feldinhalte, die man in den DATA Zeilen des Adventures angeben kann.

    Die Beschränkung auf 6 verschiedene Feldinhalte aus einer vorgegebenen Auswahl ist verschmerzbar.

    Als Endprodukt wird der Editor eine BASIC-Sourcedatei ausgeben, die sofort ausführbar sein wird.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Ok, hier mal eine Vorabversion des Map Editors (und Programm-Generators). Läuft mit GWBASIC oder QBASIC, oder halt compiliert mit Quick Basic, läuft (noch) nicht unter CP/M, das erzeugte Programm läuft natürlich weiterhin unter CP/M.

    Man kann noch nicht per Taste 'Return', wenn die Map angezeigt wird, Feldinhalte verändern, sondern es wird momentan nur der Inhalt angezeigt.

    Es fehlt die Möglichkeit, bereits erstellte Maps neu zu laden. Die Langversion der Feldbeschreibung (mit "Look" im Adventure angezeigt) fehlt noch, das wird später am Schluß automatisch aus den Feldinhalten generiert.


    In der nächsten Version wird das auf jeden Fall gehen, mir ist noch nicht ganz klar wie die Bedienerführung dazu aussehen wird, aber man wird wohl mit dem Cursor zwischen den Positionen eines Felds springen können, um den neuen Inhalt dann auszuwählen. Werden wohl deswegen feste Positionen zur Auswahl in der letzten Zeile werden.


    Was auch schon geht - man kann am Schluss (Taste ESC) den Programmcode generieren. Erzeugt wird eine Datei ADVENTUR.BAS, die sofort ausführbar ist.


    Es ist eine Heidenarbeit, so ein Editor und Generator zu schreiben, wer weitere Ideen dazu hat, oder helfen möchte, bitte melden.

  • Update: Der MapEditor läuft jetzt einwandfrei mit 10 möglichen Items. Das ist für die finale Version zuwenig, aber reicht völlig, um damit zu Testen und das generierte Adventure-Programm funktional 100% spielen zu können.

    Keine Ahnung wie man Youtube-Videos verlinken kann, steht nicht zur Auswahl in den zum erstellenden Forum-Eintrag passenden Optionen.


    https://www.youtube.com/watch?v=d3x8JygoRR4


    Das Video - es ist sehr klein - habe ich aber auch hier als ZIP drangehängt (und das sieht besser aus als als mit Youtube angeschaut).

  • Hier das Programm (und nicht nur ein Video) in der Version 0.9 (die bereits benutzbar ist und ein lauffähiges Programm generiert, aber siehe README.TXT).

    Ich würde mich auch über ein Feedback freuen, spätestens bei der Version 1.0 (in 1-2 Wochen fertig denke ich), die dann alle Features beinhaltet.

  • So, finale Version ist fertig. Entwickle das Programm jetzt erstmal nicht mehr weiter, nachdem soweit alles läuft was ich implementieren wollte.

    Es ist ein bebildertes Manual als PDF auch nun enthalten. Das Ganze ist umbenannt worden, weil es schlicht mehr als vorher kann.

    Einen eigenen Namen für die selbst erstellte Karte und damit dem Textadventure kann man nun auch geben.

    Vielleicht füge ich da irgendwann auch mal mehr Optionen noch ein, aber das war's erstmal - wenn ich noch was mache, dann nur Fehlerbehebung, falls noch ein Fehler wider Erwarten drin sein sollte. Angehängt habe ich mal nur die DOS Version des Map Editors.

    Dateien

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Na ja, kann man nicht wirklich vergleichen. Mein Textadventure ist eher so was wie eine Kreuzung zwischen einem konventionellen Textadventure und Rogue. Immerhin ist bspw. auch implementiert, dass man Gegenstände wie bspw. Gold aufheben kann, und das an dieser Stelle dann das Gold oder ein Schwert nicht mehr in der Karte bzw. auch im Spiel vorhanden ist. Man kann auch mit Hilfe des Map Editors eine Art Labyrinth erstellen, das kann man mit einem normalen Textadventure sicherlich überhaupt nicht. Und schließlich muss man im Spiel auch ständig was Essen oder Trinken, das Begehen von Feldern kostet sozusagen Lebensenergie. Wer zuviel planlos herumläuft, stirbt an Erschöpfung. Na Ihr müsst das mal selbst ausprobieren.

    Ein komplettes Adventure selbst neu zu Programmieren mag mehr Variationen eventuell bieten, aber ist sicherlich ist es wesentlich aufwendiger, als hier mit meinem "Text Adventure Kit" einfach zu erstellen. Am Besten man zeichnet sich auf Papier erstmal 11 x 11 quadratische Felder, und zeichnet den vorgegebenen Weg mit Ressourcen und Monstern etc. auf. Am Schluß stellt man die Kiste mit dem Schatz hin, irgendwo anders einen Händler mit dem Schlüssel. Und vielleicht ein paar Schmiede die einem auch ein Schwert als Verteidigung gegen die Monster für Gold verkaufen können. Wobei sich das Schwert übrigens auch "verbraucht", also muss man idealerweise so viele Schwerter aufsammeln, wie Monster im Spiel sind.

    Das war meine Idee, nicht außergewöhnlich ausgefallen, aber bestimmt kurzweilig.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • So, mein revidiertes Video über die finale Version ist auch fertig.

    Klick auf das Bild verlinkt auf Youtube:

    Warum Youtube ein Video mit 640x480 Pixel derart verhunzt (wahrscheinlich weil es eine US-amerikanische Firma ist, die machen so was...), weiss ich nicht. Das originale hochgeladene Video sieht anders (besser) aus. Werde das noch mit addierten schwarzen Balken links und rechts probieren, und dann mit 720x480 Pixel. Vielleicht gibt es ja noch eine bessere, andere Video-Plattform als Youtube, mal suchen.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.