Додајте мало личности и позадине својим ликовима помоћу оштрог система дијалога.
У развоју игара, занимљива игра и задивљујуће приповедање су кључни за стварање незаборавних искустава. Једно моћно средство које вам може помоћи да то постигнете је систем дијалога.
Са добро примењеним системом дијалога, ликови могу да комуницирају, деле информације и да комуницирају са играчем, додајући дубину и урањање вашој игри.
Подешавање ваше игре Годот
Започните стварањем темеља ваше игре. За овај пример, подесите једноставно 2Д окружење са контролисаним карактером који може да се креће помоћу тастера са стрелицама.
Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.
Почните тако што ћете креирати нову сцену за свог лика играча. Унутар ове сцене додајте потребне компоненте. Створити ЦхарацтерБоди2Д чвор који представља тело лика играча. Приложите а ЦоллисионСхапе2Д са правоугаоним обликом за дефинисање површине судара играча.
Сада, додати кретање карактера
и интеракцију са платформама користећи ГДСцрипт. Замените подразумевану скрипту чвора ЦхарацтерБоди2Д следећим кодом: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)
Ова скрипта омогућава вашем лику да се креће лево, десно, горе и доле на основу уноса тастера са стрелицама. Тхе мове_анд_цоллиде функција осигурава да лик ступа у интеракцију са платформама и реагује на колизије.
Додавање оквира за дијалог
Сада можете почети да креирате систем дијалога. Први корак је додавање оквира за дијалог који ће приказати текст када ваш лик ступи у интеракцију са одређеним објектима или НПЦ-овима.
У вашем ЦхарацтерБоди2Д скрипту, уведите још неколико варијабли за руковање оквиром за дијалог и његовим садржајем:
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
Тхе дијалог_бок ће бити одговоран за приказ текста дијалога, док је цлосе_буттон ће омогућити играчима да затворе оквир за дијалог када је то потребно.
У _спреман функцију, креирајте и иницијализујте оквир за дијалог:
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
Ова функција ажурира текст у оквиру за дијалог са тренутном линијом дијалога и повећава тренутна_линија индекс. Тхе лине_тимер осигурава да се сваки ред приказује на кратко време пре преласка на следећи ред.
Додавање дугмета за затварање
Сада можете дати играчима могућност да затворе оквир за дијалог и наставе да играју игру. Урадите то помоћу дугмета за затварање које, када га притисне, сакрива оквир за дијалог и омогућава играчу да настави своје путовање.
Прво, измените _спреман функцију да креирате дугме за затварање и приложите његову функционалност.
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
Са овим променама, играчи ће моћи да се укључе у дијалог и затворе оквир за дијалог када буду спремни да наставе да истражују или комуницирају са светом игре.
Најбоље праксе за ваш систем дијалога
Док настављате да развијате и усавршавате свој систем дијалога, имајте на уму следеће најбоље праксе ће вам помоћи да осигурате да ваш систем у потпуности унапреди приповедање ваше игре и ангажовање играча обим.
Доследност је кључна
Одржавајте доследан тон, стил писања и речник у целом систему дијалога. Конзистентност помаже играчима да се повежу са ликовима и светом игре, стварајући беспрекорно и импресивно искуство.
Црафт Цхарацтер Воицес
Сваки лик треба да има посебан глас и личност која се одражава у њиховим дијалозима. Узмите у обзир њихову позадину, мотивацију и емоције када пишете њихове редове.
Ова диференцијација додаје дубину вашим ликовима и чини интеракције незаборавнијим. Можете лако додајте различите звукове за различите ликове у Годоу.
Смислени избори
Дизајнирајте изборе дијалога који имају значајне последице. Избори који утичу на нарацију игре, односе или чак механику игре подстичу играче да се укључе у систем дијалога и емоционално улажу у своје одлуке.
Тестирање и итерација
Темељно тестирајте своје секвенце дијалога да бисте открили све грешке у куцању, граматичке грешке или проблеме са темпом. Укључите се у тестирање играња да бисте прикупили повратне информације од играча и извршили неопходна прилагођавања како бисте осигурали да систем дијалога тече несметано и побољшао целокупно искуство играња.
Конзистентност корисничког интерфејса
Уверите се да дизајн и презентација система дијалога одговарају целини дизајн корисничког интерфејса (УИ) ваше игре. Конзистентни елементи корисничког интерфејса, фонтови и боје стварају кохезивно визуелно искуство које доприноси понирању у игру.
Пратећи ове најбоље праксе, можете направити систем дијалога који не само да побољшава наратив ваше игре, већ и ствара незаборавно и импресивно искуство за играче.
Подизање ваших Годот игара помоћу система дијалога
Укључивање система дијалога у ваше игре Годот може побољшати ангажовање играча и револуционисати ваше приповедање. Омогућавајући ликовима да комуницирају, изражавају емоције и реагују на одлуке играча, стварате импресивнији и интерактивнији свет игре.
Уз Годоово окружење прилагођено кориснику и моћ ГДСцрипт-а, имате алате за израду убедљиви системи дијалога који увлаче играче у вашу причу и побољшавају њихову целокупну игру искуство.