Crearea unui sistem de dialog în Godot cu GDScript

În dezvoltarea jocului, jocul captivant și povestirea captivantă sunt cheia pentru a crea experiențe memorabile. Un instrument puternic care vă poate ajuta să realizați acest lucru este un sistem de dialog.

Cu un sistem de dialog bine implementat, personajele pot comunica, împărtăși informații și interacționa cu jucătorul, adăugând profunzime și imersiune jocului tău.

Configurarea jocului Godot

Începeți prin a crea fundația jocului dvs. Pentru acest exemplu, configurați un mediu 2D simplu cu un personaj controlabil care se poate deplasa folosind tastele săgeți.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Începeți prin a crea o nouă scenă pentru personajul dvs. de jucător. În interiorul acestei scene, adăugați componentele necesare. Creați un nod CharacterBody2D pentru a reprezenta corpul personajului jucător. Atașați un CollisionShape2D cu o formă dreptunghiulară pentru a defini zona de coliziune a jucătorului.

Acum, adăugați mișcarea caracterului și interacțiunea cu platformele folosind GDScript. Înlocuiți scriptul implicit al nodului CharacterBody2D cu următorul cod:

 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)

Acest script permite personajului să se miște la stânga, la dreapta, în sus și în jos pe baza tastelor săgeți introduse. Funcția move_and_collide asigură că personajul interacționează cu platformele și răspunde la coliziuni.

  Ghid complet și șabloane gratuite

Adăugarea casetei de dialog

Acum, puteți începe să creați sistemul de dialog. Primul pas este să adaugi o casetă de dialog care va afișa text atunci când personajul tău interacționează cu anumite obiecte sau NPC-uri.

În scriptul CharacterBody2D, introduceți mai multe variabile pentru a gestiona caseta de dialog și conținutul acesteia:

 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

Dialog_box va fi responsabil pentru afișarea textului dialogului, în timp ce close_button va permite jucătorilor să închidă caseta de dialog atunci când este necesar.

În funcția _ready, creați și inițializați caseta de dialog:

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

Afișarea textului dialogului

Acum vă puteți concentra pe afișarea textului în caseta de dialog. Puteți face ca textul să se întindă pe mai multe rânduri și să îl derulați, dezvăluind câte un rând de text odată.

Modificați funcția _physics_process pentru a gestiona afișarea liniilor de dialog:

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

Acest segment de cod verifică dacă line_timer este mai mare decât 0. Dacă este, scade temporizatorul cu valoarea delta. Dacă cronometrul nu este activ și există mai multe linii de dialog de afișat, apelează funcția show_next_dialogue_line.

Implementați funcția show_next_dialogue_line după cum urmează:

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

   
    line_timer = 3.0

Această funcție actualizează textul din caseta de dialog cu linia de dialog curentă și incrementează indexul curent_linii. Line_timer se asigură că fiecare linie este afișată pentru o perioadă scurtă înainte de a trece la următoarea linie.

  Cum să personalizați aplicația Stocks pe Apple Watch

Adăugarea unui buton de închidere

Acum, le puteți oferi jucătorilor posibilitatea de a închide caseta de dialog și de a continua jocul. Faceți acest lucru cu un buton de închidere care, atunci când îl apasă, ascunde caseta de dialog și permite jucătorului să-și reia călătoria.

Mai întâi, modificați funcția _ready pentru a crea un buton de închidere și atașați funcționalitatea acestuia.

 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)

Acest cod creează o instanță a clasei Button și îi personalizează aspectul și poziția. De asemenea, conectează semnalul apăsat la funcția _on_close_button_pressed.

Acum implementați funcția _on_close_button_pressed. În această funcție, setați vizibilitatea atât a casetei de dialog, cât și a butonului de închidere la fals. Acest lucru ascunde efectiv interfața de dialog de jucător.

Nu uitați să resetați indexul current_line la 0 pentru a vă asigura că dialogul începe de la început data viitoare când jucătorul inițiază o conversație:

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

Cu aceste modificări, jucătorii vor putea să se angajeze în dialog și să închidă caseta de dialog atunci când sunt gata să continue explorarea sau interacțiunea cu lumea jocului.

Cele mai bune practici pentru sistemul dvs. de dialog

Pe măsură ce continuați să vă dezvoltați și să vă perfecționați sistemul de dialog, păstrarea în minte a următoarelor bune practici vă va ajuta să vă asigurați că sistemul dvs. îmbunătățește povestea jocului și implicarea jucătorilor în cea mai mare măsură.

Consecvența este cheia

Păstrați un ton, un stil de scriere și un vocabular consistent pe tot parcursul sistemului de dialog. Consecvența îi ajută pe jucători să se conecteze cu personajele și lumea jocului, creând o experiență perfectă și captivantă.

  Cum să conectați un dispozitiv USB la iPad

Creați voci ale personajelor

Fiecare personaj ar trebui să aibă o voce distinctă și o personalitate reflectată în dialogurile lor. Luați în considerare trecutul, motivațiile și emoțiile lor atunci când le scrieți rândurile.

Această diferențiere adaugă profunzime personajelor tale și face interacțiunile mai memorabile. Puteți adăuga cu ușurință sunete diferite pentru diferite personaje în Godot.

Alegeri semnificative

Proiectați opțiuni de dialog care au consecințe semnificative. Alegerile care influențează narațiunea, relațiile sau chiar mecanica jocului încurajează jucătorii să se implice în sistemul de dialog și să investească emoțional în deciziile lor.

Testare și iterație

Testează-ți cu atenție secvențele de dialog pentru a detecta greșelile de scriere, greșelile gramaticale sau problemele de ritm. Implică-te în playtesting pentru a aduna feedback de la jucători și pentru a face ajustările necesare pentru a te asigura că sistemul de dialog curge fără probleme și îmbunătățește experiența generală de joc.

Consecvența UI

Asigurați-vă că designul și prezentarea sistemului de dialog se potrivesc cu designul general al interfeței cu utilizatorul (UI) al jocului dvs. Elementele consecvente ale interfeței de utilizare, fonturile și culorile creează o experiență vizuală coerentă care contribuie la imersiunea jocului.

Urmând aceste bune practici, poți crea un sistem de dialog care nu numai că îmbunătățește narațiunea jocului tău, dar creează și o experiență memorabilă și captivantă pentru jucători.

Crește-ți jocurile Godot cu sisteme de dialog

Încorporarea unui sistem de dialog în jocurile dvs. Godot poate îmbunătăți implicarea jucătorilor și vă poate revoluționa povestirea. Permițând personajelor să comunice, să exprime emoții și să reacționeze la deciziile jucătorilor, creați o lume de joc mai captivantă și mai interactivă.

Cu mediul ușor de utilizat Godot și puterea GDScript, aveți instrumentele necesare pentru a crea sisteme de dialog convingătoare care atrag jucătorii în narațiunea dvs. și le îmbunătățesc experiența generală de joc.