Alice im Ren’Py-Land
I did it! Ich habe mein gestern veröffentlichtes, mit Ink und Inky erstelltes und im Web veröffentlichtes Mini-Spiel nach Ren’Py portiert. Und es hat gar nicht wehgetan! 😎
Nun gut, mangels einer entsprechenden Schnittstelle, wie sie Ink zum Beispiel für Unity besitzt, mußte ich die einzelnen Szenen manuall per cut and paste in Ren’Py einkopieren, aber trotz API ist bei diesem Vorgang auch in Unity noch einiges händisch zu erledigigen.
Nein, der Vorteil ist: Steht erst einmal das Grundgerüst mit den einzelnen Szenen in Ren’Py, dann kann man in Ink/Inky an den Texten feilen, sie durchspielen und auf logische Lücken kontrollieren und Korrektur lesen (für diese Aufgaben ist das Teil konzipiert). Ist man dann mit dem Ergebnis zufrieden, kopiert man alles auf einen Rutsch nach Ren’Py.
Zudem bekommt man mit Ink/Inky eine Web-Version »geschenkt«, die man entweder als eigenständige Version oder als Pre-Release unters Volk bringen kann (zum Beispiel über itch.io).
Der eigentliche Quellcode ( script.rpy
) ist noch sehr übersichtlich (weniger als 100 Zeilen). Es ist aber auch nur ein sehr kleines Spielchen, das schon nach wenigen Sekunden durchgespielt ist:
# Bilder
image startszene = "alice1.jpg"
image kitchen = "alice2.jpg"
image schweinchen = "alice3.jpg"
image teeparty = "alice4.jpg"
image raupe = "alice5.jpg"
image endszene = "alice6.jpg"
# Charaktere
define a = Character("Alice", color="#c8ffc8")
define g = Character("Grinsekatze", color="#f39c12")
define r = Character("Raupe", color="#6495ed")
# Hier beginnt das Spiel.
label start:
scene startszene
"Es war ein sonniger Tag. Alice schlenderte gedankenverloren
durch das Wunderland. Sie hatte sich ein wenig verirrt.
Plötzlich materialisierte sich im Gestrüpp über ihrem Weg die
Grinsekatze."
a "Würdest Du mir bitte sagen, wie ich von hier aus weitergehen
soll?"
g "Das hängt zum großen Teil davon ab, wohin Du möchtest."
menu:
"Aber ich will Dir weiterhelfen:"
"Geradeaus geht es zum Haus der Herzogin":
jump herzogin
"Links zur Teeparty des verrückten Hutmachers":
jump teaparty
"Rechts triffst Du die kiffende Raupe auf ihrem Pilz":
jump caterpillar
label herzogin:
scene kitchen
"Im Haus der Herzogin herrschte Chaos. Die Herzogin warf
erst mit einem Topf nach Alice, doch dann drückte sie ihr
ein plärrendes Baby in den Arm."
jump ferkel
label ferkel:
scene schweinchen
"Alice verließ das Haus. Das Plärren des Babys veränderte
sich langsam zu einem Grunzen und Quieken. Als Alice nachsah,
merkte sie, daß sie ein kleines Ferkelchen im Arm hielt."
"Erschreckt setzte Alice das Ferkelchen ab. Es lief davon."
"Und Alice ging verwirrt zurück an den Start."
jump start
label teaparty:
scene teeparty
"Alice erreichte die Teeparty vor dem Haus des verrückten
Hutmachers. Dieser deklamierte gerade ein langes, dafür
um so langweiligeres Gedicht."
menu:
"Alice hatte sehr schnell genug davon. Also
überlegte sie …"
"ob sie nicht doch die Raupe aufsuchen":
jump caterpillar
"oder gleich nach Hause gehen sollte.":
jump ende
label caterpillar:
scene raupe
"Die Raupe war zu bekifft, um ein vernünftiges Gespräch zu
führen. Sie murmelte nur immerzu etwas vom »Reich der Ringe«
und daß Alice dieses dringend besuchen müßte. Sie
sagte noch:"
r "Komm morgen wieder, dann erzähle ich Dir mehr."
"Alice beschloß, daß sie für heute genug habe und ging
nach Hause."
label ende:
scene endszene
menu:
"Damit ist die Geschichte zu Ende."
"Zurück an den Start?":
jump start
"Oder die Geschichte verlassen?":
return
Ich habe die Texte wegen der besseren Lesbarkeit ein wenig umgebrochen. Im Original stehen alle Textabschnitte (Absätze) natürlich in einer Zeile. Hier hilft in Visual Studio Code das Menü Anzeigen -> Zeilenumbruch
, das die Lesbarkeit nicht verloren geht. Und Quarto besitzt (noch?) kein Syntax-Coloring für .rpy
-Dateien, daher ist die Farbgebung etwas seltsam.
Das komplette Ren’Py-Projekt mit allen Quellen und Bildern findet Ihr wie gewohnt auf meinen GitHub-Seiten. Und ich werde jetzt noch ein wenig weiter mit Ren’Py spielen. Ich glaube nämlich, daß ich noch einiges herausfinden kann. Still digging!