This page is out of date

You've reached a page on the Ren'Py wiki. Due to massive spam, the wiki hasn't been updated in over 5 years, and much of the information here is very out of date. We've kept it because some of it is of historic interest, but all the information relevant to modern versions of Ren'Py has been moved elsewhere.

Some places to look are:

Please do not create new links to this page.


Schnelleinstieg

Willkommen zum Ren'Py-Schnelleinstieg. Hier wird gezeigt, wir man in nur wenigen Schritten ein komplett neues Ren'Py-Spiel erstellt. Wir machen das an Hand des Beispiel-Spiels "Die Frage". Die hier vorgestellten Beispiele sind alle Teil des echten Spiels, das auch mit Ren'Py mitgeliefert wird.

Der Ren'Py Launcher

Bevor du anfängst, ein eigene Spiel zu erstellen, solltest du dich erst einmal mit dem Ren'Py Launcher vertraut machen. Mit diesem kann man nämlich neue Spiele erstellen, sie verwalten, bearbeiten und ausführen.

Der Anfang. Um überhaupt erst einmal anzufangen, muss man Ren'Py natürlich herunterladen und es entpacken. Man startet es dann, indem man das "renpy"-Programm ausführt.

Ein Projekt auswählen. Schau dir am besten erst einmal an, wie das fertige Spiel "Die Frage" aussieht. Gehe dazu im Launcher auf "Projekt auswählen". Im nun folgenden Menü mit der Projekt-Auswahl wähle "die_frage". Du kommst wieder zurück ins Hauptmenü und kannst nun "Ausführen" wählen.

Das ursprüngliche Demo kann man genauso wieder aufrufen, nur dass man in der Projektauswahl natürlich das "Demo" statt "die_frage" auswählt.

Ein neues Projekt anlegen. Lege ein neues Projekt mit der "Neues Projekt"-Funktion an. Du wirst nun nach einer Vorlage gefragt. Wähle "template". Der Launcher wird dann nach einem Projektnamen fragen. "die_frage" selbst ist schon vergeben, also nimm einfach irgendeinen anderen Namen, zum Beispiel "meine_frage". Du wirst dann nach einem Farbschema gefragt. Nimm einfach irgendeines, man kann es später auch jederzeit wieder ändern. Du kommst schließlich ins Hauptmenü zurück, das neue Projekt ist damit angelegt.

Ein einfaches Spiel

label start:
    "Ich werde sie fragen..."

    "Ich" "Ähmm... willst du..."
    "Ich" "Willst du meine Künstlerin für eine Visual Novel sein?"

    "Schweigen."
    "Sie ist schockiert. Aber dann..."

    "Sylvie" "Klar, aber was ist denn eine \"Visual Novel\"?"

Das dürfte so ziemlich das einfachst mögliche Ren'Py-Spiel überhaupt sein. Es zeigt keine Bilder an, aber immerhin einen Dialog zwischen zwei Charakteren.

Um es auszuprobieren, gehe in den Launcher, wähle das "meine_frage"-Projekt aus und gehe auf "Skript bearbeiten". Dadurch werden die Programm-Dateien ("Skripts") in einem Texteditor geöffnet. Suche die "script.rpy"-Datei heraus, und lösche komplett alles - wir wollen wirklich ganz von Null anfangen. Kopiere das Beispiel oben in die Datei und speichere sie dann.

Nun kann man das Beispiel ausprobieren. Also zurück zum Launcher und "Ausführen". Das Programm startet nun. Bemerkenswert ist, dass all die netten Sachen wie eine Funktion zum Speichern und Laden von Spielständen oder verschiedene Spieleinstellungen schon automatisch mit dabei sind. Gehe auf "Spiel beginnen" und spiel das Spiel einmal durch.

Das Beispiel zeigt einige gebräuchliche Ren'Py-Anweisungen.

Die erste Zeile ist eine "Label"-Anweisung. Labels gliedern das Programm in verschiedene Teile und benennen diese. Das Beispiel hier besteht nur aus einem Teil, das "start" heißt. "start"-Labels sind dabei etwas besonderes: die bezeichnen den Teil des Spiels, der als erstes ausgeführt wird, wenn man im Hauptmenü auf "Spiel beginnen" geht.

