Legg til litt personlighet og bakgrunn til karakterene dine med et kraftfullt dialogsystem.

I spillutvikling er engasjerende spilling og fengslende historiefortelling nøkkelen til å skape minneverdige opplevelser. Et kraftig verktøy som kan hjelpe deg å oppnå dette er et dialogsystem.

Med et godt implementert dialogsystem kan karakterer kommunisere, dele informasjon og samhandle med spilleren, og legge til dybde og innlevelse i spillet ditt.

Sette opp ditt Godot-spill

Start med å lage grunnlaget for spillet ditt. For dette eksemplet, sett opp et enkelt 2D-miljø med en kontrollerbar karakter som kan bevege seg rundt ved hjelp av piltastene.

Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.

Begynn med å lage en ny scene for spillerkarakteren din. Inne i denne scenen legger du til de nødvendige komponentene. Lage en CharacterBody2D node for å representere spillerkarakterens kropp. Legg ved en CollisionShape2D med en rektangulær form for å definere spillerens kollisjonsområde.

instagram viewer

Nå, legge til karakterbevegelse og interaksjon med plattformer ved hjelp av GDScript. Erstatt standardskriptet til 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 skriptet lar karakteren din bevege seg til venstre, høyre, opp og ned basert på piltastene. De flytte_og_kollidere funksjon sikrer at karakteren samhandler med plattformer og reagerer på kollisjoner.

Legger til dialogboksen

Nå kan du begynne å lage dialogsystemet. Det første trinnet er å legge til en dialogboks som viser tekst når karakteren din samhandler med spesifikke objekter eller NPC-er.

I din CharacterBody2D skript, introduser noen flere variabler for å håndtere dialogboksen og dens innhold:

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

De dialogboks vil være ansvarlig for å vise dialogteksten, mens den close_button vil tillate spillere å lukke dialogboksen ved behov.

I _klar funksjon, opprette og initialisere dialogboksen:

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

Viser dialogtekst

Nå kan du fokusere på å vise teksten i dialogboksen. Du kan få teksten til å spenne over mer enn én linje og bla i den, og avsløre én tekstlinje om gangen.

Endre din _fysikk_prosess funksjon for å håndtere visning av dialoglinjer:

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

Dette kodesegmentet sjekker om linje_timer er større enn 0. Hvis det er det, reduserer den timeren med deltaverdien. Hvis timeren ikke er aktiv, og det er flere dialoglinjer å vise, kaller den opp vis_neste_dialoglinje funksjon.

Implementer vis_neste_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 funksjonen oppdaterer teksten i dialogboksen med gjeldende dialoglinje og øker gjeldende_linje indeks. De linje_timer sikrer at hver linje vises i en kort periode før du går videre til neste linje.

Legger til en lukkeknapp

Nå kan du gi spillerne muligheten til å lukke dialogboksen og fortsette å spille spillet. Gjør dette med en lukkeknapp som, når de trykker på den, skjuler dialogboksen og lar spilleren fortsette reisen.

Først må du endre _klar funksjon for å lage en lukkeknapp og legge til funksjonaliteten.

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 koden oppretter en forekomst av Knapp klasse og tilpasser utseendet og plasseringen. Den kobler også sammen trykket signal til _på_lukke_knapp_trykket funksjon.

Implementer nå _på_lukke_knapp_trykket funksjon. I denne funksjonen setter du synligheten til både dialogboksen og lukkeknappen til falsk. Dette skjuler effektivt dialoggrensesnittet for spilleren.

Husk å tilbakestille gjeldende_linje indeks til 0 for å sikre at dialogen starter fra begynnelsen neste gang spilleren starter en samtale:

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

Med disse endringene vil spillere kunne gå i dialog og lukke dialogboksen når de er klare til å fortsette å utforske eller samhandle med spillverdenen.

Beste praksis for ditt dialogsystem

Mens du fortsetter å utvikle og avgrense dialogsystemet ditt, og ha følgende beste praksis i tankene vil bidra til å sikre at systemet ditt forbedrer spillets historiefortelling og spillerengasjement til det fulle utstrekning.

Konsistens er nøkkelen

Oppretthold en konsekvent tone, skrivestil og vokabular gjennom hele dialogsystemet. Konsistens hjelper spillere med å få kontakt med karakterer og spillverdenen, og skaper en sømløs og oppslukende opplevelse.

Lag karakterstemmer

Hver karakter bør ha en distinkt stemme og personlighet som gjenspeiles i deres dialoger. Vurder deres bakgrunn, motivasjon og følelser når du skriver replikkene.

Denne differensieringen gir dybde til karakterene dine og gjør interaksjoner mer minneverdige. Du kan enkelt legge til forskjellige lyder for forskjellige karakterer i Godot.

Meningsfulle valg

Utforme dialogvalg som har meningsfulle konsekvenser. Valg som påvirker spillets narrativ, relasjoner eller til og med spillmekanikk oppmuntrer spillere til å engasjere seg i dialogsystemet og investere følelsesmessig i beslutningene sine.

Testing og iterasjon

Test dialogsekvensene dine grundig for å fange eventuelle skrivefeil, grammatiske feil eller tempoproblemer. Delta i playtesting for å samle tilbakemeldinger fra spillere og foreta nødvendige justeringer for å sikre at dialogsystemet flyter jevnt og forbedrer den generelle spillopplevelsen.

UI-konsistens

Sørge for at utformingen og presentasjonen av dialogsystemet stemmer overens med helheten brukergrensesnitt (UI) design av spillet ditt. Konsekvente UI-elementer, fonter og farger skaper en sammenhengende visuell opplevelse som bidrar til spillets fordypning.

Ved å følge disse beste fremgangsmåtene kan du lage et dialogsystem som ikke bare forbedrer spillets narrativ, men også skaper en minneverdig og oppslukende opplevelse for spillere.

Oppgrader Godot-spillene dine med dialogsystemer

Å inkludere et dialogsystem i Godot-spillene dine kan forbedre spillerengasjementet og revolusjonere historiefortellingen din. Ved å gjøre det mulig for karakterer å kommunisere, uttrykke følelser og reagere på spillerbeslutninger, skaper du en mer oppslukende og interaktiv spillverden.

Med Godots brukervennlige miljø og kraften til GDScript har du verktøyene til å lage overbevisende dialogsystemer som trekker spillere inn i fortellingen din og forbedrer deres generelle spilling erfaring.