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
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.ZEROif Input.is_action_pressed("ui_left"):
input_dir.x -= 1if Input.is_action_pressed("ui_right"):
input_dir.x += 1if Input.is_action_pressed("ui_up"):
input_dir.y -= 1if 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.