Die anderen Zeilen sind Dialog- (und Monolog-)Anweisungen. Es gibt davon zwei Sorten. Die eine Sorte besteht aus einer allein stehenden Zeichenkette ("String"), die von Anführungszeichen umgeben ist. Sie wird für Erzählungen und Gedanken der Hauptperson verwendet. Die zweite Sorte besteht aus zwei Zeichenketten, die beide jeweils von Anführungszeichen umgeben werden. Diese werden für Dialoge verwendet: die erste Zeichenkette gibt den Namen des sprechenden Charakters an, die zweite das Gesprochene.

Sehr wichtig ist dabei, dass alle Anweisungen (mit Ausnahme des Labels) mit genau vier Leerzeichen eingerückt sind. Damit wird ausgedrückt, dass sie zum Abschnitt "start" gehören. In Ren'Py müssen Blöcke immer um genau vier Leerzeichen im Verhältnis zur übergeordneten Anweisung eingerückt sein, wobei hier das Label die übergeordnete Anweisung ist.

Falls in einer Zeichenkette einmal Anführungszeichen vorkommen, muss man aufpassen, da Anführungszeichen bereits verwendet werden, um den Anfang und das Ende der Zeichenkette zu markieren und Ren'Py sonst verwirrt wird. Wenn also mitten im Text eines vorkommen soll, muss man ihm unmittelbar ein Backslash (das hier: \, das man meistens über "Alt-Gr" u. "ß" bekommt) voranstellen. In der letzten Zeile des Beispiels sieht man das.

Während das Spiel bis jetzt sicher noch nicht spektakulär ist, zeigt es doch, wie einfach man bei Ren'Py ein lauffähiges Programm bekommt. Gleich kommen dann noch Bilder hinzu - zuvor schauen wir uns aber noch kurz an, wie man Charaktere definiert.

Init-Blöcke und Charaktere

Eine der unangenehmen Sachen beim Beispiel eben ist, dass man den Namen des sprechenden Charakters jedes Mal aufs neue eingeben muss, wenn er etwas sagt. Bei Spielen mit viel Dialogen kann das auf Dauer recht viel öde Tipparbeit sein. Außerdem werden beide Charakternamen in der selben, eher langweiligen, Schriftart geschrieben. Um das einfacher zu machen, kann man mit Ren'Py am Anfang des Spiels Charaktere definieren. Man kann so jedem Charakter einen Kurznamen zuweisen und die Farbe des Charakternamens ändern.

init:
    $ s = Character('Sylvie', color="#c8ffc8")
    $ m = Character('Ich', color="#c8c8ff")

label start:
    "Ich werde sie fragen..."

    m "Ähmm... willst du..."
    m "Willst du meine Künstlerin für eine Visual Novel sein?"

    "Schweigen."
    "Sie ist schockiert. Aber dann..."

    s "Klar, aber was ist denn eine \"Visual Novel\"?"

Die erste Zeile ist eine Init-Anweisung, die einen eigenen Block definiert. Die zwei (um vier Zeichen) eingerückten Zeilen werden ausgeführt, wenn das Spiel gestartet wird. Solche Blöcke werden genutzt, um Charaktere, Variablen und Bilder zu definieren. Es sind aber keine Anweisungen zulässig, die mit dem Nutzer interagieren (also Dialoge und dergleichen).

Die zweite und dritte Zeile definieren Charaktere. Die zweite Zeile definiert einen Charakter mit dem Kurznamen "s" und dem ausgeschriebenen Namen "Sylvie", der in einer grünlichen Farbe angezeigt wird (das "#c8ffc8" sind Rot/Grün/Blau-Werte in Hexadezimalschreibweise - genauso wie sie beim Erstellen von Webseiten vorkommen).

Die dritte Zeile erzeugt einen Charakter mit dem Kurznamen "m" und dem ausgeschriebenen Namen "Ich", der in einer rötlichen Farbe angezeigt wird. Weitere Charaktere können einfach dadurch erzeugt werden, indem man eine der Zeilen kopiert und die drei Werte anpasst.

