Sunday, April 7, 2013

Система диалогов для UDK

    Нашел вот здесь довольно полезный мод, который можно использовать при создании игр практически любого жанра - система диалогов.
В принципе все очень просто, а также, в прилагаемом файле есть описание на английском, поэтому я просто переведу документацию на русский(вольный перевод) и сделаю некоторые комментарии .


Автор:    S ha D
Перевод: Vadakuma

    "Добро пожаловать на страничку описания системы диалогов, которую я создал, чтобы помочь пользователям UDK скорее адаптироваться к движку. Здесь будет описано как установить модуль системы диалогов и какими функциями  этот модуль обладает.



Установка

    Если Вы уже немного знакомы с UnrealScript, Вы наверняка знаете как устанавливать прилагающиеся исходники.Вы также должны знать, что если вы хотите интегрировать этот диалоговый модуль в уже созданный свой, то Вам придется более тщательно проанализировать код для правильного внедрения.

    Для начала извлеките скачанные файлы (папки Development и UDKGame) из архива в папку с UDK. Соглашайтесь на замену.


    Теперь у Вас есть папка Dialogue в директории "~/Development/Src"
Необходимо показать движку, что мы добавили новый скрипты.
Поэтому идем в "~/UDKGame/Config" и открываем DefaultEngineUDK.ini .Там находим  строку:
ModEditPackages=MyMod

и заменяем ее на:

ModEditPackages=Dialogue

ПРИМЕЧАНИЕ: Я поступил немного по другому. Так как я внедрял этот код в свой, то делал редактируемой папку  в DefaultEngine.ini ,но в принципе суть не должна была поменяться.



И остался последний шаг : открываем UnrealFrontEnd и жмем Make > Full Recompile



Дальше просто запускаем UDK загружаем тестовую карту DIA_ExampleMap и тестируем.


Применение

    Во второй части я объясню, как можно создавать диалоги с помощью Kismet Editor. Для этого я опишу каждую доступную в моде функцию. В Kismet жмем правую кнопку мыши  и идем в Action > Dialogue :



Нода BeginDialogue
    Первый узел позволяет игроку войти в режим диалога. Это обязательный узел перед всеми последующими!


                                                             

Связи :
InputsIn : Начало диалога
OutputsOut : переход к самому сообщению
VariablesPlayer : Игрок для которого начинается диалог

Настройки :

Background Texture - текстура используемая на заднем плане

Button Hovered Texture - текстура для активных кнопок выбора

Button Texture - текстура для неактивных кнопок выбора

Margin X - горизонтальное расположение "margin" окна с диалогом (смотрим картинку).

Margin Y - вертикальное расположение "margin" окна с диалогом (смотрим картинку).

Padding X - горизонтальное "padding"  окна с диалогом (смотрим картинку).

Padding Y - вертикальное "padding"  окна с диалогом (смотрим картинку).

Use Texture - Установите флажок, если вы хотите использовать текстуры остановленные выше. По умолчанию будет просто белый цвет.

Скриншот поможет вам правильно понять, что есть что:



Нода Message


Данная нода выводит сообщение. 

Связи :
InputsIn : активируем вывод сообщения.
OutputsOut : следующее сообщение
VariablesPlayer : игрок которому будет показано это сообщение
Camera : камера с которой будет показано сообщение
Text : содержание
Name : имя персонажа который говорит

Настройки :

Dialogue Box Top - Ставим галочку если хотим, чтобы сообщение выводилось сверху.


Нода Choice

Эта нода позволяет выбрать четыре варианта ответа.



Связи :
InputsIn : показывает варианты ответов.
OuputsChoice X : действие если игрок выберет ответ Х.
VariablesPlayer : игрок котором показываются варианты ответов.
Camera : камера из которой мы смотрим.
Text : содержание сообщения.
Name : имя персонажа что говорит.

Настройки :

Choice X - Ставим галочку если хотим активировать вариант Х. Запомните эти настройки!
(кнопка1 : сверху слева, кнопка 2 : сверху справа, кнопка 3 : снизу слева, кнопка 4 : снизу справа)

Choice Text XТекст на кнопке Х, если кнопка активирована.

Dialogue Box Top - Ставим галку если хотим что бы сообщение было вверху экрана. (кнопки будут расположены снизу экрана)


Нода EndDialogue

Эта нода завершает режим диалога и возвращает к игре.



Связи :
InputsIn :конец диалога.
OutputsOut: игрок выходит из режима диалога.
VariablesPlayer : игрок которого выпускают из режима диалога.



Пример

И наконец можно, к примеру, построить вот такую логическую цепочку:


    Игрок касается триггера в входит в режим диалога.Сначала показывается просто сообщение, а далее надо будет выбрать один ответ из двух вариантов. В зависимости, какой Вы выбрали ответ, Вам покажут то или иное сообщение."

скачать исходники.

PS:  Благодаря наличию исходников мода, можно реализовать сколь угодно гибкую систему диалогов, удовлетворяющую потребностям поставленной вами задачи.
Также можно почерпнуть много полезной информации о реализации HUD в UDK, к примеру, тут и тут

UPDATE

    Ввиду того, что Эпики постоянно что-либо модернизируют и изменяют во внутренней структуре движка, в частности и в скриптах, некоторые старые решения перестают работать так, как следует.Вот и эти скрипты дожили до этого момента :)
    Эпики полностью вырезали скрипты UIscene(устаревшая система создания меню), на основе которых происходила обработка данных получаемых с мышки. Поэтому мышь теперь надо двигать иным способом. Прикрепил обновленный вариант, где проблема с мышью исправлена. 

No comments:

Post a Comment