Oprettelse af et dialogsystem i Godot med GDScript

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. Opret en CharacterBody2D-node til at repræsentere spillerkarakterens krop. Vedhæft en CollisionShape2D med en rektangulær form for at definere spillerens kollisionsområde.

Tilføj nu 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. Move_and_collide-funktionen sikrer, at karakteren interagerer med platforme og reagerer på kollisioner.

  8 bedste statiske webstedshosting til erhvervsmæssig og personlig brug

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 dit CharacterBody2D-script skal du introducere 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

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

I _ready-funktionen skal du oprette og initialisere 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 _physics_process-funktion for 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 line_timeren er større end 0. Hvis den er, formindsker den timeren med deltaværdien. Hvis timeren ikke er aktiv, og der er flere dialoglinjer at vise, kalder den funktionen show_next_dialogue_line.

Implementer funktionen show_next_dialogue_line som følger:

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

   
    line_timer = 3.0

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

  Sådan deaktiverer du AT&T-meddelelser backup og synkronisering

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 _ready-funktionen for 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 Button-klassen og tilpasser dens udseende og placering. Den forbinder også det trykte signal til funktionen _on_close_button_pressed.

Implementer nu funktionen _on_close_button_pressed. 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 current_line-indekset 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, vil det at holde følgende bedste praksis i tankerne hjælpe med at sikre, at dit system forbedrer dit spils historiefortælling og spillerengagement i det fulde omfang.

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.

  Sådan bytter du værdier mellem celler, rækker eller kolonner i MS Excel

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 nemt tilføje forskellige lyde til 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

Sørg for, at designet og præsentationen af ​​dialogsystemet matcher dit spils overordnede brugergrænsefladedesign (UI). 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 skabe overbevisende dialogsystemer, der trækker spillere ind i din fortælling og forbedrer deres overordnede spiloplevelse.