Добавете малко индивидуалност и фон към героите си с мощна система за диалог.
При разработването на игри, ангажиращият геймплей и завладяващото разказване на истории са ключови за създаването на запомнящи се изживявания. Един мощен инструмент, който може да ви помогне да постигнете това, е система за диалог.
С добре внедрена система за диалог, героите могат да общуват, да споделят информация и да взаимодействат с играча, добавяйки дълбочина и потапяне към вашата игра.
Настройване на вашата игра Godot
Започнете, като създадете основата на вашата игра. За този пример настройте проста 2D среда с управляем герой, който може да се движи с помощта на клавишите със стрелки.
Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.
Започнете, като създадете нова сцена за вашия герой. Вътре в тази сцена добавете необходимите компоненти. Създавам CharacterBody2D възел за представяне на тялото на героя на играча. Прикачете a CollisionShape2D с правоъгълна форма, за да определи зоната на сблъсък на играча.
Сега, добавете движение на героя и взаимодействие с платформи, използващи GDScript. Заменете скрипта по подразбиране на възела CharacterBody2D със следния код:
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)
Този скрипт позволява на вашия герой да се движи наляво, надясно, нагоре и надолу въз основа на въвеждането на клавишите със стрелки. The движение_и_сблъскване функция гарантира, че героят взаимодейства с платформи и реагира на сблъсъци.
Добавяне на диалогов прозорец
Сега можете да започнете да създавате системата за диалог. Първата стъпка е да добавите диалогов прозорец, който ще показва текст, когато вашият герой взаимодейства с конкретни обекти или NPC.
Във вашия CharacterBody2D скрипт, въведете още няколко променливи за обработка на диалоговия прозорец и неговото съдържание:
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 dialogue_box ще отговаря за показването на текста на диалога, докато затвор_бутон ще позволи на играчите да затворят диалоговия прозорец, когато е необходимо.
В _готов функция, създайте и инициализирайте диалоговия прозорец:
func _ready():
dialogue_box = Label.new()
dialogue_box.visible = false
add_child(dialogue_box)
Показване на диалогов текст
Сега можете да се съсредоточите върху показването на текста в диалоговия прозорец. Можете да накарате текста да обхваща повече от един ред и да го превъртате, разкривайки един ред текст наведнъж.
Променете своя _физичен_процес функция за обработка на показването на диалогови редове:
if line_timer > 0:
line_timer -= delta
elif current_line < dialogue_lines.size():
show_next_dialogue_line()
Този сегмент от код проверява дали линия_таймер е по-голямо от 0. Ако е така, той намалява таймера с делта стойността. Ако таймерът не е активен и има повече диалогови редове за показване, той извиква покажи_следващия_диалогов ред функция.
Прилагане на покажи_следващия_диалогов ред функция, както следва:
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
Тази функция актуализира текста в диалоговия прозорец с текущия диалогов ред и увеличава текущ_ред индекс. The линия_таймер гарантира, че всеки ред се показва за кратък период от време, преди да премине към следващия ред.
Добавяне на бутон за затваряне
Сега можете да дадете възможност на играчите да затворят диалоговия прозорец и да продължат да играят играта. Направете това с бутон за затваряне, който, когато го натисне, скрива диалоговия прозорец и позволява на играча да възобнови своето пътуване.
Първо, променете _готов функция за създаване на бутон за затваряне и прикачване на неговата функционалност.
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)
Този код създава екземпляр на Бутон клас и персонализира външния му вид и позиция. Той също така свързва натиснат сигнал към _при_натиснат_бутон_за_затваряне функция.
Сега внедрите _при_натиснат_бутон_за_затваряне функция. В тази функция задайте видимостта както на диалоговия прозорец, така и на бутона за затваряне невярно. Това ефективно скрива диалоговия интерфейс от плейъра.
Не забравяйте да нулирате текущ_ред индекс на 0, за да се гарантира, че диалогът започва отначало следващия път, когато играчът започне разговор:
func _on_close_button_pressed():
dialogue_box.visible = false
close_button.visible = false
current_line = 0
С тези промени играчите ще могат да участват в диалог и да затварят диалоговия прозорец, когато са готови да продължат да изследват или да взаимодействат със света на играта.
Най-добри практики за вашата система за диалог
Докато продължавате да развивате и усъвършенствате вашата система за диалог, имайте предвид следните най-добри практики ще ви помогне да гарантирате, че вашата система подобрява разказването на истории и ангажираността на играча в най-голяма степен степен.
Последователността е ключова
Поддържайте постоянен тон, стил на писане и речник във вашата система за диалог. Последователността помага на играчите да се свързват с героите и света на играта, създавайки безпроблемно и завладяващо изживяване.
Craft Character Voices
Всеки герой трябва да има различен глас и личност, отразени в техните диалози. Вземете предвид техния произход, мотивация и емоции, когато пишете редовете им.
Тази диференциация добавя дълбочина към вашите герои и прави взаимодействията по-запомнящи се. Можете лесно добавете различни звуци за различни герои в Godot.
Смислени избори
Проектирайте диалогови избори, които имат значими последствия. Изборите, които влияят върху разказа на играта, взаимоотношенията или дори механиката на играта, насърчават играчите да се ангажират със системата за диалог и да инвестират емоционално в своите решения.
Тестване и итерация
Внимателно тествайте поредиците от диалози, за да откриете правописни грешки, граматически грешки или проблеми с темпото. Включете се в тестване на играта, за да съберете обратна връзка от играчите и да направите необходимите корекции, за да сте сигурни, че системата за диалог протича гладко и подобрява цялостното игрово изживяване.
Съгласуваност на потребителския интерфейс
Уверете се, че дизайнът и представянето на системата за диалог отговарят на цялостното дизайн на потребителския интерфейс (UI) на вашата игра. Последователните UI елементи, шрифтове и цветове създават сплотено визуално изживяване, което допринася за потапянето в играта.
Като следвате тези най-добри практики, можете да изработите система за диалог, която не само подобрява разказа на вашата игра, но също така създава запомнящо се и завладяващо изживяване за играчите.
Повишаване на вашите игри Godot със системи за диалог
Включването на система за диалог във вашите игри Godot може да подобри ангажираността на играчите и да революционизира вашето разказване на истории. Като позволявате на героите да общуват, да изразяват емоции и да реагират на решенията на играча, вие създавате по-завладяващ и интерактивен свят на играта.
С удобната за потребителя среда на Godot и силата на GDScript имате инструментите за изработка завладяващи системи за диалог, които привличат играчите във вашия разказ и подобряват цялостната им игра опит.