Blog Metlivi

Jak zmieniać wyraz twarzy postaci między kwestiami dialogowymi w grze w stylu retro

Aby zmieniać wyraz twarzy postaci między kwestiami dialogowymi, przygotuj pasujący sprite dla każdego wyrazu, a następnie zmień wyświetlany obraz postaci tuż przed kwestią, w której ma się pojawić. Zachowaj pozycję sprite’a i ogólny zarys sylwetki, aby zmiana twarzy była wyraźna i nie zakłócała sceny. W Ren’Py najprostszą metodą jest przypisanie każdemu wyrazowi twarzy tego samego znacznika obrazu i ponowne użycie show z nowym atrybutem wyrazu; ta sama zasada działa w innych silnikach, choć ich polecenia są inne.

15 października 20266 min czytaniaAutor: Metlivi Editorial Team
Sekcja 1

Zdecyduj, co ma wywoływać zmianę

Zacznij od skryptu dialogowego, a nie od arkusza sprite’ów. Zaznacz tylko te kwestie, przy których wyraz twarzy postaci zmienia się w sposób, który gracz powinien zauważyć: nową reakcję, zmianę tonu lub powrót do neutralnego wyrazu. Jeśli twarz zmienia się przy każdej kwestii, wyraz przestaje przekazywać wiele informacji, a nakład pracy nad grafiką szybko rośnie.

Przy każdej zaznaczonej kwestii zapisz zamierzony wyraz twarzy i asset sprite’a, który go wyświetli. Niewielki zestaw, na przykład neutralny, radosny, zmartwiony i zaskoczony, może wystarczyć w wielu scenach. Dodawaj warianty tylko wtedy, gdy wymaga ich konkretna scena. To decyzja redakcyjna, a nie zasada silnika: właściwy zestaw zależy od grafiki i dialogów w grze.

Sekcja 2

Przygotuj sprite’y wyrazów twarzy, które można łatwo podmieniać

Używaj takiego samego kadrowania, skali i punktu zakotwiczenia postaci dla każdego wyrazu twarzy. Jeśli każdy obraz przedstawia całą postać, wyrównaj oczy, głowę i ciało na wszystkich plikach, aby zmiana obrazu nie sprawiała wrażenia, że postać podskakuje. Jeśli sprite ma być wyświetlany na tle sceny, zadbaj o przezroczyste tło.

W przypadku pixel artu sprawdzaj obrazy w docelowej skali wyświetlania gry. Przesunięcie o jeden piksel może rzucać się w oczy przy zmianie sprite’ów, a zmiana skali może rozmyć lub zniekształcić siatkę pikseli. Eksportuj każdy wyraz twarzy w takich samych wymiarach i importuj go z tymi samymi ustawieniami filtrowania i skalowania. To praktyczne kontrole w procesie produkcji; konkretne ustawienia zależą od silnika i projektu.

Wybieraj przewidywalne nazwy plików lub obrazów, takie jak mira neutral i mira worried. W Ren’Py nazwy obrazów składają się ze znacznika i opcjonalnych atrybutów; znacznik identyfikuje obraz postaci, który może zastąpić nowy show. Dokumentacja obrazów Ren’Py opisuje ten sposób nazewnictwa i mechanizm zastępowania obrazów.

Sekcja 3

Zmieniaj wyraz twarzy w Ren’Py

Zadeklaruj postać mówiącą za pomocą znacznika obrazu, a następnie używaj atrybutów wyrazu twarzy w kwestiach dialogowych. Na przykład:

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

Tutaj mira jest znacznikiem obrazu, a neutral lub worried jest atrybutem. W zmartwionej kwestii aktualizowany jest wyświetlany obraz postaci; w następnej kwestii ten wyraz twarzy pozostaje, ponieważ nie określono nowego atrybutu. Jeśli skrypt ma jawnie przywrócić neutralny wyraz twarzy, dodaj m neutral "..." w ostatniej kwestii. Dokumentacja dialogów Ren’Py wyjaśnia, że postać zdefiniowana za pomocą znacznika obrazu może otrzymywać atrybuty obrazu w instrukcji say, a gdy obraz jest już wyświetlany, atrybuty te działają jak odpowiadające im polecenie show. Atrybuty dialogu i obrazu w Ren’Py