Die Dialog-Anweisungen wurden ebenfalls geändert, sodass sie nun diese "Charakter-Objekte" (also das "m" oder "s") verwenden, statt dem ausgeschriebenen Charakternamen wie bisher. Diese weisen Ren'Py an, den oben definierten Charakter zu verwenden.

Bilder

Visual Novels werden natürlich erst dann zu richtigen Visual Novels, wenn auch Bilder vorkommen. Also fügen wir ein paar davon hinzu.

init:
    image bg meadow = "meadow.jpg"
    image bg uni = "uni.jpg"

    image sylvie smile = "sylvie_smile.png"
    image sylvie surprised = "sylvie_surprised.png"

    $ s = Character('Sylvie', color="#c8ffc8")
    $ m = Character('Ich', color="#c8c8ff")

label start:
    scene bg meadow
    show sylvie smile

    "Ich werde sie fragen..."

    m "Ähmm... willst du..."
    m "Willst du meine Künstlerin für eine Visual Novel sein?"

    show sylvie surprised

    "Schweigen."
    "Sie ist schockiert. Aber dann..."

    show sylvie smile

    s "Klar, aber was ist denn eine \"Visual Novel\"?"

Zuerst müssen wir die verwendeten Bilder definieren. Das passiert in Zeile 2, 3, 5 und 6 im Init-Block. Die "image"-Anweisungen geben einen Namen für das Bild an und den Dateinamen des zugehörigen Bildes.

Zum Beispiel definiert Zeile 5 ein Bild namens "sylvie smile", das in der Datei mit dem Namen "sylvie_smile.png" gespeichert ist. Das "Tag" (dazu gleich mehr) ist dabei "sylvie", also der erste Teil des Namens.

In Zeile 12 steht eine "scene"-Anweisung. Diese leert den Bildschirm und Zeigt das Bild "bg meadow". In der nächsten Zeile steht ein "show", welches das Bild "sylvie smile" anzeigt.

Der erste Teil eines Bildnamens ist das "Tag". Wenn bereits ein Bild angezeigt wird und ein neues Bild mit dem selben Tag angezeigt werden soll, wird das ursprüngliche Bild dadurch ersetzt. Das passiert in Zeile 19, der zweiten "show"-Anweisung. Bis dahin ist das Bild "sylvie smile" auf dem Bildschirm, diese Anweisung ersetzt es aber durch das Bild "sylvie surprised", da sie beide mit dem Tag "sylvie" beginnen.

Damit Ren'Py die Bild-Dateien findet, müssen sie im "game"-Verzeichnis des jeweiligen Projekts gespeichert sein. Das Verzeichnis findet man, in dem man im Ren'Py-Hauptverzeichnis in "/game/" geht, oder indem man im Launcher auf "Projekt-Verzeichnis" geht. In diesem konkreten Fall wird es wohl das beste sein, einfach die Bilder vom bestehenden Projekt herüberzukopieren, also von "die_frage/game/" in "meine_frage/game/". Danach kann das Beispiel oben ausgeführt werden.

Ren'Py unterscheidet nicht zwischen Bildern für Hintergründe und für Charaktere - beide sind normale Bilder. Generell müssen Charakter-Bilder aber transparente Hintergründe haben - also letztlich im PNG-Format gespeichert sein. Hintergrundgrafiken können entweder als JPEG oder als PNG gespeichert sein. Eine allgemeine Konvention, die zwar nicht zwingend ist, die Übersichtlichkeit aber stark erhöht, ist es, dass die Bildernamen aller Hintergründe mit dem Tag "bg" beginnen.

Hide-Anweisung. Ren'Py unterstützt auch die Anweisung "hide", mit der das angegebene Bild ausgeblendet wird.

    s "Ich werde sofort damit beginnen!"

    hide sylvie

    "..."

    m "Sowas hab ich nicht gemeint!"

Es ist allerdings recht selten, dass man "hide" wirklich braucht. "show" wird dann verwendet, wenn ein Charakter zum Beispiel den Gesichtsausdruck wechselt. "scene" wird hingegen dann verwendet, wenn alle bisherigen Bilder verschwinden sollen. "hide" braucht man nur dann, wenn ein einzelner Charakter die Szene verlässt, alle anderen und das Hintergrundbild aber bleiben.

