Ein Stay Forever-Textadventure

Moin,

ich habe in den letzten Jahren immer mal wieder so kleine, recht einfache Textadventures geschrieben, und ich hatte mal wieder Lust darauf, ein neues zu machen.
Und weil mir, inspiriert durch „Stay Forever spielt“, immer mal wieder der Gedanke an ein Stay Forever-Adventure kam, habe ich das nun einfach mal gemacht. Quasi als kleines Weihnachtsgoodie.

Download

Download als ZIP!

Die Hintergrundgeschichte

Die Geschichte ist schnell erzählt, aber vorweg: Natürlich spielt das alles in einer alternativen Zeitlinie (was ein Euphemismus ist für: „Ich hatte ja keine Ahnung von vielen Dingen und habe dann einfach was erfunden!“). Das erklärt die Abweichungen von der Realität.

Also: Gunnar und Christian haben die Aufnahme einer neuen Folge für heute geplant, aber Christian ist nicht am Platz und auch nicht erreichbar. Das ist so ungewöhnlich, dass sich Gunnar auf den Weg nach Nürnberg machen will, um Christian zu finden. That’s it!

Die Plattform/Hardwareanforderungen

Das Spiel ist im Kern ein C64-Spiel, d.h., es läuft im Emulator (gibt es auch Online, z.B. C64 online emulator - c64online.com ), auf echter Hardware oder auch auf Geräten wie dem TheC64.
Ich empfehle, es auch in so einer Umgebung zu spielen. Das entschleunigt!

Wer das partout nicht will oder kann, der findet auch eine Python-Variante im ZIP. Die benötigt ein installiertes Python 3.x und enthält Startskripte für Windows (StayForever.cmd) und Linux (StayForever.sh). Für Mac leider nicht, da habe ich keine Ahnung von. Eventuell läuft da eine (angepasste) Variante des Linux-Skripts drauf!?
Die Python-Version ist, wie auch die C64-Version, auf 40 Zeichen in der Breite beschränkt und stellt ebenfalls keine Umlaute dar (und nimmt diese auch nicht an!). Also auch dort gilt: Baer statt Bär! Warum das so ist, steht unten bei „Technik“, falls das jemanden interessiert.

Laden/Starten

Im Emulator: D64-Image in den Emulator ziehen. Wenn es nicht direkt startet, bzw. zum Starten auf echter Hardware:

LOAD „STAY*“,8
RUN

Python-Version:

Windows: StayForever.cmd doppelklicken
Linux: StayForever.sh ausführen (ggf. vorher ausführbar machen!)

Anmerkung zu Linux: Die Linux-Version startet mittels SUDO, weil die Keyboard-Bibliothek von Python das braucht. Wer das nicht mag, kann SUDO beim Aufruf von python im Skript entfernen. Das Spiel läuft dann normal, nur die „Wirklich beenden?“-Abfrage bei „exit“ funktioniert dann nicht.

Der Parser

Der Parser kann in weiten Teilen wie ein Zwei-Wort-Parser benutzt werden. Muss er aber nicht. Es geht also z.B.

nimm handy

es geht aber auch:

nimm das handy und dann benutze es

Wenn man nichts eingibt (also nur RETURN/ENTER), erhält man eine Liste der möglichen Befehle. Die kann man ggf. auch in verkürzter Form eingeben, z.B. „unt“ statt „untersuche“ usw.
Mehr als diese Verben in der Liste gibt es nicht. Ich mag es nicht, wenn man in Adventures scheitert, weil man nicht auf das Verb kommt, das das Spiel von einem haben will. Deswegen werden Gegenstände hier IMMER nur mit „benutze“ kombiniert.

Also z.B.:

benutze oel mit motor

und auch:

benutze schluessel mit tuer

Nur „gib“ und „benutze“ erlauben die Verwendung von zwei Objekten. Alle anderen Verben erwarten immer nur ein Objekt, das gilt auch für „oeffne“!

Der Parser kennt keine Synonyme oder Kurzformen für Objekte. Ein „Markstueck“ muss man also auch so eingeben, nur „Mark“ funktioniert nicht. Er ist allerdings etwas tolerant bei Tippfehlern, also würde auch „Morkstuack“ gehen. Deklinationen gehen in den meisten Fällen auch, also “rede mit dem jungen” geht, auch wenn das „Objekt” eigentlich “junge” ist.

Tipps

Das Spiel ist nicht sehr schwer (denke ich…) und die Anzahl der Orte ist übersichtlich. Wenn man dennoch feststeckt: Einfach alles mit „untersuche“ untersuchen. Dabei entdeckt man oft Hinweise oder neue Objekte und Optionen.

Technik

