Tilføj noget personlighed og baggrund til dine karakterer med et kraftfuldt dialogsystem.

I spiludvikling er engagerende gameplay og fængslende historiefortælling nøglen til at skabe mindeværdige oplevelser. Et stærkt værktøj, der kan hjælpe dig med at opnå dette, er et dialogsystem.

Med et velimplementeret dialogsystem kan karakterer kommunikere, dele information og interagere med spilleren, hvilket tilføjer dybde og fordybelse til dit spil.

Opsætning af dit Godot-spil

Start med at skabe grundlaget for dit spil. I dette eksempel skal du opsætte et simpelt 2D-miljø med en kontrollerbar karakter, der kan bevæge sig rundt ved hjælp af piletasterne.

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

Begynd med at skabe en ny scene til din spillerkarakter. Tilføj de nødvendige komponenter i denne scene. Lave en CharacterBody2D node for at repræsentere spillerfigurens krop. Vedhæft en CollisionShape2D med en rektangulær form for at definere spillerens kollisionsområde.

instagram viewer

Nu, tilføje karakterbevægelse og interaktion med platforme ved hjælp af GDScript. Erstat standardscriptet for CharacterBody2D-noden med følgende kode:

extends CharacterBody2D

var speed = 300

func _physics_process(delta):
var input_dir = Vector2.ZERO

if Input.is_action_pressed("ui_left"):
input_dir.x -= 1

if Input.is_action_pressed("ui_right"):
input_dir.x += 1

if Input.is_action_pressed("ui_up"):
input_dir.y -= 1

if Input.is_action_pressed("ui_down"):
input_dir.y += 1

velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)

Dette script giver din karakter mulighed for at bevæge sig til venstre, højre, op og ned baseret på piletasterne. Det flytte_og_kollidere funktion sikrer, at karakteren interagerer med platforme og reagerer på kollisioner.

Tilføjelse af dialogboksen

Nu kan du begynde at oprette dialogsystemet. Det første trin er at tilføje en dialogboks, der viser tekst, når din karakter interagerer med specifikke objekter eller NPC'er.

I din CharacterBody2D script, introducer et par flere variabler til at håndtere dialogboksen og dens indhold:

var dialogue_box: Label
var close_button: Button
var dialogue_lines: Array = ["Hello, adventurer!", "Welcome to our village."]

var current_line: int = 0
var line_timer: float = 0

Det dialogboks vil være ansvarlig for at vise dialogteksten, mens den close_button giver spillerne mulighed for at lukke dialogboksen, når det er nødvendigt.

I _parat funktion, opret og initialiser dialogboksen:

func _ready():
dialogue_box = Label.new()
dialogue_box.visible = false
add_child(dialogue_box)

Viser dialogtekst

Nu kan du fokusere på at vise teksten i dialogboksen. Du kan få teksten til at strække sig over mere end én linje og rulle i den, så du får en tekstlinje ad gangen.

Rediger din _fysikproces funktion til at håndtere visningen af ​​dialoglinjer:

if line_timer > 0:
line_timer -= delta
elif current_line < dialogue_lines.size():
show_next_dialogue_line()

Dette kodesegment kontrollerer, om linje_timer er større end 0. Hvis det er det, formindsker den timeren med deltaværdien. Hvis timeren ikke er aktiv, og der er flere dialoglinjer at vise, kalder den vis_næste_dialoglinje fungere.

Implementer vis_næste_dialoglinje fungerer som følger:

func show_next_dialogue_line():
dialogue_box.text = dialogue_lines[current_line]
current_line += 1

# Display each line for 3 seconds
line_timer = 3.0

Denne funktion opdaterer teksten i dialogboksen med den aktuelle dialoglinje og øger nuværende_linje indeks. Det linje_timer sikrer, at hver linje vises i en kort periode, før den går videre til næste linje.

Tilføjelse af en lukkeknap

