Пишем квест, часть 1

Злобного дня, читатель. С момента моего знакомства с редактором диалогов, данный материал назревал где-то в голове. Основная цель - пройтись по всем этапам создания игрового квеста на живом примере. Какие-то моменты будут очевидными, какие-то нет, посмотрим.

Концепция:
Не раз призывал я всех к написанию детальных, проработанных концептов. Если речь идёт о технических элементах, игровой механике, разных системах - без них никуда. С квестами ситуация схожая. Хорошо прописанный концепт, с указанием всех вариантов диалогов, вводными описаниями, табличками, заявками на скрипты существенно ускоряет дальнейшую работу, особенно если для создания квеста требуется несколько человек (один для диалогов, второй для скриптов, третий для карт). Однако небольшие простые задания вполне могут писаться сходу, развиваясь из крошечной идеи. В данном материале должно получиться что-то среднее.

Есть краткое описание реального игрового задания, находящееся на уровне идеи:
Игрок разговаривает с одним из охранников рядом с клеткой (недалеко от входа в Город-Убежище). При низкой карме и определённом построении диалога, игрока отсылают на переговоры с представителем определённой группы людей (на нейтральной территории - МодокГекко). В случае достижения договорённости, игрок получает -карму и +деньги. Переговоры проходят без конкретных указаний о товаре“.
По задумке - это небольшое, простое задание, требующее от игрока поговорить с несколькими нпц и получить немного денег. Основным условием для получения задания является наличие отрицательной кармы, хотя от этого можно отказаться. Ввиду того, что задание простое, нужного нпц логично будет перенести в Гекко, чтобы сократить время на переходы. Также задание будет выступать “крюком” для нескольких других заданий. 

Конкретика:
Определившись с самыми базовыми элементами, можно чуть добавить конкретики. Игрок говорит с охранником в Городе-Убежище и получает квест. Игрок идёт в Гекко, в указанное место, и находит там второго нпц, уникального для квеста, а может и одного из существующих. Этот нпц уже отсылает к непосредственно нужному для переговоров нпц, находящемуся где-то рядом. Подобная дополнительная “отсылка” даст возможность контролировать поведение ключевого нпц, может быть повесить на него скрипт, благодаря которому он будет перемещаться по локации, а потом его (нпц) и вовсе можно будет убрать или отправить куда-либо ещё.
Помимо нужных нпц (а соответственно и диалогов с ними), хорошо бы заранее определить и нужные переменные, с их описанием (формат подробно расписан в документации к редактору диалогов).

Нужные диалоги:
Стражник в Городе-Убежище - один из стражников, стоящих рядом с клеткой в пригороде.
Связной в Гекко - пусть будет бармен в баре.
Представитель группы - новый нпц.

Нужные переменные:
q_vc_ mistrade - переменная, регулирующая общее состояние задания. 
vc_mistrade_price  - эту переменную можно попробовать использовать для хранения результата “переговоров”. Это дополнительный “крюк” для дальнейшего развития задания. От результатов переговоров может зависеть награда игрока, а может и процент от прибыли в дальнейшем. Кратко - сюда нужно будет занести цену единицы товара, для вероятного будущего использования.
Вторая переменная не имеет приставки q_ т.к.  данная приставка  применяется только для переменных, имеющих флаг “Квестовая” и отображающихся в пип-бое, в списке заданий.

Последовательность действий:
Поговорить со стражником. Поговорить со связным. Найти и поговорить с представителем. Вернуться в Город-Убежище и получить награду. 

Ценовая политика:
Предположим, клиент согласен покупать единицу товара за 200 монет. Продавец хочет получать никак не меньше 300. 400 - отличный вариант, а 500 и вовсе идеальный. Игрок в ходе переговоров старается выбить цену получше. Можно сделать совсем интересно - несколько вариантов, динамически меняющих цену. Т.е. у игрока будет выбор - использовать разные навыки (торговля и красноречие в данном случае) + простые варианты, чтобы поднять цену на желаемый уровень. Сам эпизод с поднятием цены можно также разбить на две-три части, с разными требованиями - первый уровень позволяет относительно легко довести цену до 300 (у нас ведь начальный лёгкий квест), второй требует более высоких навыков, но позволяет увеличить цену до 400, ну а третий соответственно доводит цену до идеальных 500 монет.

Информационное:
Многое может быть непонятным и казаться не сильно связанным. При наличии детального концепта всё становится существенно яснее и удобнее. Однако создание концепта в процессе, с перебором различных вариантов чуть интереснее. В процессе написания непосредственно диалогов так же могут возникать спорные ситуации, что-то может меняться, вырезаться, вставляться - это нормально, на мой взгляд. Во второй и последующих (как получится) частях многое прояснится и станет понятнее и конкретнее.
Данный материал ни в коем виде не является спойлером и не разглашает закрытую информацию. По крайней мере не больше, нежели любой выложенный квест в Идеях и предложениях.
Обратная связь приветствуется, равно как и вопросы-пожелания-критика. 
Вторая часть где-то рядом, отзывы ускорят её появление ;

08.05.2009  Метки: ,   Рубрики: FOnline, Пишем квесты

Комментарии (3)

  1. Loinz - 09.05.2009

    Значит ли это, что все переменные с приставкой Ку_ автоматически попадают в пип-бой? Или все таки это делается руками? О_о

    Loinz

    к этой цитате:
    Вторая переменная не имеет приставки q_ т.к. данная приставка применяется только для переменных, имеющих флаг “Квестовая” и отображающихся в пип-бое, в списке заданий.

    Sargonius

    Попадают скорее переменные с флагом “квестовая”, а по заданному стандарту перед ними нужно ставить q_ для лучшей идентификации и общего удобства. Нет флага - нет описания в пип-бое - нет q_ в начале.
    Сообщения для пип-боя прописываются отдельно, пока не сталкивался с ними, как дойду - опишу процесс. Без них “в игре, с этим флагом, на этой переменной, будет отдельный квест с еррорами. Т.е. есть флаг Квестовая - добавляем q_ в имя, нет - не добавляем. Т.к. этой переменной не нужен флаг Квестовая, то и префикс убираем.” (С) Cvet.