Metlivi Blog

So ändern Sie den Gesichtsausdruck eines Charakters zwischen Dialogzeilen in einem Spiel im Retro-Stil

Um den Ausdruck eines Charakters zwischen Dialogzeilen zu ändern, bereiten Sie für jeden Ausdruck ein passendes Sprite vor und wechseln Sie dann das angezeigte Bild des Charakters unmittelbar vor der Zeile, die es verwendet. Behalten Sie die Position und die Gesamtsilhouette des Sprites einheitlich bei, damit der Gesichtswechsel gut erkennbar ist, ohne die Szene zu stören. In Ren’Py besteht die einfachste Methode darin, jedem Ausdruck dasselbe Image-Tag zu geben und show erneut mit einem neuen Ausdrucksattribut aufzurufen; die gleiche Sequenz funktioniert konzeptionell auch in anderen Engines, wenngleich sich deren Befehle unterscheiden.

15. Oktober 20266 Min. LesezeitVon Metlivi Editorial Team
Abschnitt 1

Entscheiden Sie, was den Wechsel auslösen soll

Beginnen Sie mit dem Dialogskript, nicht mit dem Sprite-Sheet. Markieren Sie nur Zeilen, in denen sich der Ausdruck des Charakters so ändert, dass der Spieler es bemerken sollte: eine neue Reaktion, ein Stimmungswechsel oder die Rückkehr zur Neutralität. Wenn sich das Gesicht bei jeder Zeile ändert, verliert der Ausdruck seine Aussagekraft und der Arbeitsaufwand für die Grafiken wächst rasant.

Notieren Sie sich für jede markierte Zeile den beabsichtigten Ausdruck und das Sprite-Asset, das ihn darstellen soll. Eine kleine Auswahl wie neutral, glücklich, besorgt und überrascht kann viele Szenen abdecken. Fügen Sie Varianten nur dann hinzu, wenn eine bestimmte Szene diese erfordert. Dies ist eine redaktionelle Entscheidung, keine Engine-Regel: Das passende Set hängt von der Grafik und den Dialogen des Spiels ab.

Abschnitt 2

Bereiten Sie Ausdrucks-Sprites vor, die sich nahtlos austauschen lassen

Verwenden Sie für jeden Ausdruck denselben Bildausschnitt, denselben Maßstab und denselben Ankerpunkt des Charakters. Wenn jedes Bild ein vollständiges Sprite ist, richten Sie Augen, Kopf und Körper dateiübergreifend aneinander aus, damit der Charakter beim Bildwechsel nicht zu springen scheint. Behalten Sie einen transparenten Hintergrund bei, wenn das Sprite über einer Szene liegen soll.

Überprüfen Sie Pixel-Art-Grafiken bei der tatsächlichen Anzeigeskalierung des Spiels. Eine Verschiebung um nur einen Pixel kann beim Wechseln der Sprites auffallen, und eine Skalierung kann das Pixelraster weichzeichnen oder verzerren. Es empfiehlt sich, jeden Ausdruck mit denselben Abmessungen zu exportieren und ihn mit einheitlichen Filter- und Skalierungseinstellungen zu importieren. Dies sind praktische Prüfungen für die Produktion; die genauen Einstellungen hängen von der Engine und dem Projekt ab.

Wählen Sie vorhersehbare Datei- oder Bildnamen wie mira neutral und mira worried. In Ren’Py bestehen Bildnamen aus einem Tag, gefolgt von optionalen Attributen; das Tag identifiziert das Charakterbild, das ein neuer show-Befehl ersetzen kann. Die Bilddokumentation von Ren’Py beschreibt dieses Benennungs- und Ersetzungsverhalten.

Abschnitt 3

Ausdrücke in Ren’Py ändern

Deklarieren Sie den Sprecher mit einem Image-Tag und verwenden Sie dann Ausdrucksattribute in den Dialogzeilen. Zum Beispiel:

define m = Character("Mira", image="mira")

label scene:
    show mira neutral
    m "The door is open."

    m worried "I thought I locked it."

    m "Maybe the wind caught it."

Hier ist mira das Image-Tag und neutral bzw. worried das Attribut. Die besorgte Zeile aktualisiert das angezeigte Charakterbild; die folgende Zeile behält diesen Ausdruck bei, da kein neues Attribut angegeben ist. Fügen Sie m neutral "..." in der letzten Zeile hinzu, wenn das Skript sie ausdrücklich wieder auf neutral zurücksetzen soll. Die Dialogdokumentation von Ren’Py erklärt, dass ein mit einem Image-Tag definierter Charakter in der Say-Anweisung Bildattribute erhalten kann und dass diese Attribute wie ein entsprechender show-Befehl wirken, wenn das Bild bereits angezeigt wird. Ren’Py: Dialoge und Bildattribute

