Dodajte malo osobnosti i pozadine svojim likovima pomoću prodornog sustava dijaloga.

U razvoju igara, zanimljivo igranje i zadivljujuće pripovijedanje ključni su za stvaranje nezaboravnih iskustava. Jedan moćan alat koji vam može pomoći da to postignete je sustav dijaloga.

S dobro implementiranim sustavom dijaloga, likovi mogu komunicirati, dijeliti informacije i komunicirati s igračem, dodajući dubinu i uranjanje vašoj igri.

Postavljanje igre Godot

Započnite stvaranjem temelja svoje igre. Za ovaj primjer, postavite jednostavno 2D okruženje s likom kojim se može upravljati i koji se može kretati pomoću tipki sa strelicama.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Započnite stvaranjem nove scene za svog lika igrača. Unutar ove scene dodajte potrebne komponente. Stvoriti CharacterBody2D čvor koji predstavlja tijelo igrača. Priložite a CollisionShape2D pravokutnog oblika za definiranje igračevog područja sudara.

Sada, dodajte kretanje lika

instagram viewer
i interakcija s platformama koje koriste GDScript. Zamijenite zadanu skriptu čvora CharacterBody2D sljedećim kodom:

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)

Ova skripta omogućuje vašem liku pomicanje lijevo, desno, gore i dolje na temelju unosa tipkama sa strelicama. The kretati_i_sudarati funkcija osigurava da lik komunicira s platformama i reagira na sudare.

Dodavanje okvira za dijalog

Sada možete početi stvarati sustav dijaloga. Prvi korak je dodavanje okvira za dijalog koji će prikazati tekst kada vaš lik bude u interakciji s određenim objektima ili NPC-ima.

U vašem CharacterBody2D skriptu, uvedite još nekoliko varijabli za rukovanje dijaloškim okvirom i njegovim sadržajem:

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

The dijaloški okvir bit će odgovoran za prikaz teksta dijaloga, dok će gumb za zatvaranje omogućit će igračima da zatvore dijaloški okvir kada je potrebno.

u _spreman funkciju, kreirajte i inicijalizirajte dijaloški okvir:

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

Prikaz teksta dijaloga

Sada se možete usredotočiti na prikaz teksta unutar dijaloškog okvira. Možete postaviti da tekst obuhvaća više od jednog retka i pomicati ga, otkrivajući jedan po jedan redak teksta.

Izmijenite svoje _fizički_proces funkcija za rukovanje prikazom redaka dijaloga:

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

Ovaj segment koda provjerava je li line_timer je veći od 0. Ako jest, timer se smanjuje za delta vrijednost. Ako mjerač vremena nije aktivan, a postoji više dijaloških redaka za prikaz, poziva se prikaži_sljedeću_retku_dijaloga funkcija.

Provedba prikaži_sljedeću_retku_dijaloga funkcionirati na sljedeći način:

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

Ova funkcija ažurira tekst unutar okvira za dijalog s trenutnim retkom dijaloga i povećava trenutna_linija indeks. The line_timer osigurava da se svaki red prikazuje kratko vrijeme prije nego što prijeđete na sljedeći redak.

Dodavanje gumba za zatvaranje

Sada igračima možete dati mogućnost da zatvore dijaloški okvir i nastave igrati igru. Učinite to pomoću gumba za zatvaranje koji, kada ga pritisne, skriva dijaloški okvir i omogućuje igraču da nastavi svoje putovanje.

Prvo, izmijenite _spreman funkciju za stvaranje gumba za zatvaranje i pridruživanje njegove funkcije.

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)

Ovaj kod stvara instancu Dugme klase i prilagođava svoj izgled i položaj. Također povezuje pritisnut signal za _na_gumb_za_zatvaranje_pritisnut funkcija.

Sada implementirajte _na_gumb_za_zatvaranje_pritisnut funkcija. U ovoj funkciji postavite vidljivost dijaloškog okvira i gumba za zatvaranje na lažno. Ovo učinkovito skriva dijaloško sučelje od igrača.

Ne zaboravite resetirati trenutna_linija indeksirajte na 0 kako biste osigurali da dijalog započne ispočetka sljedeći put kada igrač započne razgovor:

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

S ovim promjenama, igrači će moći sudjelovati u dijalogu i zatvoriti dijaloški okvir kada budu spremni nastaviti istraživati ​​ili komunicirati sa svijetom igre.

Najbolji primjeri iz prakse za vaš sustav dijaloga

Dok nastavljate razvijati i usavršavati svoj sustav dijaloga, imajte na umu sljedeće najbolje prakse pomoći će osigurati da vaš sustav u potpunosti poboljša pripovijedanje vaše igre i angažman igrača opseg.

Dosljednost je ključna

Održavajte dosljedan ton, stil pisanja i vokabular kroz svoj sustav dijaloga. Dosljednost pomaže igračima da se povežu s likovima i svijetom igre, stvarajući besprijekorno i impresivno iskustvo.

Craft Character Voices

Svaki lik trebao bi imati poseban glas i osobnost koja se odražava u njihovim dijalozima. Uzmite u obzir njihovu pozadinu, motivaciju i emocije kada pišete njihove retke.

Ovo razlikovanje dodaje dubinu vašim likovima i čini interakciju nezaboravnijom. Možete lako dodajte različite zvukove za različite likove u Godou.

Smisleni izbori

Osmislite izbore dijaloga koji imaju značajne posljedice. Izbori koji utječu na narativ igre, odnose ili čak mehaniku igranja potiču igrače da se uključe u sustav dijaloga i emocionalno ulažu u svoje odluke.

Testiranje i ponavljanje

Temeljito testirajte svoje dijaloške sekvence kako biste uhvatili greške pri upisu, gramatičke pogreške ili probleme s tempom. Uključite se u testiranje igre kako biste prikupili povratne informacije od igrača i napravili potrebne prilagodbe kako biste osigurali da sustav dijaloga teče glatko i poboljša cjelokupno iskustvo igranja.

Dosljednost korisničkog sučelja

Osigurajte da dizajn i prezentacija sustava za dijalog odgovaraju cjelokupnom dizajn korisničkog sučelja (UI) vaše igre. Dosljedni elementi korisničkog sučelja, fontovi i boje stvaraju kohezivno vizualno iskustvo koje pridonosi uživljavanju u igru.

Slijedeći ove najbolje prakse, možete izraditi sustav dijaloga koji ne samo da poboljšava narativ vaše igre, već također stvara nezaboravno i impresivno iskustvo za igrače.

Poboljšajte svoje Godot igre pomoću sustava za dijalog

Uključivanje sustava dijaloga u vaše igre Godot može poboljšati angažman igrača i revolucionirati vaše pripovijedanje. Omogućujući likovima da komuniciraju, izražavaju emocije i reagiraju na odluke igrača, stvarate impresivniji i interaktivniji svijet igre.

S Godotovim okruženjem prilagođenim korisniku i snagom GDScripta, imate alate za izradu uvjerljivi dijaloški sustavi koji uvlače igrače u vašu priču i poboljšavaju njihovo cjelokupno igranje iskustvo.