Metlivi-bloggen

Så ändrar du en karaktärs ansiktsuttryck mellan repliker i ett spel i retrostil

För att ändra en karaktärs ansiktsuttryck mellan repliker förbereder du en matchande sprite för varje uttryck och byter sedan ut karaktärens visade bild precis före repliken där uttrycket används. Håll sprites position och övergripande silhuett konsekvent så att ansiktsändringen syns tydligt utan att störa scenen. I Ren’Py är den enklaste metoden att ge varje uttryck samma bildtagg och använda show igen med ett nytt uttrycksattribut. Samma sekvens fungerar i princip även i andra motorer, även om kommandona skiljer sig åt.

15 oktober 20266 min läsningAv Metlivi Editorial Team
Avsnitt 1

Bestäm vad som ska utlösa ändringen

Börja med dialogmanuset, inte spritearket. Markera bara de repliker där karaktärens ansiktsuttryck ändras på ett sätt som spelaren ska lägga märke till: en ny reaktion, en förändring i ton eller en återgång till neutralt uttryck. Om ansiktet ändras på varje rad förmedlar uttrycket mindre information och arbetsbördan för grafiken växer snabbt.

För varje markerad rad antecknar du det avsedda uttrycket och spritebilden som ska visa det. En liten uppsättning som neutralt, glatt, oroligt och förvånat kan täcka många scener. Lägg bara till varianter när en viss scen behöver dem. Det här är ett redaktionellt val, inte en regel för spelmotorn: rätt uppsättning beror på spelets grafik och dialog.

Avsnitt 2

Förbered uttryckssprites som går att byta smidigt

Använd samma bildutsnitt, skala och förankringspunkt för varje uttryck. Om varje bild är en komplett sprite justerar du ögon, huvud och kropp mellan filerna så att karaktären inte verkar hoppa till när bilden byts. Behåll en genomskinlig bakgrund när spriten ska ligga ovanpå en scen.

För pixelgrafik granskar du bilderna i spelets faktiska visningsskala. En förskjutning på en pixel kan synas tydligt när sprites byts, och omskalning kan göra pixelrutnätet suddigt eller förvrängt. Exportera helst varje uttryck med samma mått och importera det med konsekventa inställningar för filtrering och skalning. Det här är praktiska kontroller i produktionsarbetet; exakta inställningar beror på spelmotorn och projektet.

Välj förutsägbara fil- eller bildnamn, till exempel mira neutral och mira worried. I Ren’Py består bildnamn av en tagg följd av valfria attribut. Taggen identifierar karaktärsbilden som en ny show kan ersätta. Ren’Pys bilddokumentation beskriver namngivningen och hur ersättningen fungerar.

Avsnitt 3

Ändra uttryck i Ren’Py

Deklarera talaren med en bildtagg och använd sedan uttrycksattribut på dialograderna. Till exempel:

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

Här är mira bildtaggen och neutral eller worried attributet. Den oroliga repliken uppdaterar den visade karaktärsbilden; nästa rad behåller det uttrycket eftersom inget nytt attribut anges. Lägg till m neutral "..." på den sista raden om manuset uttryckligen ska återställa henne till ett neutralt uttryck. Ren’Pys dialogdokumentation förklarar att en karaktär som definierats med en bildtagg kan tilldelas bildattribut i say-satsen, och att dessa attribut fungerar som ett motsvarande show-kommando när bilden redan visas. Dialog och bildattribut i Ren’Py

Om du inte vill visa karaktärens fullständiga sprite på skärmen kan du använda samma idé med ett porträttelement i dialoggränssnittet. Spelmotorn behöver fortfarande kunna koppla den aktuella talaren och uttrycket till en bild; ett porträttgränssnitt kan använda en annan namnkonvention eller datastruktur. Läs dokumentationen för det valda ramverket innan du använder Ren’Py-syntax i en annan spelmotor.

Avsnitt 4

Välj ett direkt byte eller en övergång

Ett direkt byte passar en skarp presentation i retrostil och knyter uttrycksändringen tätt till repliken. En övergång kan göra bytet mjukare, men använd den bara om den passar spelets visuella stil. En snabb toning kan få ändringen att kännas mindre abrupt; en lång sådan kan fördröja ögonblicket då det nya uttrycket går att läsa.

Ren’Py stöder övergångar som dissolve när bilder ändras. Till exempel lägger show mira worried with dissolve in en toning när den visade bilden byts. Den dokumenterade standardinställningen dissolve tar en halv sekund, vilket kan kännas långsamt vid snabb dialog. Testa tempot i sitt sammanhang och välj vid behov en kortare anpassad varaktighet. Ren’Pys övergångsdokumentation

För pixelgrafik jämför du övergången med ett direkt byte i spelets avsedda upplösning. En toning blandar gamla och nya pixlar medan ändringen pågår, vilket kan se mjukt ut jämfört med en avsiktligt stegvis eller omedelbar ändring. Det är ett stilval som bör kontrolleras i en scen som körs, inte en effekt som ska läggas till automatiskt.

Avsnitt 5

Håll spriten stilla medan ansiktet ändras

Innan du lägger till mer grafik kontrollerar du om uttrycksbytet ändrar något utöver den avsedda detaljen. Jämför intilliggande bildrutor eller skärmbilder med avseende på spritens position, skala och silhuett. Om karaktären verkar rycka till justerar du källbilderna eller korrigerar deras gemensamma pivotpunkt eller origo i spelmotorn.

Kontrollera även lagerordning och dialogens tidsförlopp. Ett spritebyte ska inte råka rensa bakgrunden, flytta karaktären bakom en annan bild eller kräva en extra spelartryckning innan nästa replik visas. I Ren’Py ersätter show en bild med samma tagg, medan hide oftast används när en karaktär lämnar scenen. Dokumentationen rekommenderar särskilt att ersätta ett känslouttryck med show i stället för att dölja och visa spriten i separata steg. Regler för bildvisning i Ren’Py

Avsnitt 6

Kontrollera ändringen i den faktiska dialogsekvensen

Spela scenen från minst en replik före den första ändringen fram till nästa uttrycksändring. Kontrollera att ansiktet uppdateras vid rätt replik, behåller uttrycket som avsett efteråt och återgår till neutralt uttryck bara när manuset anger det. Testa både versionen med direkt byte och den med övergång om du är osäker.

Granska sekvensen i spelets målupplösning och med dialogrutan synlig. Se till att ansiktet inte skyms, beskärs eller är för litet för att gå att läsa. Om ändringen ser fel ut felsöker du i den här ordningen: kontrollera uttrycksnamnet i manuset, bekräfta att motsvarande bild finns och känns igen av spelmotorn och kontrollera sedan justering och övergångens beteende. På så sätt kan du skilja en saknad bild eller namnmiss från ett problem med bildens placering.

Den färdiga lösningen ska göra varje ändring avsiktlig: manuset anger uttrycket, den matchande spriten behåller karaktärens placering och en kort genomspelning bekräftar att bytet fungerar i dialogens tempo.

Avsnitt 7

Källor

Relaterad läsning

Fortsätt utforska detta ämne