Wenn Sie nicht das vollständige Sprite des Charakters auf dem Bildschirm haben möchten, verwenden Sie dieselbe Idee mit einem Porträtelement in der Dialogoberfläche. Die Engine benötigt dennoch eine Möglichkeit, den aktuellen Sprecher und Ausdruck einem Bild zuzuordnen; eine Porträt-Benutzeroberfläche verwendet möglicherweise eine andere Benennungskonvention oder Datenstruktur. Schlagen Sie in der Dokumentation des gewählten Frameworks nach, bevor Sie Ren’Py-Syntax in eine andere Engine übernehmen.

Abschnitt 4

Wählen Sie zwischen einem sofortigen Wechsel oder einem Übergang

Ein sofortiger Wechsel passt gut zu einer klaren Retro-Darstellung und hält den Ausdruckswechsel eng an die jeweilige Zeile gekoppelt. Ein Übergang kann den Austausch weicher wirken lassen, sollte aber nur verwendet werden, wenn der visuelle Stil des Spiels dies unterstützt. Eine schnelle Überblendung kann dafür sorgen, dass eine Veränderung weniger abrupt wirkt; eine lange Überblendung kann den Moment verzögern, ab dem der neue Ausdruck gut erkennbar ist.

Ren’Py unterstützt Übergänge wie dissolve bei Bildwechseln. Beispielsweise wendet show mira worried with dissolve beim Ändern des angezeigten Bildes eine Überblendung an. Das dokumentierte Standard-dissolve dauert eine halbe Sekunde, was bei schnellen Dialogen als langsam empfunden werden kann; testen Sie das Tempo im Kontext und wählen Sie bei Bedarf eine kürzere, benutzerdefinierte Dauer. Ren’Py-Dokumentation zu Übergängen

Vergleichen Sie bei Pixel Art den Übergang mit einem direkten Wechsel bei der Zielauflösung des Spiels. Bei einer Überblendung vermischen sich alte und neue Pixel während des Wechsels, was im Vergleich zu einem bewusst abgestuften oder sofortigen Wechsel unscharf wirken kann. Dies ist eine stilistische Entscheidung, die in einer laufenden Szene überprüft werden sollte, anstatt ein Effekt zu sein, der automatisch hinzugefügt wird.

Abschnitt 5

Halten Sie das Sprite stabil, während sich das Gesicht ändert

Bevor Sie weitere Grafiken hinzufügen, prüfen Sie, ob der Ausdruckswechsel über das beabsichtigte Merkmal hinaus etwas anderes verändert. Vergleichen Sie aufeinanderfolgende Frames oder Screenshots hinsichtlich Position, Skalierung und Silhouette des Sprites. Wenn der Charakter zu zucken scheint, richten Sie die Ausgangsbilder neu aus oder korrigieren Sie deren gemeinsamen Pivot- oder Ursprungspunkt in der Engine.

Überprüfen Sie auch die Ebenenanordnung und das Dialog-Timing. Ein Sprite-Wechsel sollte nicht versehentlich den Hintergrund löschen, den Charakter hinter ein anderes Bild verschieben oder eine zusätzliche Eingabe des Spielers erfordern, bevor die neue Zeile erscheint. In Ren’Py ersetzt show ein Bild mit demselben Tag, während hide im Allgemeinen dafür vorgesehen ist, wenn ein Charakter die Szene verlässt; die Dokumentation empfiehlt ausdrücklich, einen emotionalen Ausdruck mit show zu ersetzen, anstatt das Sprite in separaten Schritten aus- und wieder einzublenden. Ren’Py-Regeln für die Bildanzeige

Abschnitt 6

Überprüfen Sie die Änderung in der eigentlichen Dialogsequenz

Spielen Sie die Szene ab mindestens einer Zeile vor dem ersten Wechsel bis zum nächsten Ausdruckswechsel durch. Vergewissern Sie sich, dass das Gesicht bei der gewünschten Zeile aktualisiert wird, danach wie beabsichtigt bleibt und erst dann zu neutral zurückkehrt, wenn das Skript dies vorgibt. Testen Sie sowohl die Version mit sofortigem Wechsel als auch die mit Übergang, falls Sie unentschlossen sind.

Überprüfen Sie die Sequenz bei der Zielauflösung des Spiels und mit sichtbarer Dialogbox. Stellen Sie sicher, dass das Gesicht nicht verdeckt, abgeschnitten oder zu klein zum Erkennen ist. Wenn die Änderung fehlerhaft aussieht, gehen Sie bei der Fehlersuche in dieser Reihenfolge vor: Überprüfen Sie den Namen des Ausdrucks im Skript, stellen Sie sicher, dass das passende Bild existiert und von der Engine erkannt wird, und kontrollieren Sie anschließend die Ausrichtung und das Verhalten der Übergänge. Diese Reihenfolge trennt ein fehlendes Asset oder eine fehlerhafte Benennung von einem Problem bei der Platzierung der Grafik.

Das fertige Setup sollte sicherstellen, dass jede Änderung gewollt ist: Das Skript benennt den Ausdruck, das passende Sprite behält die Platzierung des Charakters bei, und ein kurzer Testlauf bestätigt, dass der Wechsel im Tempo des Dialogs gut lesbar ist.

Abschnitt 7

Quellen

Weitere Artikel

Dieses Thema weiter erkunden