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

letzter Beitrag von fredrikr am

Interactive Fiction Interpreter

  • Gibt es da C64 Implementationen?

    Wäre mir neu. Möchte fast behaupten, die Z-Code-Interpreter sind wohl die einzigen Alternativansätze überhaupt auf der C64-Platform. Man bedenke wie relativ populär Infocom doch ist, und wie wenig es da trotzdem gibt im Gegensatz zu anderen Plattformen. Ich wüsste zumindest von keinen z.B. für Magnetic Scrolls oder Level 9 oder die Scott Adams Adventures, etc.

  • Es hat auf GitHub durchaus einen Magnetic Scrolls Interpreter in C für verschiedene Systeme, aber nicht für den C64. Zumindest wäre eine Portierung auf den C64 im Bereich des Möglichen.
    https://github.com/DavidKinder/Magnetic

  • Ist dann aber die Frage was genau so ein Port auf dem C64 können könnte. Eventuell müsste man sich da auf reinen Text beschränken bzw. maximal die Grafikressourcen der Zielspiele aus den C64-Fassungen. Andere Grafik wäre wohl zu gross, zu bunt, etc. Ähnliche Schwierigkeiten hätte man ja auch, würde man meinetwegen Frotz oder Level9 auf den C64 portieren, ganz zu schweigen von den moderneren Sachen wie Glulxe (ist ja auch alles von David). Die Stärke bzw. Sinn und Zweck dieser modernen Alternativinterpreter ist ja, diese älteren Spieleressourcen auf viel moderneren Systemen laufen zu lassen, und dagegen ist der C64 zu diesen alten Spielen zeitgenössisch. Die Grafik von "The Pawn" oder "Guild of Thieves" in der DOS- oder AtariST- oder Amiga-Version auf dem C64... schwierig....

  • Die Grafik von "The Pawn" oder "Guild of Thieves" in der DOS- oder AtariST- oder Amiga-Version auf dem C64... schwierig....

    Wie meinst Du das? Gerade die Grafiken von "The Pawn" waren ja für den C64 & andere 8-Bit Platformen mittel Konverter runtergebracht (irgendwo haben wir einen Thread dazu hier im Forum).
    Die Grafiken sind ja auch das, was das meiste Nachladen verursachen, deshalb kann man die Games ja auch ohne diese spielen in den Originalfassungen.


    Aber so wie ich den TE verstanden habe, geht es hauptsächlich darum, Storyfiles abzuspielen (diese kann man ja komfortabel am PC erstellen). Grafiken hatten die Z-Files eh nicht in den früheren Versionen.
    Das ist bei einem Magnetic Scrolls Storyfile sicher auch möglich, ohne Grafiken zu starten/spielen.

  • Wie meinst Du das? Gerade die Grafiken von "The Pawn" waren ja für den C64 & andere 8-Bit Platformen mittel Konverter runtergebracht (irgendwo haben wir einen Thread dazu hier im Forum).

    Schon klar.
    Wenn ich meinetwegen WinMagnetic auf dem PC benutze, und die (extrahierte) Story von z.B. Guild of Thieves oder Fish! der Amiga-Versionen starte, zeigt er naturgemäss die Amiga-Grafiken an. Bei C64-Versionen zeigt WinMagnetic C64-Grafik an, usw. Mit Level9 natürlich genau das gleiche - lade ich die Ressourcen der Mac-Version von meinetwegen Lancelot, zeigt er Mac-Grafik dieser Version an, bei Lancelot/PC die PC-Grafik, bei Lancelot/C64 die C64-Grafik... ein Windows-PC kann das naturgemäss, da ist es egal woher die Story-Daten stammen. Ein C64-Port von Magnetic oder Level9 oder Frotz oder dergleichen hätte dagegen grösste Probleme, irgendwas anderes anzuzeigen als die Grafik-Ressourcen der C64-Versionen der Spiele. Da wäre man sehr wahrscheinlich auf Text pur beschränkt.

  • Es hat auf GitHub durchaus einen Magnetic Scrolls Interpreter in C für verschiedene Systeme, aber nicht für den C64. Zumindest wäre eine Portierung auf den C64 im Bereich des Möglichen.

    Das meint Ihr doch bitte nicht ernst... :schreck!: Dabei kann es sich doch hoffentlich nur um einen Karnevalsscherz handeln. :party2: Der Magnetic Scrolls Interpreter beruht auf 68000-Maschinencode und ist damit noch nicht mal mehr ein Bytecode, sondern eher ein 16-Bit-Code. Das BIOS (Interpreter + IO) von JInxter verschluckt, obwohl direkt in 6502-Assembler geschrieben, schon den Speicher von $a00 bis $3cff und liegt dabei mit seiner Geschwindigkeit an der Grenze des Ertragbaren. Bei einem C-Kompilat kann man wenigstens von der doppelten Länge ausgehen zusammen mit gravierenden Einbußen in der Codeausführung. Soviel Kaffee kann ein Mensch doch gar nicht trinken, wie es auf solch einem System dauern würde, auch nur kleinste Befehle wie "LOOK WATCH" auszuführen. Abgesehen davon gibt es "The Pawn" und Co bereits für den C64. Wo wäre da der Sinn, diese Spiele mit einem deutlich schlechteren Interpreter erneut zum Laufen zu bringen? Der größte Haken bei Magnetic Scrolls ist zudem, daß es dafür keinen Compiler (im Fachjargon "authoring system") mehr gibt. Aber so wie ich den TE verstanden habe, geht es hauptsächlich darum, eigene Storyfiles abzuspielen. Und was das anbelangt, so ist der von d020 angegebene Link auf den Forenthread zum Thema "Portierung von Inform6/7-Spielen auf den C64" reichlich ernüchternd. Wie es aussieht, kann man Inform7 von vornherein ausschließen; und selbst bei Inform6 besteht die Gefahr, daß nach Abschluß der Programmierung am Ende ein Kompilat entsteht, welches aufgrund inakzeptabler Geschwindigkeit nur eingeschränkt oder wegen möglicher Inkompatbilitäten sogar überhaupt nicht auf dem C64 spielbar ist. Das sind reichlich trübe Aussichten. :(

  • Das meint Ihr doch bitte nicht ernst...

    Also... ich nicht. :)
    Sind doch nur Gedankenspiele.


    Wie es aussieht, kann man Inform7 von vornherein ausschließen; und selbst bei Inform6 besteht die Gefahr, daß nach Abschluß der Programmierung am Ende ein Kompilat entsteht, welches aufgrund inakzeptabler Geschwindigkeit nur eingeschränkt oder wegen möglicher Inkompatbilitäten sogar überhaupt nicht auf dem C64 spielbar ist.

    ZTUU ist doch mit Inform6 gebaut, oder irre ich da? Machbar wär's.

  • Sind doch nur Gedankenspiele.

    Schon klar. ^^ Deshalb auch meine selbst nicht so ernst gemeinte Replik, ob das wirklich ernst gemeint sei.

    ZTUU ist doch mit Inform6 gebaut, oder irre ich da? Machbar wär's.

    Ausnahmen bestätigen die Regel. :/ Die Gefahr, die ich dabei sehe, ist halt, daß man vorher nicht weiß, ob es am Ende auch funktionieren wird. Diese Unwägbarkeit dürfte ein großes Hemmnis bei der Entwicklung sein. Außerdem steht zu befürchten, daß später bestimmte Teile des Spiels nicht laufen oder aus anderen Gründen wie Platzmangel etc wieder herausgenommen werden müssen. Und ob es dann auch mit einem deutschen Syntaxparser funktioniert, der um einiges umfangreicher ist als einer für Englisch, ist noch nicht bewiesen, sprich: eine echte Wahl in der Sprache hat man wohl nicht.

  • ZTUU ist doch mit Inform6 gebaut, oder irre ich da? Machbar wär's.

    Doch ist es. Das spielt sich auch mit Infocom's Interpreter noch einigermaßen flüssig auf dem C64. Allerdings lassen sich die wenigsten mit Inform erstellten z5-Kompilate flüssig und ohne Anzeigeprobleme spielen, auch Zeugma kommt mit einigen Anzeigen nicht mehr klar. Die meisten sind einfach furchtbar langsam zu spielen, selbst aus der REU heraus, was sicher damit zu tun hat, dass die Autoren nicht unbedingt auf Effektivität für 8-bitter geachtet haben (was man ihnen auch nicht vorwerfen kann).


    Da käme man nicht darum herum, inform auf die Finger zu gucken und herauszufinden, wie man es dazu bringt, möglichst effektiven Z-Code zu erzeugen. Und das ganze dann immer gleich auf dem C64 testen und dafür entwickeln. Ich würde einfach gucken, nichts zu verwenden, was nicht schon in z3 ging.


    Ob man sich das antun will, wäre eine andere Frage. Ich fände eine DDM-Machine ja viel interessanter ;)

  • Das meint Ihr doch bitte nicht ernst... Dabei kann es sich doch hoffentlich nur um einen Karnevalsscherz handeln. Der Magnetic Scrolls Interpreter beruht auf 68000-Maschinencode und ist damit noch nicht mal mehr ein Bytecode, sondern eher ein 16-Bit-Code.

    Ich habe den Code nicht angeschaut, es ging ja mal darum, Vorschläge zu bringen von alternativen Engines.
    Wenn sich jemand den Aufwand machen will, eine 6502 ASM Lösung zu proggen, wäre der C Code sicher kein schlechter Anfang um das Format zu verstehen.


    Abgesehen davon gibt es "The Pawn" und Co bereits für den C64. Wo wäre da der Sinn, diese Spiele mit einem deutlich schlechteren Interpreter erneut zum Laufen zu bringen?

    Es geht dem TE ja um eine Open Source Variante, die er bedenkenlos raushauen kann.


    Der größte Haken bei Magnetic Scrolls ist zudem, daß es dafür keinen Compiler (im Fachjargon "authoring system") mehr gibt.

    Das wäre für mich auch das grösste Killerkriterium zur Auswahl der Engine. Ohne PC Authoring System ist das ganze einfach nur strunz.


    Die meisten sind einfach furchtbar langsam zu spielen, selbst aus der REU heraus, was sicher damit zu tun hat, dass die Autoren nicht unbedingt auf Effektivität für 8-bitter geachtet haben (was man ihnen auch nicht vorwerfen kann).

    Hat eigentlich jemand der die anderen Lösungen kennt, die Variante von BlackSmurf ausprobiert? Ich weiss nicht, wie sich die Performance dort schlägt.

  • Es geht dem TE ja um eine Open Source Variante, die er bedenkenlos raushauen kann.

    Genau. :)
    Ein Hintergedanke war eben, dass man auch zumindest einen Teil der Fan-Adventures auch auf dem C64 starten kann (die auf der Z-Machine basieren).

    Hat eigentlich jemand der die anderen Lösungen kennt, die Variante von BlackSmurf ausprobiert? Ich weiss nicht, wie sich die Performance dort schlägt.

    Kurz fürs Protokoll: Ich mache meine Sache jetzt aus Zeitgründen am PC. Wenn ich mal Zeit habe, beschäftige ich mich aber nochmal mit den quelloffenen Lösungen, die hier angesprochen wurden. Vielleicht lässt sich auf deren Basis ja was entwickeln.


    Aber interessant, dass es kein "Textadventure Construction Kit" gibt - für Grafik-Adventures gab es das ja.

  • Neuer Z-Machine Interpreter Ozmoo:
    https://github.com/johanberntsson/ozmoo


    Hier mal der Text aus Facebook kopiert:

  • Man lernt nie aus. wusste gar nicht das es so was gibt.


    Kann man das auch für Deutschsprachige Adventures verwenden?


    Vielleicht doofe Frage, aber nen :wurm: ist halt mal doof! :whistling:

  • Kann man das auch für Deutschsprachige Adventures verwenden?

    Das kann man!


    </German>


    The C64 uses a character encoding called Petscii. The Z-machine uses a character encoding called Zscii. Standard Petscii contains 256 characters, and Ozmoo knows how to translate all the important characters between these encodings. It doesn't know what to do with most graphic characters in the Petscii encoding, so it will just translate them to the same code in Zscii.


    To make the interpreter understand anything except the standard Petscii characters, you need to tell the interpreter how to translate the character codes between Petscii and Zscii. I have already done this for the Swedish characters, and would be glad to help you do it for the German characters if you like. For Swedish, Commodore made a special version of the C64, with a custom version of the character ROM, which had [ replaced by ä, £ replaced by ö, ] replaced by å, and similar substitutions for the capital versions, and of course the keyboard had ä instead of [ etc.


    If you want to make sure the end user sees just the characters you intend them to see, you also need to supply a font which has these characters replaced by the corresponding German characters.


    The basic steps needed to write a game in German and then play it using Ozmoo:


    1. Write an adventure game using Inform 6. Get the German library from http://www.textfire.de/archiv/


    2. Create a custom font for the C64, including the German characters.


    3. Enter your character translations in the file streams.asm . You need to say which Petscii character should be replaced by which Zscii character on text input (when the user types) and which Zscii character should be replaced by which Petscii character on text output (when the game prints text). The Zscii character codes you need can be found under 3.8.7 at https://inform-fiction.org/zma…ards/z1point1/sect03.html (i.e ü is 157). The Petscii character codes can be found at http://sta.c64.org/cbm64pet.html


    4. Build your game with Ozmoo: ruby make.rb -f fonts\german.fnt game.z5


    You get a D64 image which you can play, give away or sell.

  • Thank you Fredrik,


    I translated your post for our German-only speaking users.


    Hier die Übersetzung des Textes von @fredrikr oben:


    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Der C64 verwendet die Zeichensatzkodierung PETSCII, während die Z-Maschine eine Kodierung namens ZSCII einsetzt.
    Standard PETSCII enthält 256 Zeichen und Ozmoo kann die wichtigsten Zeichen zwischen diesen Kodierungen übersetzen.
    Die Grafikzeichen werden in den gleichen ZSCII Code übersetzt, weil Ozmoo nicht wissen kann, wie diese zu übersetzen sind.


    Um mit dem Interpreter etwas Anderes als standard PETSCII zu verwenden, muss man ihm die Übersetzung zwischen PETSCII und ZSCII beibringen.
    Ich habe dies bereits für die Schwedischen Zeichen gemacht und würde gerne helfen, das Gleiche für Deutsch zu übersetzen, wenn Ihr möchtet.


    Commodore hatte für Schwedische Zeichen eine spezielle Version des C64 mit angepasstem Character ROM herausgebracht.
    Dieses beinhaltete das Zeichen [ ersetzt mit ä, £ ersetzt mit ö, ] ersetzt mit å und weitere, ähnliche Ersetzungen für die Kapitälchen.
    Das Tastaturlayout hatte natürlich auch ä statt [ etc.


    Wenn man sicherstellen will, dass der Endbenutzer die Zeichen sieht, die vorgesehen sind, braucht man auch eine Schrift, welche diese Zeichen durch die Deutschen Zeichen ersetzt.


    Die Basis-Schritte, um ein Spiel mit Ozmoo in Deutsch zu schreiben sind:

    • Schreiben des Adventures mit Inform 6. Dazu ist die Deutsche Library Datei aus http://www.textfire.de/archiv/ zu verwenden.
    • Erstellen eines angepassten Character ROMs, welches die Deutsche Zeichen beinhaltet.
    • Eingabe der Zeichen Übersetzung in der Datei streams.asm.
      Dazu muss man angeben, welches PETSCII Zeichen zu ZSCII für die Eingabe wird (also während der Benutzer den Text eingibt)
      und welches ZSCII Zeichen zu welchem PETSCII Zeichen während der Textausgabe wird (also wenn das Spiel den Text anzeigt).


      Die ZSCII Zeichencodes sind im Kapitel 3.8.7 in folgendem Weblink aufgelistet:
      http://www.inform-fiction.org/…ards/z1point1/sect03.html


      Beispielsweise ist ü der Code 157. Die PETSCII Zeichencodes sind hier aufgelistet: http://www.sta.c64.org/cbm64pet.html

    • Erstellen des Spiel mit Ozmoo: ruby make.rb -f fonts\german.fnt game.z5

    Damit wird ein D64 Diskettenabbild erstellt, das man spielen, weitergeben oder verkaufen kann.

  • Allerdings lassen sich die wenigsten mit Inform erstellten z5-Kompilate flüssig und ohne Anzeigeprobleme spielen, auch Zeugma kommt mit einigen Anzeigen nicht mehr klar. Die meisten sind einfach furchtbar langsam zu spielen, selbst aus der REU heraus, was sicher damit zu tun hat, dass die Autoren nicht unbedingt auf Effektivität für 8-bitter geachtet haben (was man ihnen auch nicht vorwerfen kann).


    Da käme man nicht darum herum, inform auf die Finger zu gucken und herauszufinden, wie man es dazu bringt, möglichst effektiven Z-Code zu erzeugen. Und das ganze dann immer gleich auf dem C64 testen und dafür entwickeln. Ich würde einfach gucken, nichts zu verwenden, was nicht schon in z3 ging.

    Z5 muss nicht ein Problem für den Geschwindichkeit sein. Borderzone und Sherloch sind Z5 spiele. Sie können auch Infom 6 Z5 spielen wie Ad Verbum und The Temple hier ausprobieren: http://microheaven.com/PostInfocom/


    Die parser im Inform library ist ganz gut, aber grosser und langsamer als die Infocom parser. Es ist auch langsammer in neuerer versionen.


    Wenn man ein Z-code spiel für C64 entwickeln will, solt man diese Dinge beobachten:

    • Nicht zu viele Objekte. 250 ist villeicht OK, 500 ist nicht eine gute Idee. Zimmern/Plätze sind auch Objekte.
    • Nicht zu viele Wörter.
    • Nicht zu vielen Code in ein Umzug verwenden. Manchmal ist es OK, aber nicht die ganze Zeit.

    Code und Strings kann die Interpreter von der Diskette abrufen. Die Objekte (aber nicht Code und Strings in die Objekte) und die Wörter bleiben in RAM. Wenn man zu vielen RAM für Objekte und Wörter braucht, wird das Spiel langsam.


    Ein Objekt ist mindestens 14 bytes in Z5, 9 bytes in Z3. Ein Wort ist 9 bytes in Z5, 7 bytes in Z3.

  • [*]Nicht zu vielen Code in ein Umzug verwenden. Manchmal ist es OK, aber nicht die ganze Zeit.

    Smells like machine translation... I would've translated move as "Bewegung" here.

  • Wenn man ein spiel mit Inform in Deutsch entwickeln will, kann man Martin Oehms Inform library übersetzung Deform benutzen: http://www.martin-oehm.de/deform/


    Hier ist das Abenteuer "Ruinen", mit Ozmoo gebaut. Das Zip-archiv enhält diese Dateien:


    ruinen.inf: Die Quelltexte. Es gibt auch eine Karte.
    ruinen.rec: Die Lösung.
    ruinen.z5: Die "storyfile", die man spielen kann, mit z.b. Frotz oder Gargoyle.
    ruinen.d64: Die spiel in C64 format, mit Ozmoo.


    Ozmoo benutzt die neue Systemfont von Retrofan, mit die folgende Deutsche Zeichen:


    ö = [
    ä = ]
    ü = @
    ß = Links Pfeil


    Es gibt ein problem mit dem Zitat am anfang des Spieles. Das ist ein Fehler in Ozmoo. Wir werden es reparieren.


    Feedback ist willkommen!


  • Feedback ist willkommen!


    Als jemand, der (fast) die gesamte Infocom-Sammlung im Schrank stehen hat, kann ich da nicht widerstehen!


    • Der Font gefällt mir gut
    • Sind noch einige Tippfehler drin (z.B. "belonht", "Notitzen", ...)
    • Verben mit Umlauten sind nicht unterstützt? (druecke vs. drücke, beruehre vs. berühre)
    • mir ist keine deutsche übersetzung für "inventory" eingefallen, ich war aber froh dass "i" funktioniert hat. Und dann ist mir "inventar" eingefallen. :roll2:
    • in der Dunkelheit hat mich dann folgende Situation nicht mehr weiter spielen lassen und etwas demotiviert

      • "schalte lampe ein" - "die lampe muss erst sicher stehen".
      • "lege lampe ab" - "in ordnung."
      • "schalte lampe ein" - "so etwas kannst du nicht sehen"
    • Also falls das ein Rätsel sein soll... Naja, schaumermal wann ich es gelöst habe

    Gruß, Goethe.
    _______________
    C64, C128DCR, SX64, C16, plus/4, A1200+Blizzard1230/IV, A600HD+Vampire600V2, A300+ACA620, MEGA65, Atari 800+810
    Vectrex, Game Boy, NDSi, GameCube, Game Gear, Mega Drive, Mega CD, 32X, Multimega, Nomad, Saturn, Dreamcast, XBox, PS2, PSP, PS3, PS Vita, Ouya, PS4, PS5