Ссылка на Medium (там лучше оформление)В прошлой статье (“Восемь идей по проекту”) мы немного прошлись по целям на проект и совсем капельку коснулись новой диалоговой системы. Сегодня я хочу показать прогресс в данном направлении и рассказать про инструменты которые я буду интегрировать в игровой клиент.
(Простенькая демо)
Для меня хорошая игра в жанре RPG/MMORPG обязательно должна иметь качественную сюжетную линию и мощную цепочку побочных альтернативных заданий. Без разветвленной диалоговой системы создать полное погружение не получится, но в UO по природе своей это отсутствует (и отсутствовало всегда). Да, мы знаем про Лорда Бритиша и какие то задания (если играли на официальном сервере), но полноценной сюжетной линией и древовидными диалогами эта игра нас не баловала.
Дело в том что это не просто тяжело реализовать технически, но даже в случае успеха — поддерживать этого “динозавра” без подключения сторонних разработок было бы очень сложно. Сначала я хотел создать “с нуля”, но после того как прикинул объем связей и цепочек даже для первых пяти квестов — понял что поддерживать это не выйдет. Я очень благодарен за статью “Создание разветвлённой диалоговой системы” (Gamasutra) которую мне подкинули в личку, она открыла глаза на сложные моменты и подсказала популярные инструменты которые используют другие студии.
(IMG:
https://c2n.me/3XrD18T.jpg)
(Для легкой отладки окно inklecate выводится в момент старта диалога. Отлично видно как работает парсер выдачи на плюсах для подгонки в окошке клиента)
На арену выходит “Inky”После нескольких попыток я добрался до Inky (https://www.inklestudios.com/ink/) который представляет из себя мощный интерпретатор для диалоговой системы от создателей “80 Days” (я не играл, но отзывы хорошие). Начал копать, сравнивать с конкурентами и понял что буду использовать именно inkle.
(IMG:
https://c2n.me/3XrD35l.png)
1 Это opensource, все исходники открыты и я могу ковырять их совершенно бесплатно
2 Знакомый язык исходников (C#), что упрощает работу и возможные фиксы
3 Достаточно подробная документация (https://github.com/inkle/ink/blob/master/Documentation/WritingWithInk.md) по возможностям, большая гибкость и кол-во возможностей
4 Ink файлы диалогов представляют из себя не сложные текстовые файлы со своим синтаксисом, которые легко передать переводчикам и сценаристам. Человек “не в теме” — легко поймет что надо менять и как всё устроено без изучение документации
5 С ходу мне хватило возможностей языка после прочтения документации + наличие возможности запустить интерпритатор через консоль напрямую упрощало интеграцию в клиент
Дальше дело было за малым — взять этого динозавра и подружить с Orion-ом. После некоторых модификаций исходных кодов inklecate (спасибо, помогли) — получилось научить его выплевывать ответ экрана в текстовый файл и принимать ответ (опять таки, через текстовые файлы). Этой базы было достаточно что бы учить Orion с этим работать и я потратил несколько дней что бы завести всё это вместе в самом примитивном виде (см.видео)
(IMG:
https://c2n.me/3XrD5mo.jpg)
Впереди много работы по “допиливанию” того что получилось, но я рад что получилось сделать интеграцию и побороть самые сложные моменты подключения. Теперь мой игровой клиент WisQuas содержит в себе действительно мощную систему разветвленных диалогов и будущая сюжетная линия должна будет получить именно такой, которую я задумал.
Что впереди?Вот списочек дел в направлении диалогов, которые еще предстоит побороть (и на это уйдет наверняка еще куча времени):
1 Научить ответы в диалогах реагировать на характеристики чара: какие то ветки общения должны будут “открываться” только в случае если навыка (харизма, атлетика, сила, умения, устрашения) достаточно.
2 Менять аватарки в зависимости от квестолога, с которым происходит общение
3 Добавить возможность прокручивать диалог назад (что бы посмотреть историю наших ответов)
4 Сохранять этап диалога на каждом ответе пользователя, что бы исключить сброс результатов в случае перезахода в игру
5 Подсвечивать над головой чаром и нпс иконку, что активна диалоговая система
6 Написать первый квест для “обкатки” системы
Я целюсь на реализацию как в Divinity 2, Pillars of Eternity, Pathfinder Kingmaker и очень надеюсь что этот момент у меня получится. Впереди еще очень много работы, но я рад что появляются результаты, которыми я могу с вами поделиться.
Возможно демка получилась “простоватой”, но так оно и есть. Основная красота появится когда диалоги начнут реагировать на характеристики, будут наполнены красивыми текстами и сюжетом)
Тимур
Ссылка на Medium (там лучше оформление)