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.


Grafiken hinzufügen

Die Grafiken initialisieren

Der erste Schritt, um ein Bild einzubinden, ist eine ""-Anweisung innerhalb eines Init-Blocks. Ein Ren'Py-internes Bild, das im weiteren Verlauf des Skripts dann verwendet wird, wird entweder einfach nur aus einer einzigen Farbe erstellt, oder aus einem Bild in einer Datei (um genau zu sein, aus jedem beliebigen Displayable):

init:
    image black = "#000000"
    image bg park = "park.jpg"
    image eileen happy = "eileen1.png"
    image eileen sad = "eileen2.png"
    image eileen surprised = "eileen3.png"

Wie du siehst, können Namen für ein Bild aus mehr als nur einem einzigen Wort bestehen. Das kann sehr praktisch sein, wie wir noch im Abschnitt über das Anzeigen und Ausblenden von Bildern sehen werden. Die Namen für Bilder und die für Charaktere haben nichts miteinander zu tun, es kann also der selbe interne Name für jeweils ein Charakter- und ein Bild-Objekt verwendet werden.

Hintergrundbilder

Die ""-Anweisung leert den Bildschirm und zeigt bei Bedarf ein neues Hintergrundbild an:

scene bg park

(Nur noch als Hinweis: "bg park" ist der Name des Bildes; "bg" ist kein Ren'Py-spezifisches Schlüsselwort oder eine Anweisung oder etwas in diese Richtung.)

Charakter-Bilder

Die Bilder von Charakteren und anderen Objekten, die sich über den Hintergrund legen sollen, werden mit der ""-Anweisung angezeigt:

show eileen happy

Eine show-Anweisung ohne weitere Anpassungen zeigt das Bild in der Mitte des Bildschirms an. Man kann Bilder aber auch auf den Seiten anzeigen:

show eileen happy at right
show eileen happy at left

Explizit festgelegte Positionen

Ren'Py hat bereits einige Standard-Positionen definiert, aber man kommt oft in die Situation, Grafiken an einer bestimmten anderen Position anzeigen zu wollen.

Hierfür verwendet man Position:

show eileen happy at Position(xpos = 0.5, xanchor=0.5, ypos=0.5, yanchor=0.5)

xpos bezeichnet einen Punkt auf dem Hintergrund hinsichtlich des Abstands von der linken Kante. Bei einer vollen Zahl (z.B. 129) geht Ren'Py davon aus, dass der Abstand in Pixel gemeint ist. Wenn aber, wie im oberen Beispiel, eine Zahl zwischen 0 und 1 angegeben wird, wird dies als anteilig an der gesamten Breite angenommen. 0.25 würde also als "bei einem Viertel der Strecke vom linken zum rechten Rand" interpretiert werden.

xanchor bezeichnet den Ankerpunkt im Bild, auf den sich die Position bezieht. Wieder bezeichnet eine ganze Zahl die Pixelzahl vom linken Rand (diesmal vom Rand des Bildes), eine Zahl zwischen 0 und 1 den Anteil an der Gesamtbreite.

Ren'Py wird das Bild so anzeigen, dass die beiden Punkte, xpos und xanchor identisch sind.

Um das Bild nach links zu bewegen, muss also xpos verkleinert werden – für rechts vergrößert.

ypos und yanchor folgen den selben Regeln, um den Abstand von der oberen Bildschirmkante zu beschreiben.

Wenn eine bestimmte Position häufiger vorkommen soll, kann man ihr einen Namen geben, etwa so:

init:
    $ gardenpath = Position(xpos=0.5, xanchor=0.5, ypos=0.5, yanchor=0.5)

Man kann sie dann wie die vordefinierten Positionen verwenden:

show eileen happy at gardenpath

Überlappende Bilder

Neue Bilder werden von Ren'Py jeweils in einer eigenen Ebene angezeigt. Standardmäßig wird jede neue Ebene über allen bisherigen platziert.

Die meisten Bilder überlappen sich nicht, also ist hier die Positionierung der Ebenen egal. Manchmal kommt es aber doch vor, z.B. um einer Szene den Eindruck von Tiefe zu verleihen (große Bilder, die kleinere verdecken, erscheinen näher am Spieler zu sein).

Nehmen wir als Beispiel eine Szene mit einem Haus im Hintergrund und zwei Charakteren: einer im Vordergrund und einer etwas weiter hinten im Garten.

Gehen wir vereinfachend einmal davon aus, dass sie in ihrer Standard-Position jeweils an der richtigen Position auftauchen.

Wenn die Szene von Grund auf neu aufgebaut wird, ist es noch kein Problem, Überlappung richtig hinzubekommen:

scene bg houseGarden
show distantChar
show foregroundChar
with dissolve

Wenn aber die Szene bereits aufgebaut ist und der distantChar neu hinzukommt (weil er gerade aus dem Haus gekommen ist):

*** Falsch! ***

scene bg houseGarden
show foregroundChar
with dissolve

 "Aus dem Haus sind Schreie zu hören, und kurz darauf kommt distantChar in den Garten gerannt."

show distantChar with dissolve

*** Falsch! ***

Der zitierte Code ergibt nicht das gewünschte Ergebnis: distandChar wird auf der neuen, nun obersten Ebene angezeigt und damit foregroundChar verdecken, also genau falsch herum.

Den gewünschten Effekt bekommt man mit dem behind-Schlüsselwort:

...
 "Aus dem Haus sind Schreie zu hören, und kurz darauf kommt distantChar in den Garten gerannt."

show distantChar behind foregroundChar with dissolve

Damit überlappen sich die Bilder korrekt.

Wenn man mit show ein bereits angezeigtes Charakterbild mit einem anderen Bild des selben Charakters ersetzt, bleibt die Ebene erhalten, an der räumlichen Anordnung ändert sich also nichts.

Grafiken ausblenden

Bilder, die einmal angezeigt wurden, können auf drei Arten ausgeblendet werden:

Explizit

Man kann Ren'Py mit der ""-Anweisung ausdrücklich anweisen, die Grafik auszublenden:

hide eileen

Wenn der Name eines Bildes aus mehr als nur einem Wort besteht, muss nur das erste Wort angegeben werden (der erste Teil des Namens, der üblicherweise den Namen des Charakters bezeichnet, wird Bild-"Tag" genannt). Wenn verschiedene Versionen eines Charakter-Bilds verwendet werden (z.B. jeweils glücklich, ärgerlich, überrascht), muss man nicht genau angeben, welches zuletzt verwendet wurde.

Implizit durch ein "show"

Die "show"-Anweisung blendet automatisch alle angezeigten Bilder mit dem selben Bild-Tag aus. Zum Beispiel:

show eileen happy
e "Ich bin glücklich."
show eileen sad
e "Jetzt bin ich traurig."

funktioniert wie gewünscht - zuerst wird das Bild mit dem Namen "eileen happy" angezeigt, dann "eileen sad" - das zweite ersetzt aber das erste und legt sich nicht über das erste.

Implizit durch ein "scene"

Eine "scene"-Anweisung blendet automatisch sämtliche Bilder auf einem Bildschirm aus, es müssen also beim Wechsel einer Szene nicht ausdrücklich auch alle Charaktere ausgeblendet werden.

Effekte

Alle Anweisungen, die Bilder anzeigen oder wieder ausblenden, können mit einer with-Klausel (Referenz-Handbuch: ) angepasst werden:

scene bg park with fade
show eileen happy with dissolve

Es gibt eine recht große Anzahl an Effekten, aber die beiden eben genannten Animationen (fade und dissolve) sind die gebräuchlichsten. (Eine Liste aller vordefinierten Animationen gibt es im Referenz-Handbuch.)

Das, was passieren soll, passieren lassen

Weder die "scene"- noch die "show"-Anweisung zeigen das Bild sofort unmittelbar an. Viel mehr legen sie die Änderungen auf eine Warteschleife, die dann in einem Aufrutsch abgearbeitet wird. Wenn man die Anweisungen also kombiniert:

scene bg park
show eileen happy
show ted happy at left

werden alle auf einmal angezeigt. Die with-Klausel verändert verändert diese Verhalten allerdings:

scene bg park with fade
show eileen happy with dissolve
show ted happy at left with dissolve

Hier wird Ren'Py zuerst den Hintergrund einblenden, dann mit einem "dissolve" Eileen anzeigen, und anschließend Ted. Wenn man dagegen will, dass alle drei Bilder miteinander eingeblendet werden, muss man das "with" als Anweisung nach den drei "show"-Anweisungen schreiben:

show bg park
show eileen happy
show ted happy
with dissolve

Wegen diesem Prinzip der Warteschleife, und weil ein Bild mit dem selben Bild-Tag das vorige sofort ersetzt, funktioniert das folgende nicht:

show eileen happy
show eileen sad
show eileen morose
show eileen elated

Der Spieler wird hier nur das letzte Bild sehen. Wenn du wirklich willst, dass mehrere Versionen eines Charakters in Folge angezeigt weden, muss die "with"-Klausel zum Anzeigen verwendet werden:

show eileen happy with dissolve
show eileen sad with dissolve
show eileen morose with dissolve
show eileen elated with dissolve

Category: Ren'Py Web-Tutorial