Hallo Besucher, der Thread wurde 7,3k mal aufgerufen und enthält 47 Antworten

letzter Beitrag von fredrikr am

Interactive Fiction Interpreter

  • Kennt jemand zufällig einen freien Interpreter für Interactive Fiction?


    Konkret bin ich auf der Suche nach einem Interpreter für Infocom-Spiele. Der Interpreter muss nicht zwingend die späteren Spiele unterstützen, es reicht schon, wenn er die für den C64 gedachten Infocom-Spiele ausführen kann (bis V3, wenn ich das richtig sehe).


    Wirklich fündig geworden bin ich diesbezüglich allerdings noch nicht. Es gibt den Interpreter "Zeugma", der aber eine REU voraussetzt (das kommt für mich nicht infrage):
    http://www.linusakesson.net/software/zeugma/


    Dann gibt es noch fweep, der in C geschrieben ist, aber compiliert für den Speicher des C64 vermutlich zu groß sein dürfte:
    http://www.ifarchive.org/index…mXinterpretersXfweep.html


    Kennt jemand noch weitere Engines, die auf dem C64 laufen (könnten)? Gibt es abseits von Infocom (und der Z-Machine) noch andere, ähnliche offene Interpreter, die auf dem C64 laufen?

  • Kennt jemand zufällig einen freien Interpreter für Interactive Fiction?

    Einen anderen Interpreter als den von Infocom kenne ich bislang auch nicht. Notfalls müßtest Du selber einen schreiben oder den aus einem Infocomprogramm extrahieren. Die Z-Maschine selbst ist ja ausführlich beschrieben worden, daher würde ich mal schätzen, daß der Interpretercode auch nicht so umfangreich ist.

    Dann gibt es noch fweep, der in C geschrieben ist, aber compiliert für den Speicher des C64 vermutlich zu groß sein dürfte

    Gut möglich. Außerdem müßte man die runtime an den Kernal anpassen. Es ist ja auch das Problem, wie die Daten gehandhabt werden. Dazu benötigt man wohl einen direkten Zugriff auf einzelne Sektoren der Diskette (wie in den Originalspielen auch) sowie ein Cachesystem zur Verminderung eben dieser (langsamen) Zugriffe.

    Kennt jemand noch weitere Engines, die auf dem C64 laufen (könnten)? Gibt es abseits von Infocom (und der Z-Machine) noch andere, ähnliche offene Interpreter, die auf dem C64 laufen?

    Was genau meinst Du hier mit Engines? Solche, die für den PC entwickelt wurden (z. B. TADS)? Oder solche, die gezielt für den C64 bzw. den 6502 geschrieben wurden (z. B. Level 9)? Interpreter gibt es natürlich reichlich für den C64 von den entsprechenden Herstellern (Magnetic Scrolls, Telarium, Interplay), aber wirklich offen, d. h. einsetzbar für eigene Spiele, ist davon keiner. Das einzige halbwegs offene System ist das von Ultrasoft ("The Mask of the Sun", "The Serpent's Star"), aber auch sehr spezifisch. Mein eigenes System ist zwar theoretisch offen, beruht aber auf speziellen Werkzeugen für den PC.
    Was genau schwebt Dir denn vor? Möchtest Du ein Textadventure für den C64 entwickeln in der Form von Infocom, also mit Texteingabe? Oder ginge auch ein System mit Joysticksteuerung wie z. B. das D42 von Protovision?

  • Die originalen Infocom-Interpreter für den c64 hat Christopher Kobayashi disassembliert und um Unterstützung für Easyflash und uIEC als alternative zur REU ausgestattet. Dabei hat er auch Spiele auf dem C64 zum Laufen gebracht, die es von Infocom eigentlich nur für den C128 gab (z.B. Trinity läuft mit seinem z4-Interpreter problemlos auf dem C64).


    Man kann sich aus den Story-Files (z3, z4, z5) Disketten machen, indem man den jeweils passenden interpreter und das Story-File als STORY.DAT auf eine Diskette schreibt.


    Das Grundprinzip bleibt das gleiche wie bei den späten Original-Interpretern: Die Diskette ist der virtuelle Speicher. Wird eine Erweiterung (original nur REU, jetzt auch uIEC, EasyFlash) gefunden, wird das ganze Spiel in die Erweiterung geladen und läuft dann deutlich schneller. Das Laden dauert allerdings seine Zeit.


    Ich persönlich bin gerade dabei, auf Basis dieser Interpreter die alten Infocom-Spieldateien direkt aus dem Menü der Ultimate abspielbar zu machen, wobei der passende Interpreter und ein Teil des Story-Files dann per DMA in den Speicher gelegt wird und der Rest gleich in die REU geladen wird. Da die Ultimate das direkt macht, startet das Spiel dann in ca. 2 Sekunden (und nicht erst nach einigen Minuten nachladen).

  • Neben den Originalen sind die genannten Zeugma und die von Edilbert Kirk und Chris Kobayashi die einzigen Alternativ-Interpreter auf dem C64, denke ich. Wer irgendwas portieren will könnte sich natürlich auch bei systemfremdem Code bedienen, dokumentierte Interpreter gibt's ja wie Sand am Meer. Fweep wurde ja schon genannt, zorkmid ist so ähnlich nur neuer, natürlich Frotz und Nitfol und Filfre und was nicht alles...


    http://inform-fiction.org/zmachine/interpreters.html

  • Falls jemand die Sourcen von Z-Source von Edilbert Kirk selbst kompilieren will, benötigt er den BSA Kompiler:
    https://github.com/Edilbert/BSA


    Er selbst ist hier als BlackSmurf registriert, hatte ihn mal zum Thema angefragt: Textadventure

  • Erstmal vielen Dank für die Antworten. Ich fasse mal alles hier in einem Post zusammen:


    Einen anderen Interpreter als den von Infocom kenne ich bislang auch nicht. Notfalls müßtest Du selber einen schreiben oder den aus einem Infocomprogramm extrahieren.

    Den Aufwand hätte ich gerne vermieden. :) Wenn es schon einen Interpreter gibt, dann muss ich die Arbeit nicht noch einmal machen.


    Es ist ja auch das Problem, wie die Daten gehandhabt werden. Dazu benötigt man wohl einen direkten Zugriff auf einzelne Sektoren der Diskette (wie in den Originalspielen auch) sowie ein Cachesystem zur Verminderung eben dieser (langsamen) Zugriffe.

    Die Geschichten gibt es als einzelne Dateien, die man den Interpretern zuführt. Es gibt auch Tools, die Story-Files extrahieren.


    Was genau meinst Du hier mit Engines? Solche, die für den PC entwickelt wurden (z. B. TADS)? Oder solche, die gezielt für den C64 bzw. den 6502 geschrieben wurden (z. B. Level 9)? Interpreter gibt es natürlich reichlich für den C64 von den entsprechenden Herstellern (Magnetic Scrolls, Telarium, Interplay), aber wirklich offen, d. h. einsetzbar für eigene Spiele, ist davon keiner.

    Genau das: Ich suche einen Interpreter für eigene Sachen. Die disassemblierten Infocom-Sachen kann beziehungsweise will ich daher nicht verwenden. Der Interpreter sollte schon am besten die Fähigkeiten von Infocom haben und nicht nur einfach "go north" verstehen. Es geht um reine Textadventures, also ohne Grafik.
    Ein freier (Infocom-)Interpreter ist aber grundsätzlich (auch) für alle interessant, die auf dem C64 die vielen Fan-Adventures spielen möchten.


    Könnte petsd.net/z-source.zip das richtige für Dich sein?

    Ja, über den bin ich auch gestolpert, wobei dort aber die Lizenz unklar ist - oder habe ich was übersehen?


    Wer irgendwas portieren will könnte sich natürlich auch bei systemfremdem Code bedienen, dokumentierte Interpreter gibt's ja wie Sand am Meer. Fweep wurde ja schon genannt, zorkmid ist so ähnlich nur neuer, natürlich Frotz und Nitfol und Filfre und was nicht alles...

    Die sind in der Regel "zu groß" für den C64, das gilt insbesondere für Frotz. Selbst wenn man es unmodifiziert compilieren könnte, passt es nicht mehr in den Speicher des C64. Es würde also nicht wirklich viel Arbeit sparen.

  • Ja, über den bin ich auch gestolpert, wobei dort aber die Lizenz unklar ist - oder habe ich was übersehen?

    Auf der PET FOOD Webseite steht nur "Public Domain". Im Source File oder ZIP steht leider nichts zur Lizenz.
    Frag ihn doch einfach: @BlackSmurf

  • Ich suche einen Interpreter für eigene Sachen. Die disassemblierten Infocom-Sachen kann beziehungsweise will ich daher nicht verwenden. Der Interpreter sollte schon am besten die Fähigkeiten von Infocom haben und nicht nur einfach "go north" verstehen. Es geht um reine Textadventures, also ohne Grafik.

    Verzeih bitte, wenn ich da ein paar Verständnisrückfragen habe:
    1.) Möchtest Du das Adventure in Deutsch oder auf Englisch schreiben?
    2.) Hast Du bereits Kenntnisse in Inform6/7 (oder was auch immer gerade aktuell ist. Ich bin da nicht auf dem Laufenden.) ?
    3.) Bei einem Adventure muß man unterscheiden zwischen dem Syntaxparser und der semantischen Auswertung sowie dem Bytecodeinterpreter der virtuellen Maschine, der das Programm portabel macht. Der Nachteil von Inform (nach meinem veralteten Kenntnisstand) ist, daß hier diese eigentlich getrennten Ebenen miteinander vermischt werden. Das Idealbild sähe (meiner Meinung nach) so aus: a) Syntaxparser erhält Eingabestring, parst diesen durch und erzeugt daraus eine Liste von Handlungsanweisungen. b) Diese werden Schritt für Schritt an das eigentliche Adventureprogramm, die Spiellogik, weitergeleitet und dort ausgeführt. Die VM dient hierbei nur dazu a) den Code portabel und relokatibel auf der Hostmaschine zu halten, b) Beschränkungen in der Datenmenge von 64kb etc zu überwinden. Mit anderen Worten: Theoretisch wäre es möglich, jedes Informprogramm auch nach x86, ARM oder sonstwas zu kompilieren und nicht als Code für die Z-Maschine. Praktisch jedoch sind bei Inform Syntaxparser und virtuelle Maschine sowie Syntaxparser und semantische Auswertung sehr stark miteinander verwoben.
    4.) Daraus ergibt sich die Frage, was genau Du willst: a) einen Syntaxparser, b) eine zu kompilierende Adventuresprache, die das eigentliche Spiel enthält, oder c) eine virtuelle Maschine?
    5.) Welche Programmiererfahrung hast Du? Inform baut auf der Objekt orientierten Programmierung auf. Die Adventurewelt wird daher aufgefaßt als eine Welt von Objekten, die instantiiert werden müssen usw. Das ist aber nur ein möglicher Ansatz, eine Welt zu beschreiben, trifft aber damit den (damaligen) Zeitgeist der OOP, d. h. einem Objekt wird eine Methode zugeordnet, nicht jedoch einer Handlung ein Objekt, Das hat zur Folge, daß man bei der Objektdefinition de facto eine Datenbank erzeugt (vgl. Magnetic Scrolls), in der für jedes Objekt festgehalten werden muß, ob es brennbar, zerstörbar, werfbar, tauchbar, guckbar usw. -bar ist. Sollte Dir dieser Beschreibungsansatz liegen, wirst Du mit Inform glücklich werden.

  • Ich kann dazu leider nur aus PC-(Windows)Sicht etwas beitragen, daher nur ganz kurz:


    Neben dem System von Inform sind mir noch ADRIFT, TADS und Quest bekannt, wobei letzteres den Vorteil hat, die Grammatik mehrerer Sprachen zu berücksichtigen, also auch recht bequem etwas auf deutsch geschrieben werden kann.

  • Ich tacker mal wieder fröhlich alles zusammen. :)

    Auch die "ganz kleinen" für irgendwelche uralten Portables oder den Gameboy, oder fweep oder zorkmid?

    fweep muss ich mir nochmal genauer ansehen, wenn ich aber von der DOS-Fassung Pi mal Daumen ausgehe, dürfte der Interpreter zu groß sein. Mit Zorkmid meinst du das hier?
    https://github.com/elvinyung/zorkmid
    Das nutzt JavaScript und ist somit nicht (direkt) brauchbar. Die Gameboy- und Portable-Sachen nutzen in der Regel Eigenheiten der jeweiligen Plattform, was dann auch wieder auf eine Portierung hinausläuft; am besten wäre etwas, was bei mir möglichst wenig Zeit- und Programmieraufwand verursacht.


    Convertiert Z-Machine files in d64 Diskimages.

    Das soll einen gerippten Interpreter von Infocom verwenden und scheidet somit für eigene Sachen aus. Beziehungsweise da ist die Lizenzfrage ungeklärt.



    Verzeih bitte, wenn ich da ein paar Verständnisrückfragen habe:

    Du machst es komplizierter, als es ist. ;)
    Der "Infocom-Interpreter" ist die Z-Machine, die Bytecode ausführt. Der liegt schon fertig vor (in der sogenannten Story-Datei). Ich suche schlicht eine freie Z-Machine für den C64. (Siehe auch: https://de.wikipedia.org/wiki/Z-machine)
    Alternativ suche ich ein Komplettsystem, mit dem man eigene Textadventures erstellen kann. Der Parser in diesem Paket sollte dem von Infocom ähnlich sein, also nicht komplett dumm. Oder mit anderen Worten ein Paket aus Compiler, Parser und Interpreter, wobei man die beiden letztgenannten nicht immer trennt. Wie das Paket genau aufgebaut ist, wäre mir egal. Solche Systeme liegen meines Wissens für den C64 nur in Englisch vor. Wenn du ein deutsches findest, aber um so besser. :) Programmiererfahrung sollte übrigens auf meiner Seite mehr als ausreichend vorhanden sein. ;)



    Ich seh' grad nicht was d64toinf oder die Diskussion dort mit Tims ursprünglicher Fragestellung zu tun haben. Übersehe ich da was?

    M.J. meinte "inftod64", das sich eine fertige Story-Datei greift und das zusammen mit einem Interpreter direkt in ein D64-Image schreibt. Es wäre also in der Tat infrage gekommen, wenn da nicht die Lizenzproblematik wäre.

  • Mit Zorkmid meinst du das hier?
    github.com/elvinyung/zorkmid

    Eher das hier, ob das derselbe Mensch ist kann ich spontan nicht sagen:
    http://zzo38computer.org/zmachine/interp/
    Da hat's kein Javascript. Flaches C, public domain.



    M.J. meinte "inftod64", das sich eine fertige Story-Datei greift und das zusammen mit einem Interpreter direkt in ein D64-Image schreibt. Es wäre also in der Tat infrage gekommen, wenn da nicht die Lizenzproblematik wäre.

    Ja, inftod64 schreibt ein story file mit Interpreter in ein D64 rein, und umgekehrt d64toinf, worauf @d020 verwiesen hat, extrahiert ein story file. Wie letzteres hier weiterhelfen soll verstehe ich aber nicht, danach hast du ja nicht gefragt. Aber vielleicht steh' ich auch einfach nur auf'm Schlauch.
    Von Haus aus benutzt inftod64 ja den "aktuellsten" original Infocom-Interpreter dafür, ich hatte aber geglaubt irgendwie herausgelesen zu haben, dass du den Originalen nicht in Betracht ziehst. Natürlich könnte man aber auch einen Selbstgeschriebenen damit verwenden.

  • Eher das hier, ob das derselbe Mensch ist kann ich spontan nicht sagen:
    zzo38computer.org/zmachine/interp/

    Ah, cool, Danke. Schaue ich mir morgen an.



    [...] worauf @d020 verwiesen hat, extrahiert ein story file

    Die beiden Programm gehören zum selben Paket d64toinf.



    Von Haus aus benutzt inftod64 ja den "aktuellsten" original Infocom-Interpreter dafür, ich hatte aber geglaubt irgendwie herausgelesen zu haben, dass du den Originalen nicht in Betracht ziehst. Natürlich könnte man aber auch einen Selbstgeschriebenen damit verwenden.

    Ah, Ok, richtig. Ich hätte gerne etwas, das ich einfach bedenkenlos weitergeben kann.

  • Alternativ suche ich ein Komplettsystem, mit dem man eigene Textadventures erstellen kann. Der Parser in diesem Paket sollte dem von Infocom ähnlich sein, also nicht komplett dumm. Oder mit anderen Worten ein Paket aus Compiler, Parser und Interpreter, wobei man die beiden letztgenannten nicht immer trennt. Wie das Paket genau aufgebaut ist, wäre mir egal. Solche Systeme liegen meines Wissens für den C64 nur in Englisch vor.

    Hmm... Also wenn ich mir mal die Liste auf 64games ansehe mit Adventures nach dem Jahr 2000, so ist diese reichlich überschaubar, sprich: es gibt nur ein paar wenige. Nun würde ich davon ausgehen, daß, wenn es solch ein Paket gäbe, eine nennenswerte Anzahl von Spielen auffindbar sein müßten, aber ich finde nur ... nichts. Das liegt wohl daran, daß man solch ein Paket nicht mal einfach so eben aus dem Ärmel schüttelt, denn dazu bräuchte man konkret:
    1.) Syntaxparser: vorzugsweise aus Geschwindigkeitsgründen in 6502 programmiert, setzt zumindest Grundkenntnisse in der Verarbeitung von natürlichsprachlichen Ausdrücken voraus.
    2.) Design einer Adventuresprache: Dazu gehört nicht nur die Sprachendefinition, sondern auch Überlegungen zur Textkompression usw.
    3.) Compiler: für den PC/Mac entwickelt in beliebiger Hochsprache
    4.) Bytecodeinterpreter inklusive MMU: erneut in 6502 programmiert
    Jedes einzelne Teil davon bedeutet schon einen Riesenaufwand an sich. Daher gehen viele den "einfachen" (in Wirklichkeit natürlich gar nicht so einfach) Weg, sich allein dem Punkt 4 zu widmen, d. h. den Bytecodeinterpreter in 6502 zu schreiben, und einen fertigen Parser von irgendwo zu übernehmen (z, B. die Bibliotheken von Inform), um damit dann PC-Spiele auf den C64 zu portieren. Der Nachteil bei dieser Methode ist dann allerdings, daß man beim Spielen im Emulator den Warp-Modus einschalten oder beim Spielen auf Originalhardware eine große Kanne Kaffee neben den Rechner stellen sollte. Aber mein Wissen ist auch etwas eingeschränkt in dieser Hinsicht. Ich kann nur davon ausgehen, was mir so auf den allgemeinen Seiten bislang angeboten wird, und da zeigt sich noch nicht mal ein (verwendetes) System für Englisch. Viel eher habe ich den Eindruck, daß ich seit zwanzig Jahren der erste Bekloppte war, der solch ein Komplettpaket mit dem C64 als Zielplattform erstellt hat. Das mag sicherlich auch daran liegen, daß reine Textadventures auch in Retrokreisen heutzutage schlicht als veraltet gelten.

  • Abgesehen vom z-Code Interpreter gibt es ja noch die Magnetic Scrolls Adventures. Deren Parser war ja auch sehr gut. Wäre das evtl. eine Alternative?
    Gibt es da C64 Implementationen? Für andere Systeme gibt es ja einiges:
    http://msmemorial.if-legends.org/magnetic.php