Überblendungen

Es ist auf Dauer etwas langweilig, wenn die Bilder immer nur einfach auftauchen und plötzlich wieder verschwinden. Ren'Py unterstützt daher Überblendungen, mit denen Änderungen an der Szene interessanter gestaltet werden können. Überblendungen nehmen das Bild, wie es kurz gerade zuvor ausgesehen hat, und führen es in den Zustand über, wie es nach der voranstehenden "scene"-, "show"- oder "hide"-Anweisung aussehen soll.

label start:
    scene bg uni
    show sylvie smile

    s "Oh, hallo, gehen wir zusammen nach Hause?"
    m "Ja..."
    "Antwortete ich mit zitternder Stimme."

    scene bg meadow
    with fade

    "Wir erreichten die Wiesen vor der Stadt."
    "Der Herbst war wunderschön hier."
    "Als wir Kinder waren, hatten wir hier oft gespielt."
    m "Hey... ähmm..."

    show sylvie smile
    with dissolve

    "Sie drehte sich zu mir und lächelte."
    "Ich werde sie fragen..."
    m "Ähmm... willst du..."
    m "Willst du meine Künstlerin für eine Visual Novel sein?"

Wichtig sind hier die "with"-Anweisungen, sie geben an, dass eine Überblendung verwendet werden soll. Daneben steht an zweiter Stelle der Name der zu verwendenden Überblendung. Die gebräuchlichste davon ist dissolve, welches das vorige Bild einfach mit einem weichen Übergang zum nächsten überblendet. Eine weitere praktische Überblendung ist fade, welches zuerst in Schwarz überblendet und anschließend das neue Bild einblendet.

Wenn eine Überblendungs-Anweisung hinter einer ganzen Reihe an unmittelbar aufeinander folgenden "scene"-, "show"- oder "hide"-Anweisungen steht, gilt sie für alle zugleich. Bei folgendem Beispiel also...

    scene bg meadow
    show sylvie smile
    with dissolve

... würde das "dissolve" sowohl auf die Szene "bg meadow" und auf das Charakterbild "sylvie smile" gleichzeitig angewendet werden. Wenn dagegen eines nach dem anderen ausgeblendet werden sollen, schreibt man zwei "dissolve"-Anweisungen:

    scene bg meadow
    with dissolve
    show sylvie smile
    with dissolve

Das erste "dissolve" bezieht sich auf "bg meadow", das zweite auf "sylvie smile". Etwas trichreich wird es, wenn man das erste Bild sofort ohne Übergang anzeigen will, das zweite aber mit Übergang. In diesem Fall verwendet man den "None"-Übergang fürs erste Bild:

    scene bg meadow
    with None
    show sylvie smile
    with dissolve

Auf diese Weise wird verhindert, dass das "dissolve" auch auf das Hintergrundbild angewendet wird.

Positionen

Standardmäßig werden Bilder so angezeigt, dass sie in der Horizontalen zentriert und in der Vertikalen nach unten hin ausgerichtet sind - also unten in der Mitte im Bildschirm angezeigt werden. Das ist für Hintergrundbilder und für einzelne Charaktere genau das richtige, aber etwas ungünstig, wenn mehrere Charaktere gleichzeitig auf dem Bildschirm sind. Hier, und auch in einigen Fällen, wo es für die Handlung sinnvoll ist, macht es Sinn, die Charaktere an anderen Positionen am Bildschirm anzuzeigen.

    show sylvie smile at right

Um Bilder an einer anderen Position anzuzeigen, fügt man der "show"-Anweisung einen "at"-Ausdruck bei. Ren'Py kennt schon einige vordefinierte Positionen: left und right beziehen sich auf die beiden Enden des Monitors, center als Standard-Einstellung auf die Mitte (nach unten hin ausgerichtet), und truecenter auf die "richtige" Mitte, also sowohl horizontal als auch vertikal zentriert.

Man kann auch beliebige andere Positionen definieren, aber das sind dann schon fortgeschrittene Techniken, die in diesem kurzen Überblick nicht mehr behandelt werden.

Musik und Sound

