А вот интересно — кто-нибудь занимался формализацией процесса создания диалога с выбором варианта из предложенного перечня фраз? Можно ли его разбить на какие-либо функциональные блоки/стадии/эпизоды?
И какие "типы" диалога могут встретится? Например, диалог может быть линейным и циклическим. Под циклическим я имею в виду ситуацию, когда игроку есть много о чём поговорить с персонажем — он выбирает из перечня какую-либо одну тему, получает ответ, после чего возвращается обратно к перечню тем (в котором уже обсуждённая тема может и отсутствовать). Вариант — расспросы об окружающем мире, о другом персонаже и т.п. С линейным всё проще — игрок двигается по руслу диалога от начала к концу, возможно через какие-либо ответвления.
На какие формальные блоки можно разбить данные типы диалогов? А может есть подходящие инструменты для работы с подобным функционалом (типа блок-схем и т.п.)?
Неактивен
Nex, если ты постишь ссылки, то хоть давай описание того, что там можно найти (например "создание диалогов в QSP"), и на какую часть вопроса ты этой ссылкой хочешь ответить. И это не просьба.
Модуль, который можно найти по приведённой тобой ссылке демонстрирует лишь способ реализации (кстати кошмарный) нескольких видов диалога — без какой-либо формализации самого процесса его (диалога) создания.
Неактивен
Важный вопрос — как лучше производить группировку фраз игрока, чтобы избежать ручного прописывания очередного перечня фраз для выбора (типа как здесь)?
Хочется, чтобы фразы были собраны по какому-нибудь признаку (что-то типа "Темы" диалога), на который можно было бы потом просто сослаться.
Неактивен
М-да… Вчера набросал схему простейшего диалога:
Простейший — потому что все фразы игрока собраны в один перечень, и многоуровневых тем тут по сути нет. То есть те или иные фразы по мере развития ситуации просто либо исчезают, либо появляются. Надо подумать, как хотя бы подобное можно свернуть в одну "тему" (или разделить на несколько) и увязать в какую-нибудь структуру, а также как лучше расширять подобную структуру дополнительными темами…
Неактивен
Некс, описанная тобой реализация в контексте данного обсуждения в общем-то бессмысленна — поскольку ну ни разу не облегчает задачу. Проблемы запрограммировать конкретную ситуацию лично у меня нет, а для других ты уже ссылку на примеры реализации диалогов на Куспе приводил чуть выше. Твоё решение — это решение конкретной ситуации, которое уже выглядит путано с точки зрения последовательности блоков диалога, а добавление хотя бы одной ветки в эту "систему" приведёт к тому, что код придётся основательно переписывать.
Пока проработка вопроса находится в теоретической стадии — как формализовать процесс описания (не написания или программирования, а именно описания) диалога, чтобы это было удобно переносить в код или библиотеку. Хочешь участвовать в этой дискуссии — подумай в этом ключе.
Неактивен
bergano написал:
А VoiceXML не хорош для этого?
Я бы попросил всё же давать какие-либо пояснения к вводимой в дискуссию терминологии. Я вот не знаю, что такое "VoiceXML", поэтому сходу понять, для чего именно он хорош, сложно.
Лезу в Википедию:
VoiceXML имеет теги, которые являются командами для голосового браузера (voice browser), который: синтезирует, распознает речь, предоставляет диалоговое управление.
и, честно говоря, не понимаю, каким боком VoiceXML относится к поднятой здесь теме.
Неактивен
bergano написал:
VoiceXML - Это язык описания диалогов. Именно "описания". Может, авторы плтформ поддержат в платформах его интерпретацию? Или конвертацию на язык платформы файла в формате VoiceXML.
Полагаю, вас ввело в заблуждение словосочетание "описание диалогов". Так вот здесь хотелось бы порассуждать на тему "сесть и на бумажке нарисовать диалог", а не "сесть и с бумажки зачитать диалог". Может к этому обсуждению ("Игры для незрячих") тема VoiceXML подойдёт больше? Всё же желательно не засорять тематические ветки отвлечёнными вставками.
Неактивен
bergano написал:
На VoiceXML можно в файле описать сценарий диалога. Запрос, варианты ответов, ветвления. Это формат, язык описания диалогов. Язык, а не программа. Потом можно транслировать его (VoiceXML файл) например в QSP. Написать утилиту, например на xsl.
А можно тогда конкретнее, чем он облегчает автору проектирование и создание игрового диалога? Только без ссылок на энциклопедические ресурсы, описывающие решения на все случаи жизни, а своими словами и, желательно, с примерами. А то пока никаких ценных идей по теме не прозвучало, а здесь я не всё понял…
Неактивен
Nex написал:
Разве был вопрос, "как облегчить задачу"? Я думал, что был вопрос - как проще всего ее решить. Приведенное мной решение, я считаю самым простым. Сможешь проще?
Некс, вопрос был именно в облегчении задачи в части предварительной формализации процесса создания диалога. Всё это написано выше.
Nex написал:
Кому как, я вот смотрю и не путаюсь. Сможешь проще?
Ты смотришь на код. А сюжетная часть, заложенная в этом коде, через некоторое время начнёт ускользать — с помощью "понятного" кода ты разнёс её по разным местам, и последовательность чтения ни в малейшей степени не соответствует последовательности вывода.
Пытаться "делать проще" в части программирования на данном этапе я не собираюсь — я не для соревнования эту тему поднял.
Nex написал:
диалоги, как правило, слишком разнообразны для полной формализации - придется либо писать без формализации, полностью "кодом", как я привел выше, либо сочинить очередные неуниверсальные правила поведения диалогов, и подгонять диалоги под них.
Ну так и игра подразумевает действия игрока в рамках "неуниверсальных" правил, так что лучше всё же иметь какие-нибудь правила, которые пусть и не охватывают всё и вся, зато позволяют достаточно эффективно использовать ряд приёмов.
К тому же, я полагаю, что при создании диалога автор будет указывать не просто фиксированные фразы, но и некие программные модули, этими фразами управляющие.
Главная цель — чтобы автору было легко понимать переложенный в код диалог и при необходимости включать в него новые ветки и блоки.
Неактивен
Logger написал:
IMHO - все автоматические диалоги, автоматические описания и т.п. - это подсознательная попытка автора НЕ писать IF-произведение (как литературное произведение), а просто расставить декорации и предложить Игроку/программе придумать к ним текст. Лучше уж написать 2 варианта диалога, но нормальным литературным языком, чем 10 вариантов "смеси паскаля и русского". Немного утрирую, конечно, но мне это кажется так.
Будет у игрок 2 или 20 вариантов выбора - не важно, ему все равно может захотеться задать вопрос, которого в списке нет.
Полагаю, что утрирование здесь используется для того, чтобы подчеркнуть красоту своего ответа. В данной теме речи про автоматические диалоги и описания не ведётся — лишь о том, можно ли как-то помочь автору проектировать диалоги, чтобы после переложения в код это оставалось понятным, а в самой игре — пристойным.
Неактивен
Бегло просматривая некоторые материалы по теме, наткнулся на некоторые схожести прорабатываемых мной идей с изложенными в этих статьях (например "Defining Dialogue Systems" от Brent Ellison). Полагаю, я сэкономлю массу времени, если поработаю с этими материалами плотнее…
Неактивен
Olegus t.Gl. написал:
Полагаю, я сэкономлю массу времени, если поработаю с этими материалами плотнее…
Походу вряд ли. Надо всё же довести до ума одну идею хотя бы на примере "диалога с косарями".
Неактивен
bergano написал:
А если руками написать произвольной формы XML с описанием диалога? Условия, переходы с диалога на диалог. А утилитка придумается.
Как раз с этим проблем нет. Однако в этой теме речь о том, как от этого уйти.
Неактивен
Раз уж сообщество INSTEAD тоже серьёзно взялось за диалоги (и пример Чешира им тоже был отправлен), то выложу-ка я свою реализацию этого диалога на QSP:Az.
Итак:
Исходники диалога от Чешира (описание, блок-схему и реализацию на платформе URQ) можно скачать тут: http://dl.dropbox.com/u/5161162/dialog.zip
Неактивен