Jeśli nie chcesz wyświetlać na ekranie całego sprite’a postaci, zastosuj tę samą zasadę do elementu portretu w interfejsie dialogowym. Silnik nadal musi mieć sposób powiązania aktualnej osoby mówiącej i jej wyrazu twarzy z obrazem; interfejs portretów może korzystać z innej konwencji nazewnictwa lub struktury danych. Zanim skopiujesz składnię Ren’Py do innego silnika, sprawdź dokumentację wybranego frameworka.

Sekcja 4

Wybierz natychmiastową podmianę lub przejście

Natychmiastowa podmiana pasuje do wyrazistej oprawy retro i ściśle wiąże zmianę wyrazu twarzy z kwestią dialogową. Przejście może złagodzić podmianę, ale stosuj je tylko wtedy, gdy pasuje do stylu wizualnego gry. Szybkie przenikanie może sprawić, że zmiana będzie mniej gwałtowna; przy długim gracze mogą z opóźnieniem odczytać nowy wyraz twarzy.

Ren’Py obsługuje przejścia, takie jak dissolve, podczas zmiany obrazu. Na przykład show mira worried with dissolve stosuje przenikanie przy zmianie wyświetlanego obrazu. Udokumentowany domyślny czas dissolve wynosi pół sekundy, co może wydawać się powolne przy szybkim dialogu; sprawdź tempo w kontekście i w razie potrzeby wybierz krótszy niestandardowy czas. Dokumentacja przejść Ren’Py

W przypadku pixel artu porównaj przejście z bezpośrednią podmianą w docelowej rozdzielczości gry. Przenikanie miesza stare i nowe piksele podczas zmiany, przez co efekt może wyglądać na rozmyty w porównaniu z celowo skokową lub natychmiastową zmianą. To decyzja dotycząca stylu, którą należy sprawdzić w działającej scenie, a nie efekt, który trzeba dodawać automatycznie.

Sekcja 5

Zachowaj stabilność sprite’a podczas zmiany twarzy

Zanim dodasz więcej grafiki, sprawdź, czy podmiana wyrazu twarzy zmienia coś poza zamierzonym elementem. Porównaj kolejne klatki lub zrzuty ekranu pod kątem pozycji sprite’a, skali i zarysu sylwetki. Jeśli postać wydaje się drgać, wyrównaj obrazy źródłowe albo skoryguj wspólny punkt obrotu lub początek układu współrzędnych w silniku.

Sprawdź też warstwy i tempo dialogu. Zmiana sprite’a nie powinna przypadkowo usuwać tła, przesuwać postaci za inny obraz ani wymagać dodatkowego działania gracza, zanim pojawi się nowa kwestia. W Ren’Py show zastępuje obraz o tym samym znaczniku, podczas gdy hide służy zazwyczaj do usuwania postaci ze sceny; dokumentacja wyraźnie zaleca zastąpienie obrazu emocjonalnego za pomocą show, zamiast ukrywania i ponownego wyświetlania sprite’a w osobnych krokach. Zasady wyświetlania obrazów w Ren’Py

Sekcja 6

Sprawdź zmianę w rzeczywistej sekwencji dialogowej

Odtwórz scenę, zaczynając co najmniej jedną kwestię przed pierwszą zmianą i kończąc na kolejnej zmianie wyrazu twarzy. Upewnij się, że twarz zmienia się przy właściwej kwestii, później pozostaje taka, jak powinna, i wraca do neutralnego wyrazu tylko wtedy, gdy tak wskazuje skrypt. Jeśli nie masz pewności, przetestuj zarówno wersję z natychmiastową podmianą, jak i wersję z przejściem.

Obejrzyj sekwencję w docelowej rozdzielczości gry i z widocznym oknem dialogowym. Upewnij się, że twarz nie jest zasłonięta, przycięta ani zbyt mała, by można ją było odczytać. Jeśli zmiana wygląda niewłaściwie, diagnozuj problem w tej kolejności: sprawdź nazwę wyrazu twarzy w skrypcie, upewnij się, że istnieje pasujący obraz i że silnik go rozpoznaje, a następnie sprawdź wyrównanie i działanie przejścia. Taka kolejność pozwala odróżnić brakujący asset lub niezgodność nazw od problemu z umiejscowieniem grafiki.

Gotowe rozwiązanie powinno sprawiać, że każda zmiana będzie celowa: skrypt określa wyraz twarzy, pasujący sprite zachowuje położenie postaci, a krótkie przejście gry potwierdza, że zmiana jest czytelna w tempie dialogu.

Sekcja 7

Źródła

Warto przeczytać

Eksploruj dalej ten temat