Bei den meisten Spielen wird Musik im Hintergrund abgespielt. Ren'Py wiederholt Musikstücke automatisch, bis sie explizit angehalten werden. Musik wird mit der "music"-Anweisung abgespielt.

    play music "illurock.ogg"

Wenn ein anderes Musikstück abgespielt werden soll, kann man einen "fadeout"-Ausdruck beifügen, der das bisherige Musikstück erst abklingen lässt und dann das neue Stück beginnt.

    play music "illurock.ogg" fadeout 1.0

Musik kann mit der "stop music"-Anweisung gestoppt werden. Auch hier kann man bei Bedarf einen "fadeout"-Ausdruck beifügen.

    stop music

Sound-Effekte können mit der "play sound"-Anweisung abgespielt werden:

    play sound "effect.ogg"

Ren'Py unterstützt mehere Formate für die Soundausgabe. Es wird aber empfohlen, das freie und kostenlose Format OGG Vorbis zu verwenden. Genauso wie die Bilddateien müssen auch die Sound- und Musikdateien im "game"-Verzeichnis liegen.

Das Spiel beenden

Man kann das Spiel ganz einfach dadurch beenden, dass man einfach eine simple "return"-Anweisung schreibt. Es empfiehlt sich aber sehr, dem Nutzer zuvor auch irgendwie mitzuteilen, dass das Spiel nun beendet ist, und dem Ende einen Namen zu geben (falls es mehrere verschiedene gibt).

    ".:. Gutes Ende."

    return

Das ist alles, was für eine "Kinetic Novel" nötig ist, also ein Spiel ohne Handlungsverzweigungen. Im folgenden schauen wir uns aber einmal an, wie man dem Benutzer Auswahlmöglichkeiten anbieten kann, um die Handlung zu beeinflussen.

Menüs, Labels, Sprunganweisungen

Die "menu"-Anweisung stellt den Nutzer vor eine Auswahl.

    s "Klar, aber was ist denn eine \"Visual Novel\"?"

menu:
    "Eine Geschichte mit Bildern.":
         jump vn

    "Es ist ein Hentai-Spiel.":
         jump hentai

label vn:
    m "Eine Geschichte mit Bildern und Musik."
    jump marry

label hentai:
    m "Naja, es ist ein Spiel mit viel Sex."
    jump marry

label marry:
    scene black
    with dissolve

    "--- Jahre später ---"

Das Beispiel eben zeigt, wie man in Ren'Py Menüs erstellt. Die "menu"-Anweisung erzeugt so ein Menü im Spiel. Der "menu"-Anweisung folgen eine Reihe von Zeilen, die jeweils aus einem String (Zeichenkette), gefolgt von einem Doppelpunkt bestehen. Diese sind die Auswahlmöglichkeiten, die der Nutzer bei diesem Menü hat. Jeder solchen Auswahlmöglichkeit sollte ein Block aus weiteren Ren'Py-Anweisungen folgen. Wenn besagte Auswahl getroffen wird, werden genau diese Anweisungen ausgeführt.

In unserem Beispiel hier wird nach jeder Auswahl eine "jump"-Anweisung ausgeführt. Bei einem "jump" springt das Spiel zu der Position im Skript, die durch das gleichnamige "label" gekennzeichnet ist. Es wird dann im folgenden der Code ausgeführt, der auf dieses Label hin folgt.

Sylvie fragt hier also etwas, woraufhin der Nutzer ein Menü mit zwei Auswahlmöglichkeiten präsentiert bekommt. Wenn er "Eine Geschichte mit Bildern." wählt, wird die erste "jump"-Anweisung ausgeführt und das Spiel springt zum Label "vn". Die Ich-Figur "m" sagt daraufhin also "Eine Geschichte mit Bildern und Musik.", als nächstes folgt der Sprung zum "marry"-Label.

Labels können in jeder Datei definiert werden, die sich im "game"-Verzeichnis befindet und die Dateiendung ".rpy" hat. Der Dateiname selbst spielt keine Rollte, alles was zählt sind die Labels, die in den Dateien definiert sind. Daher ist es auch wichtig, dass jedes Label nur in genau einer Datei definiert werden darf.

