Realistiske karakterer samhandler, vanligvis ved å snakke med hverandre. Sørg for å presentere dialogen din på en tilgjengelig og utfyllende måte.
Hvis spillet ditt har karakterer, vil du sannsynligvis at de skal snakke med hverandre. Et dialogsystem gir interaktive samtaler, historieprogresjon og karakterutvikling. Python Arcade-biblioteket gjør det enkelt å integrere et dialogsystem i din eksisterende kodebase.
Med et dialogsystem kan du opprette samtaler mellom spilleren og ikke-spillerfigurene (NPCs). Spilleren kan velge svar eller ta avgjørelser som påvirker spillets narrativ eller utfall.
Dette systemet lar deg lage overbevisende historier og skape dynamiske interaksjoner, noe som gir en mer oppslukende spillopplevelse.
Lag et enkelt spill
For å begynne, lag et enkelt spill ved å bruke Arcade-biblioteket. Dette vil tjene som grunnlag for implementering av dialogsystemet.
Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.
Opprett en ny fil med navnet simple-game.py og definere en Spill klasse som arver fra arkade. Vindu. Still inn skjermdimensjonene, initialiser spiller- og plattformposisjonene, og implementer den grunnleggende tegnefunksjonaliteten. De spilleren kan bevege seg til venstre og høyre ved hjelp av piltastene.
Her er utgangen:
Legge til en dialogboks
Nå som du har en grunnleggende spillstruktur, legg til en dialogboks som vises når spilleren kolliderer med en fiende. Du kan lage en dialogboks ved hjelp av enkle former og vise den på skjermen.
Legg til en dialog_aktiv flagg til Spill klasse, som indikerer om dialogboksen skal vises. I on_update metode, se etter fiendens kollisjon, og hvis det oppdages, still inn dialog_aktiv til ekte.
I on_draw metoden, ring draw_dialogue_box metode hvis dialogen er aktiv. De draw_dialogue_box metoden tegner et rektangel som bakgrunn for dialogboksen og viser en tekstmelding.
Opprett en ny fil med navnet dialog-box.py og legg til koden med oppdateringene nedenfor:
# Inne i spillklassen
klasseSpill(arkade. Vindu):
def__i det__(selv):
# ...self.dialogue_active = Falsk
defon_update(selv, delta_tid):
hvis self.check_enemy_collision():
self.dialogue_active = ektedefon_draw(selv):
# ...hvis self.dialogue_active:
self.draw_dialogue_box()defcheck_enmy_collision(selv):
player_radius = 25
distance_x = abs (self.player_x - self.platform_x)
distance_y = abs (self.player_y - self.platform_y)
kombinert_radius = spillerradius + 25hvis avstand_x < kombinert_radius og avstand_y < kombinert_radius:
komme tilbakeekte
ellers:
komme tilbakeFalsk
defdraw_dialogue_box(selv):
tekst = "Hei, spiller! Hvordan har du det?"
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, hvit)
arcade.draw_text (tekst, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, svart, font_size=16,
anker_x="senter", anker_y="senter")
Nedenfor er utgangen:
Viser dialogtekst
Nå kan du forbedre dialogsystemet ditt ved å vise dynamiske tekstmeldinger. Lag en liste over dialogstrenger og gjenta dem for å simulere en samtale. Hver gang dialogboksen vises, vil den vise en ny melding.
# Inne i spillklassen
klasseSpill(arkade. Vindu):
def__i det__(selv):
# ...self.dialogue_active = Falsk
self.dialogue_messages = [
"Hei, spiller! Hvordan har du det?",
— Fint vær i dag, ikke sant?,
"Vokt deg for fiendene som lurer foran!"
]
self.dialogue_index = 0
defdraw_dialogue_box(selv):
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, hvit)
arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, svart, font_size=16,
anker_x="senter", anker_y="senter")
Introduser tre nye variabler: dialog_meldinger, dialog_indeks, og dialog_aktiv. Listen dialogue_messages inneholder tekstmeldingene som dialogboksen vil vise. Dialogue_index holder styr på gjeldende melding som skal vises. Hver gang dialogboksen vises, kan du øke dialogue_index for å vise neste melding.
Legge til en knapp
For å gjøre dialogsystemet mer interaktivt, legg til en knapp for å endre dialogteksten når den trykkes av spilleren. Opprett en ny fil med navnet multi-text.py og legg til koden med oppdateringene nedenfor:
# Inne i spillklassen
klasseSpill(arkade. Vindu):
def__i det__(selv):
# ...self.dialogue_active = Falsk
self.dialogue_messages = [
"Hei, spiller! Hvordan har du det?",
— Fint vær i dag, ikke sant?,
"Vokt deg for fiendene som lurer foran!"
]self.dialogue_index = 0
defon_mouse_press(selv, x, y, knapp, modifikatorer):
indeks = (self.dialogue_index + 1) % len (self.dialogue_messages)hvis self.dialogue_active:
hvis knapp == arkade. MOUSE_BUTTON_LEFT:
self.dialogue_index = indeksdefdraw_dialogue_box(selv):
# ...
arcade.draw_text("Neste", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
svart, font_size=16, anker_x="senter", anker_y="senter")
Legg til on_mouse_press metoden til Spill klasse. Når dialogen er aktiv og du trykker på venstre museknapp, øker denne metoden dialog_indeks for å vise neste melding i dialog_meldinger liste. De % len (self.dialogue_messages) sikrer at indeksen går rundt til begynnelsen av listen når den når slutten.
Inkludert tilleggsfunksjoner
For å forbedre dialogsystemet ytterligere, kan du vurdere å legge til følgende tilleggsfunksjoner:
Flere valg
I stedet for en enkelt melding kan du gi spilleren flere valg å velge mellom. Dette lar spilleren påvirke resultatet av samtalen eller ta avgjørelser som påvirker spillets progresjon.
For å implementere dette kan du endre draw_dialogue_box metode for å vise en liste over valg og håndtere spillerens valg deretter.
Karakterportretter
For å legge til et visuelt preg til dialogsystemet ditt, kan du inkludere karakterportretter ved siden av teksten. Hver karakter kan ha et tilsvarende bilde eller sprite som representerer dem under samtalen. Å vise karakterportretter kan hjelpe spillere med å identifisere høyttaleren og legge til dybde til fortelleropplevelsen.
Tekstanimasjon
Du kan animere teksten for å gjøre den mer visuelt tiltalende. Du kan for eksempel få teksten til å vises gradvis, ett tegn om gangen, for å simulere skriving. Dette skaper en følelse av forventning og kan gjøre dialogen mer engasjerende for spilleren.
Lydeffekter
Legge til lydeffekter til dialogsystemet ditt kan forbedre den generelle atmosfæren i spillet. Du kan for eksempel spille av lydeffekter når dialogboksen vises eller når spilleren velger et dialogalternativ. Disse lydsignalene kan få samtalen til å føles mer oppslukende og virkningsfull.
Beste praksis for dialogsystemet
Når du implementerer et dialogsystem, må du huske på følgende beste praksis:
Tøm brukergrensesnitt
Sørg for at dialogboksen og teksten er leselig og riktig plassert på skjermen. Bruk passende fonter, farger og størrelser for å gjøre teksten lett å lese.
Konsistent karakterstemme
Oppretthold konsistens i måten karakterer snakker og tonen de bruker gjennom hele dialogen. Dette bidrar til å skape troverdige og engasjerende samtaler.
Relevans for spilling
Sørg for at dialogen bidrar meningsfullt til spillets narrativ eller gir relevant informasjon til spilleren. Unngå overdrevne eller irrelevante samtaler som kan forstyrre flyten i spillingen.
Testing og iterasjon
Spilltest dialogsystemet ditt grundig for å identifisere eventuelle problemer eller inkonsekvenser. Gjenta dialogen din basert på tilbakemeldinger fra spillere for å forbedre den generelle kvaliteten og effekten av samtalene.
Gjør spill morsommere med dialogsystem
Å legge til et dialogsystem til spillene dine ved å bruke Arcade-biblioteket i Python kan forbedre spillerens opplevelse betraktelig. Det muliggjør interaktive samtaler, historiefortelling og karakterutvikling, noe som gjør spillene dine mer oppslukende, engasjerende og morsomme å spille.