Nu kan du give spillerne mulighed for at lukke dialogboksen og fortsætte med at spille spillet. Gør dette med en lukkeknap, der, når de trykker på den, skjuler dialogboksen og giver spilleren mulighed for at genoptage deres rejse.

Først skal du ændre _parat funktion til at oprette en lukkeknap og vedhæfte dens funktionalitet.

func _ready():
dialogue_box = Label.new()
dialogue_box.visible = false
add_child(dialogue_box)

close_button = Button.new()
close_button.text = "Close"
close_button.position = Vector2(50, 30)
close_button.visible = false
close_button.pressed.connect(_on_close_button_pressed)
add_child(close_button)

Denne kode opretter en forekomst af Knap klasse og tilpasser dens udseende og position. Den forbinder også trykket signal til _på_luk_knap_trykket fungere.

Implementer nu _på_luk_knap_trykket fungere. I denne funktion skal du indstille synligheden af ​​både dialogboksen og lukkeknappen til falsk. Dette skjuler effektivt dialoggrænsefladen for afspilleren.

Husk at nulstille nuværende_linje indeks til 0 for at sikre, at dialogen starter fra begyndelsen, næste gang spilleren indleder en samtale:

func _on_close_button_pressed():
dialogue_box.visible = false
close_button.visible = false
current_line = 0

Med disse ændringer vil spillere være i stand til at gå i dialog og lukke dialogboksen, når de er klar til at fortsætte med at udforske eller interagere med spilverdenen.

Bedste praksis for dit dialogsystem

Mens du fortsætter med at udvikle og forfine dit dialogsystem, med følgende bedste praksis i tankerne vil hjælpe med at sikre, at dit system forbedrer dit spils historiefortælling og spillerengagement til fulde grad.

Konsistens er nøglen

Oprethold en ensartet tone, skrivestil og ordforråd gennem hele dit dialogsystem. Konsistens hjælper spillere med at forbinde med karakterer og spilverdenen, hvilket skaber en problemfri og fordybende oplevelse.

Craft Character Stemmer

Hver karakter skal have en særskilt stemme og personlighed afspejlet i deres dialoger. Overvej deres baggrund, motivationer og følelser, når du skriver deres linjer.

Denne differentiering tilføjer dybde til dine karakterer og gør interaktioner mere mindeværdige. Du kan sagtens tilføje forskellige lyde for forskellige karakterer i Godot.

Meningsfulde valg

Design dialogvalg, der har meningsfulde konsekvenser. Valg, der påvirker spillets fortælling, relationer eller endda gameplay-mekanik, tilskynder spillere til at engagere sig i dialogsystemet og investere følelsesmæssigt i deres beslutninger.

Test og iteration

Test dine dialogsekvenser grundigt for at fange eventuelle tastefejl, grammatiske fejl eller tempoproblemer. Deltag i playtests for at indsamle feedback fra spillere og foretage de nødvendige justeringer for at sikre, at dialogsystemet flyder jævnt og forbedrer den overordnede spiloplevelse.

UI-konsistens

Sikre at design og præsentation af dialogsystemet matcher det overordnede brugergrænseflade (UI) design af dit spil. Konsekvente UI-elementer, skrifttyper og farver skaber en sammenhængende visuel oplevelse, der bidrager til spillets fordybelse.

Ved at følge disse bedste praksisser kan du skabe et dialogsystem, der ikke kun forbedrer dit spils fortælling, men også skaber en mindeværdig og fordybende oplevelse for spillerne.

Forøg dine Godot-spil med dialogsystemer

At inkorporere et dialogsystem i dine Godot-spil kan forbedre spillerengagementet og revolutionere din historiefortælling. Ved at give karakterer mulighed for at kommunikere, udtrykke følelser og reagere på spillerbeslutninger, skaber du en mere fordybende og interaktiv spilverden.

Med Godots brugervenlige miljø og kraften i GDScript har du værktøjerne til at lave overbevisende dialogsystemer, der trækker spillere ind i din fortælling og forbedrer deres overordnede spil erfaring.