Python und "If"-Anweisungen

Mit solchen Menüs und Sprung-Anweisungen können schon einfache, oder zum Teil auch recht komplexe Spiele gestaltet werden. Manchmal kann es aber notwendig werden, dass sich das Spiel frühere Auswahlen des Nutzers merkt - sie also in einer sogenannten "Variable" speichert.

Variablen sind Zeichenketten, die bei der Ausführung des Spiel verschiedene Werte annehmen können; ihnen können während dem Spiel konkrete Werte zugewiesen werden, zum Beispiel Zahlen oder Zeichenketten. Wenn sie an einer späteren Stelle dann wieder auftauchen, wird es so behandelt, als ob der zugewiesene Wert an dieser Stelle stünde. Um das zu erreichen, unterstützt Ren'Py die Programmiersprache "Python".

Python-Code kann auf zwei Weisen eingebunden werden: eine Zeile, die mit einem Dollar-Zeichen beginnt ist eine einzelne Zeile Python-Code. Es kann aber auch die Anweisung "python:" verwendet werden, bei der dann der komplette folgende, eingerückte Block wie ein Python-Programm behandelt wird.

Mit Python kann man zum Beispiel einfach reine Ja/Nein-Werte (Flags bzw. Bool'sche Werte) in einer Variable speichern. Dazu muss man nur diese Variable gleich am Anfang des Spiels definieren:

label start:
    $ bl_game = False

"bl_game" ("Boy's love game") ist hier der Name der Variable. Zu Beginn enthält sie den Wert "False" (im Gegensatz zum "Ja"-Wert "True"). Der Inhalt kann während dem Spiel geändert werden, zum Beispiel abhängig davon, welche Auswahlmöglichkeit beim Menü getroffen wurde. Hier wird "bl_game" auf "True" gesetzt, wenn sich der Nutzer für die Auswahl mit dem schmutzigen Zeug entschieden hat:

label hentai:

    $ bl_game = True

    m "Naja, es ist ein Spiel mit viel Sex."
    s "Du meinst, wie ein {i}Boy's Love{/i}-Spiel?"
    s "Sowas wollte ich schon immer mal machen."
    s "Ich werde sofort damit beginnen!"

    jump marry

Später kann das Spiel dann selbstständig Entscheidungen treffen, abhängig davon, welchen Wert diese Variable hat:

    "Und so wurden wir ein Team und erstellten viele Visual Novels."
    "Wir machten Spiele und hatten dabei auch selbst sehr viel Spaß."

    if bl_game:
        "Nun ja, abgesehen von diesem {i}Boy's Love{/i}-Spiel, auf das sie bestand."

    "Dann, eines Tages..."

Der Block unter der "if"-Anweisung wird hier nur dann ausgeführt, wenn die Variable den Wert "True" hat.

Natürlich sind solche Variablen nicht nur auf reine Ja/Nein-Werte beschränkt, sondern können beliebige Python-Werte annehmen. Zum Beispiel können sie den Namen des Spielers speichern oder einen aktuellen Punktestand. Da man bei Ren'Py den vollen Funktionsumfang der Programmiersprache Python nutzen kann (in der Ren'Py auch selbst geschrieben ist), hat man damit vielfältigste Möglichkeiten.

Das Spiel veröffentlichen

Wenn das Spiel fertig ist, gibt es noch eine Reihe an Sachen, die man erledigen sollte, bevor das Spiel veröffentlicht wird.

options.rpy bearbeiten. Die Datei options.rpy, die beim Anlegen eines neuen Spiels erzeugt wird, enthält einige Einstellungen, die man vielleicht anpassen will. Einige davon, wie zum Beispiel die Höhe und Breite des Spielfensters, sollten natürlich idealerweise schon bevor das Spiel erstellt wird eingestellt werden. Andere, wie zum Beispiel der Titel des Programmfensters, können jederzeit geändert werden.

Einen Hinweis auf Ren'Py. Es ist nicht zwingend notwendig, aber wir würden trotzdem sehr darum bitten, dass du Ren'Py innerhalb deines Spieles erwähnst, wenn es einen Abschnitt "Credits", "Über", "Impressum" oder ähnliches gibt. Irgendetwas wie "Erstellt mit der Visual Novel-Engine Ren'Py" - aber die genaue Formulierung ist dir überlassen.

