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
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.