Für Technikinteressierte: Die Spiel-Engine ist in BASIC geschrieben, und das habe ich dann mit meinem eigenen Kompiler kompiliert. Der bietet verschiedene Zielsprachen an, neben Maschinensprache für den C64 eben auch Python. Deshalb gibt es diese Python-Version und deshalb verhält diese sich auch so, wie das BASIC-Programm auf dem C64. Weil sie eben eigentlich genau das ist.
Wer Python kann, wird sich über den erzeugten Code wundern und dort nichts vom BASIC-Programm wiederfinden. Das liegt daran, dass der Kompiler auf Basis eines Zwischencodes in die Zielsprache übersetzt und nicht direkt.
Das Spiel selbst ist nicht programmiert an sich, sondern besteht aus Beschreibungen in XML-Dateien, die mit einem kleinen Konverter in ein für den C64 ladbares Format umgewandelt werden. Das genannte BASIC-Programm (bzw. die kompilierte Variante davon) liest die dann ein und interpretiert den Inhalt. Daraus entsteht der Spielablauf, und das ist auch der Grund, wieso jeder Raum nachgeladen wird. Mit dieser Technik kann ich sehr schnell diese Art von Textadventures produzieren. Ich bin aber bei der Rätselgestaltung eingeschränkt, weil ich mangels spezifischen Codes auf bestimmte Dinge nicht reagieren kann.

Lizenz

Ich packe alle meine Sachen immer unter die UNLICENSE, also sprich: Public Domain!

Ich veröffentliche das ganze Ding später auf Github. Jetzt aber erstmal nicht, weil da Karte und Komplettlösung mit im Repository enthalten sind.

38 „Gefällt mir“

Das hört sich lustig an. Werde es heute Abend ausprobieren.

2 „Gefällt mir“

Das läuft unter MacOS natürlich genau so wie unter Linux (MacOS ist ja ein Unix-Derivat). Ich habe es gerade ausprobiert. Top! Danke!!

2 „Gefällt mir“

Danke für die Info! Ich habe das vermutet, aber ich war nicht sicher. Inbesondere in Bezug auf die Keyboard-Bibliothek. Die ist nämlich etwas…merkwürdig, um das milde auszudrücken.

1 „Gefällt mir“

done :slight_smile: vielen Dank, hat Spaß gemacht!

image

Was sogar fleißig und hab eine Karte gezeichnet:

5 „Gefällt mir“

Glückwunsch zur Veröffentlichung!
Mir geistert auch schon ewig eine Idee für ein Stay-Forever-Fangame im Kopf herum: Eine Art Game Dev Tycoon, aber mit den bekannten Personen und es müssen Podcasts produziert werden statt Spiele entwickelt.

2 „Gefällt mir“

Fertig :dab:

Hat mir sehr viel Spaß gemacht, wallah! :slight_smile: Auch wenn ich ganz am Ende noch mal ganz zum Anfang musste um Licht ins Dunkel zu bringen :sweat_smile:

Bin wahrlich kein Textadventurespieler, aber das war jetzt vom Umfang und den Möglichkeiten genau richtig für mich.

Vielen Dank!

2 „Gefällt mir“

So. Bin auch durch. Sehr geil :slight_smile:

2 „Gefällt mir“

Wow. Tolle Idee. Ich habe mir das gerade Stilecht auf meinen MEGA65 im C64-Core geladen. Die Ladezeit ist zwar etwas brutal, da ja ein echtes 1541-Laufwerk simuliert wird, aber das Retrogefühl ist unschlagbar.

2 „Gefällt mir“

Wenn du magst, hier ist eine Version, die nativ auf dem MEGA65 läuft: Stay Forvever für MEGA65

Ich habe die eben auf Basis einer älteren Version meines “Adventure-Interpreters” für den MEGA65 gebaut und die paar kleinen Änderungen seitdem nachgezogen. Ich hoffe, ich habe nichts vergurkt.
Die Version läuft im 40-Zeichen-Modus, wie die 64er-Version auch. Nur halt schneller…:slightly_smiling_face:

1 „Gefällt mir“

Das Github-Repo ist jetzt öffentlich: https://github.com/EgonOlsen71/stayforever

Da ist im Ordner “help” auch die Komplettlösung drin, also wer sich spoilen lassen will … :grinning_face:

Danke Dir. Das ist ja super. :grinning_face: Werde ich später gleich mal ausprobieren. Bisher gefällt mir das Adventure echt super. Ich werde berichten, wie die MEGA65 Version läuft.

2 „Gefällt mir“

Diabolisch mit dem Aufkleber…

1 „Gefällt mir“

Wenn du die Masten und Schilder hier in der Gegend sehen könntest (Region Hannover) … davon ist das stark inspiriert…:grin:

1 „Gefällt mir“

Bin jetzt auch durch.

Vielen Dank für die tolle Arbeit. Hat echt Spaß gemacht.

Und: Das war mein erstes Textadventure überhaupt!!

2 „Gefällt mir“

Cool, vielen Dank! Es ist schön zu hören, dass das Spiel auch für Adventure-Neulinge funktioniert. Ich wollte es zugänglich gestalten (im Rahmen der Limitierungen durch die gewählte Plattform natürlich), aber man weiß ja immer nicht, ob das dann auch geklappt hat.

2 „Gefällt mir“