Wir glauben da sehr an Mund-zu-Mund-Propaganda, und durch so einen Hinweis werden vielleicht noch mehr Leute darauf aufmerksam, dass man Visual Novels mit Ren'Py erstellen kann.

Eine README-Datei erzeugen. Vielleicht willst du noch eine README.txt-Datei anlegen und sie im Stammverzeichnis deines Projekts anlegen (also das Verzeichnis, in dem das "game"-Verzeichnis liegt). In ihr können verschiedene Infos zum Spiel stehen. Du solltest dir auch überlegen, zu welchen Bedingungen du das Spiel freigibst - ob kostenlos oder nicht, ob andere Personen das Spiel weiterkopieren dürfen oder nicht, oder ob sie es anpassen dürfen oder Teile weiterverwenden dürfen. Das Spiel sollte also unter eine dazu passende Lizenz gestellt werden.

Ren'Py aktualisieren. Es erscheinen regelmäßig neue Versionen von Ren'Py, die Fehler beheben und neue Funktionen hinzufügen. Schau also gelegentlich auf der Download-Seite vorbei um zu sehen, ob es neue Versionen gibt.

Das Skript überprüfen. Im Launcher sollte man im Tools-Menü die Option "Skripten prüfen (Link)" wählen. Das untersucht das Spiel auf eventuelle Fehler hin - vor allem solche, die man selbst vielleicht nicht auf Anhieb findet, weil sie nur bestimmte Benutzer betreffen. Es öffnet sich danach ein Fenster, in dem einige Statistiken über das Spiel angezeigt werden, und die Fehlermeldungen, falls es welche gibt.

Distribution erstellen. Wähle diesen Eintrag im Tools-Menü. Der Launcher wird einmal mehr die Skripten überprüfen, einige Fragen stellen und anschließend das Spiel verpacken.

Testen. Das Skripten Prüfen mit Lint ist kein Ersatz für ausführliche Tests. Es ist wirklich wichtig, das Spiel nocheinmal gründlich zu testen, bevor es veröffentlicht wird.

Veröffentlichen. Lade die drei Dateien (eine für Windows, eine für den Mac und eine für Linux) irgendwo hoch und sag deinen Freunden, dass sie es herunterladen können. Glückwunsch, dein Spiel ist veröffentlicht!

Du kannst das Spiel dann auch im Lemma Soft Forum ankündigen.

Skript von "Die Frage"

Das vollständige Skript des Spiels Die Frage gibt es hier.

Und weiter?

Diese Anleitung hat nur sehr knapp angerissen, was Ren'Py alles kann. Viele Funktionen wurden der Einfachheit halber ausgelassen. Um ein Gefühl dafür zu bekommen, was mit Ren'Py alles möglich ist, spiel einfach einmal das Demo durch und lass dich von Eileen durch die Funktionsvielfalt führen.

Um genaueres über Ren'Py zu lernen, gibt es viele Anleitungen auf englisch. Wir empfehlen, mit dem http://www.renpy.org/wiki/renpy/deu/doc/tutorials/Ren%27Py_Web-Tutorial Ren'Py Web-Tutorial zu beginnen. Um Spiele zu erstellen, bei denen der Text den gesamten Bildschirm füllt, gibt es das NVL-Modus-Tutorial. Das Cookbook enthält "Rezepte", wie man bestimmte Aufgaben mit Ren'Py lösen kann, einfache wie komplexe. Das Reference Manual ist komplex, enthält aber die umfassendsten Informationen darüber, was mit Ren'Py wie möglich ist.

Die häufigsten Fragen werden in dern FAQ beantwortet. Falls es danach noch Fragen gibt, kannst du sie jederzeit im Lemma Soft Forum stellen, dem offiziellen Ren'Py-Forum. Das ist das Zentrum der Ren'Py-Gemeinde, und wir freuen uns über neue Gesichter.

Danke, dass du Ren'Py nutzt - wir freuen uns auf die Projekte, die du damit hoffentlich umsetzt!