Realistiske karakterer interagerer, typisk ved at tale med hinanden. Sørg for at præsentere din dialog på en tilgængelig og komplementær måde.

Hvis dit spil har karakterer, vil du sandsynligvis have dem til at tale med hinanden. Et dialogsystem giver interaktive samtaler, historieforløb og karakterudvikling. Python Arcade-biblioteket gør det nemt at integrere et dialogsystem i din eksisterende kodebase.

Med et dialogsystem kan du skabe samtaler mellem spilleren og ikke-spillerfigurer (NPC'er). Spilleren kan vælge svar eller træffe beslutninger, der påvirker spillets fortælling eller resultat.

Dette system giver dig mulighed for at skabe overbevisende historier og skabe dynamiske interaktioner, hvilket giver en mere fordybende spiloplevelse.

Opret et simpelt spil

For at begynde skal du oprette et simpelt spil ved hjælp af Arcade-biblioteket. Dette vil tjene som grundlag for implementering af dialogsystemet.

Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.

instagram viewer

Opret en ny fil med navnet simple-game.py og definere en Spil klasse, der arver fra arkade. Vindue. Indstil skærmdimensionerne, initialiser afspilleren og platformens positioner, og implementer den grundlæggende tegnefunktionalitet. Det spilleren kan bevæge sig til venstre og højre ved hjælp af piletasterne.

Her er outputtet:

Tilføjelse af en dialogboks

Nu hvor du har en grundlæggende spilstruktur, skal du tilføje en dialogboks, der vises, når spilleren kolliderer med en fjende. Du kan oprette en dialogboks ved hjælp af simple former og vise den på skærmen.

Tilføj en dialog_aktiv flag til Spil klasse, som angiver om dialogboksen skal vises. I den on_update metode, kontrollere for fjendens kollision, og hvis det opdages, indstil dialog_aktiv til Rigtigt.

I den on_draw metode, ring til tegne_dialogboks metode, hvis dialogen er aktiv. Det tegne_dialogboks metoden tegner et rektangel som baggrund for dialogboksen og viser en tekstmeddelelse.

Opret en ny fil med navnet dialog-box.py og tilføj koden med nedenstående opdateringer:

# Inde i spilklassen

klasseSpil(arkade. Vindue):
def__i det__(selv):
# ...

self.dialogue_active = Falsk

defon_update(selv, delta_tid):
hvis self.check_enemy_collision():
self.dialogue_active = Rigtigt

defon_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)
combined_radius = player_radius + 25

hvis afstand_x < kombineret_radius og afstand_y < kombineret_radius:
Vend tilbageRigtigt
andet:
Vend tilbageFalsk

deftegne_dialogboks(selv):
tekst = "Hej spiller! Hvordan har du det?"

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, hvid)

arcade.draw_text (tekst, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, sort, font_size=16,
anker_x="centrum", anker_y="centrum")

Nedenfor er output:

Viser dialogtekst

Nu kan du forbedre dit dialogsystem ved at vise dynamiske tekstbeskeder. Opret en liste over dialogstrenge og gentag dem for at simulere en samtale. Hver gang dialogboksen vises, vil den vise en ny besked.

# Inde i spilklassen

klasseSpil(arkade. Vindue):
def__i det__(selv):
# ...

self.dialogue_active = Falsk
self.dialogue_messages = [
"Hej spiller! Hvordan har du det?",
"Dejligt vejr i dag, ikke?",
"Pas på fjenderne, der lurer forude!"
]
self.dialogue_index = 0

deftegne_dialogboks(selv):

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, hvid)

arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, sort, font_size=16,
anker_x="centrum", anker_y="centrum")

Introducer tre nye variable: dialog_beskeder, dialog_indeks, og dialog_aktiv. Listen dialog_messages indeholder de tekstbeskeder, som dialogboksen vil vise. Dialogue_index holder styr på den aktuelle besked, der skal vises. Hver gang dialogboksen vises, kan du øge dialogue_index for at vise den næste besked.

Tilføjelse af en knap

For at gøre dialogsystemet mere interaktivt, tilføje en knap for at ændre dialogteksten, når den trykkes af afspilleren. Opret en ny fil med navnet multi-text.py og tilføj koden med nedenstående opdateringer:

# Inde i spilklassen

klasseSpil(arkade. Vindue):
def__i det__(selv):
# ...

self.dialogue_active = Falsk

self.dialogue_messages = [
"Hej spiller! Hvordan har du det?",
"Dejligt vejr i dag, ikke?",
"Pas på fjenderne, der lurer forude!"
]

self.dialogue_index = 0

defon_mouse_press(selv, x, y, knap, modifikatorer):
index = (self.dialogue_index + 1) % len (self.dialogue_messages)

hvis self.dialogue_active:
hvis knap == arkade. MOUSE_BUTTON_LEFT:
self.dialogue_index = indeks

deftegne_dialogboks(selv):
# ...

arcade.draw_text("Næste", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
sort, font_size=16, anker_x="centrum", anker_y="centrum")

Tilføj on_mouse_press metode til Spil klasse. Når dialogen er aktiv, og du trykker på venstre museknap, øger denne metode dialog_indeks for at vise den næste besked i dialog_beskeder liste. Det % len (self.dialogue_messages) sikrer, at indekset går rundt til begyndelsen af ​​listen, når det når slutningen.

Inklusiv yderligere funktioner

For at forbedre dialogsystemet yderligere, kan du overveje at tilføje følgende ekstra funktioner:

Flere valg

I stedet for en enkelt besked kan du angive flere valgmuligheder for afspilleren at vælge imellem. Dette giver spilleren mulighed for at påvirke resultatet af samtalen eller træffe beslutninger, der påvirker spillets progression.

For at implementere dette kan du ændre tegne_dialogboks metode til at vise en liste over valgmuligheder og håndtere spillerens valg i overensstemmelse hermed.

Karakterportrætter

For at tilføje visuel flair til dit dialogsystem, kan du inkorporere karakterportrætter ved siden af ​​teksten. Hver karakter kan have et tilsvarende billede eller sprite, der repræsenterer dem under samtalen. Visning af karakterportrætter kan hjælpe spillere med at identificere højttaleren og tilføje dybde til fortælleoplevelsen.

Tekstanimation

Du kan animere teksten for at gøre den mere visuelt tiltalende. For eksempel kan du få teksten til at vises gradvist, et tegn ad gangen, for at simulere skrivning. Dette skaber en følelse af forventning og kan gøre dialogen mere engagerende for spilleren.

Lydeffekter

Tilføjelse af lydeffekter til dit dialogsystem kan forbedre den overordnede atmosfære i spillet. For eksempel kan du afspille lydeffekter, når dialogboksen vises, eller når afspilleren vælger en dialogindstilling. Disse lydsignaler kan få samtalen til at føles mere fordybende og virkningsfuld.

Bedste praksis for dialogsystemet

Når du implementerer et dialogsystem, skal du huske på følgende bedste praksis:

Ryd brugergrænseflade

Sørg for, at dialogboksen og teksten er læselige og korrekt placeret på skærmen. Brug passende skrifttyper, farver og størrelser for at gøre teksten let at læse.

Konsistent karakterstemme

Bevar ensartethed i den måde, karaktererne taler og den tone, de bruger gennem hele dialogen. Dette hjælper med at skabe troværdige og engagerende samtaler.

Relevans for gameplay

Sørg for, at dialogen bidrager meningsfuldt til spillets fortælling eller giver relevant information til spilleren. Undgå overdrevne eller irrelevante samtaler, der kan forstyrre strømmen af ​​gameplay.

Test og iteration

Spiltest dit dialogsystem grundigt for at identificere eventuelle problemer eller uoverensstemmelser. Gentag din dialog baseret på spillerfeedback for at forbedre den overordnede kvalitet og effekt af samtalerne.

Gør spil sjovere med dialogsystem

Tilføjelse af et dialogsystem til dine spil ved hjælp af Arcade-biblioteket i Python kan i høj grad forbedre spillerens oplevelse. Det muliggør interaktive samtaler, historiefortælling og karakterudvikling, hvilket gør dine spil mere medrivende, engagerende og sjove at spille.