Джагг (17ur) wrote,
Джагг
17ur

Category:
  • Mood:
  • Music:

Некоторые вопросы формализации сюжета в РПГ.

У меня тут случилось гениальное прозрение. К сожалению, не на политические темы. Опять РПГ. И наверняка опять буду говорить прозой, и кто-то всё это до меня уже выдумал.

Впрочем, не факт, что сказанное можно использовать только в мирных, игровых целях. Формализация - вообще штука опасная...

Заранее извиняюсь перед теми, кто не владеет соответствующими понятиями. Некоторые простые вещи очень сложно объяснить коротко. Так что под катом будет заумь класа "шиза", предупреждаю сразу. И - сразу же окрысившись - не надо пенять мне за свежеизобретённые выражения типа изолуда или дум-окрестность С-точки. Как хочу, так и пишу. Лавры Лема покоя не дают. Кто хочет, может развивать выдвинутые здесь положения.

Итак, у нас есть игровое пространство. Это многомерное пространство, где каждому измерению - каждой оси - соответствует одно из изменяемых свойств одного из объектов или субъектов игры. Задачу выделения наиболее важных осей откладываю на полку "вторые сложные вопросы": там будет оптимизация по весам через переходы к "состояниям" того или иного объекта как суперпозициям его свойств. Например "дракон мёртв"="дракон не дышит"+"дракон не шевелится"+"дракон не пылкает огнём"+"не ворует принцесс". Но пока рассматриваем игровое пространство без этой оптимизации, то есть очень-очень-очень многомерное.

В этом пространстве можно найти как отдельные точки, так и области, соответствующие определённым состояниям Системы, каковым точкам и/или областям присваиваются метки "Старт" или "Финиш" (S и F). S-точкам соответствует состояние Системы в момент входа в неё Игрока, F-точкам соответствует состояние системы, в котором игра прекращается. Очевидно, что F-точки могут быть, в свою очередь, помечены как выигрышные или проигрышные (Fw или Fd) - герой убил дракона или наоборот; и то, и то гамовер, но с разными чувствами. Можно ввести такие понятия, как "подпространство побед" или "подпространство мёртвых героев".

Назовём Игрой последовательность состояний Системы от Старта к Финишу. В доселе описанном антураже для условий полной аналитичности действий Игрока и Системы это будет изолуда, точки которой будут определяться равнодействующей усилий Игрока по попаданию в Fw-точку или увеличению скорости смены состояний Системы, а также усилий Системы по приведению Игрока в Fd-точку (поражение Игрока) или приведению скорости смены состояний Системы к нулевой. В общем случае усилия Системы этими задачами не исчерпываются. В общем случае на решение любой из перечисленных задач Система может усилий совсем не расходовать.

Головоломка - (puzzle) - Игра, в которой Система не расходует усилий на приведение Игрока в Fd-точку (боёв нет, надо соображать, каким предметом на какой подействовать, чтобы перейти в следующую картинку).

Экшн - (action) - Игра, в которой Система не расходует усилий на торможение движения Игрока.

Естественно, надо говорить не об этих идеальных случаях, а о Puzzle-аспекте какой-то Игры и её Action-аспекте, которые как раз и определяются усилиями Системы, направленными на решение задачи торможения Игрока или его поражения.

Класс Игр, где А-аспект присутствует, но подчинён Р-аспекту, называется Квест. Класс Игр, где Р-аспект присутствует, но подчинён А-аспекту, называется РПГ. Чёткой границы у этих классов нет, в т.ч. и между собой. Важно: здесь играет роль именно соподчинение аспектов, а не просто их наличие. Есть игры, в которых наличие А-аспекта и Р-аспекта очевидно, но они не зависят друг от друга (решение головоломки на время - например, тетрис).

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

Таким образом Игра из одной изолуды становится суммой нескольких - между С-точками. Соответствие Игры и Сюжета можно представить как соответствие множеств изолуд и С-точек, то есть И-графом, где С-точки или С-области будут вершинами, а изолуды - рёбрами. Почему не просто графом? Потому, что изолуды в игровом пространстве в общем случае не есть прямые - об их форме я буду говорить ниже.

Сами понимаете, простор для теоретизирования и вывода правил построения Сюжетов необъятнейший - достаточно заняться проецированием определений теории графов на вышеописанную систему. Всё это на полке со "вторыми сложными вопросами". Я ограничусь выводом Алгоритма Героя - под Героем в данном случае понимается эффектор Игрока, определённый по правилам и на языке Системы и способный изменять её состояние. Фигурка на экране, размахивающая мечом.

Если Игроку известен Сюжет (координаты С-точек в игровом пространстве), то его задача сводится к построению гамильтоновой цепи минимальной длины. Короче, провести наикратчайшую дорожку от Старта к Финишу (Fw) через все необходимые С-точки. Это решается алгоритмом Прима. В случае наличия нескольких Героев, ведомых одним или несколькими Игроками, может быть использован алгоритм Краскала (короче, это стандартные алгоритмы трассировки в проектировании радиоэлектронной аппаратуры - довольно простые и легко программируемые).

Если Игроку Сюжет неизвестен, то дополнительно появляется задача определения С-точек или С-областей и их последовательности. Если Игроку доступно всё игровое пространство, то задача определения С-точек или С-областей сводится к построению множества изолуд из различных S-точек и возможно более точному определению точки их пересечения или области, где расстояние между ними минимально (все дороги ведут в Чёрный Замок), исключая при этом из рассмотрения Fd-точки (различные формы прямого и опосредованного суицида Героя) . Принимая определённые таким образом точки или области за С-точки или С-области, строим изолуды уже от них и определяем следующие С-точки и области. Можно так же воспользоваться методом ветвей и границ. После определения всех С-точек строим гамильтонову цепь.

Предыдущее в радость Мастерам и тестерам. Однако в общем случае информация по игровому пространству Игроку доступна далеко не вся (и слава Богу, а то не идеальный Игрок, а человек и играть бы не стал). В игровом пространстве присутствует своего рода fog of war ("туман войны", FOW), конфигурация которого определяется возможностями Героя по получению информации об игровом пространстве и возможностями Игрока по оценке этой информации.

В общем случае, FOW влияет на точность оценки координат предполагаемой С-точки или С-области, то есть сходящиеся изолуды уходят в FOW до того, как становится ясно, где именно они сходятся и сходятся ли вообще. Кроме того, состояние Системы из-за действий Героя меняется - идёт перемещение по некоторой траектории в игровом пространстве, в общем случае не изолуде.

Отсюда Алгоритм Героя, в предположении, что Герой находится в S-точке, будет выглядеть следующим образом.

1. Сбор доступной информации Героем.
2. Оценка собранной информации Игроком.
3. Проектирование множества изолуд (то есть умозрительное представление Игроком некоторого множества развитий событий).
4. Оценка их сходимости к некоторой точке или области игрового пространства.
5. Выбор наилучшей по сходимости точки или области (B-точки) при исключении из рассмотрения Fd-точек.
6. Если сходимость к B-точке всё равно хуже заранее заданной, то -
6.1. Определение точки в свободном от FOW игровом пространстве (I-точки), пребывая на которой, Герой может в наибольшей степени уменьшить уровень FOW в В-точке (получить информацию о ней).
6.2. Принятие целью I-точки.
7. Если сходимость к B-точке лучше или соответствует заданной, то принятие целью B-точки.
8. Определение траектории к текущей цели (то есть последовательности действий Героя по такому изменению Системы, которое приведёт к нужному состоянию - B-точке или I-точке, смотря что выбрали).
9. Движение по определённой траектории на заранее заданную дискрету (то есть исполнение некоторой части определённой в предыдущем пункте последовательности действий).
10. Если Герой не находится в Fw-точке, то вернуться на п.1.

Очень простой пример. Герой заявляется в город, где правит ацкий колдун, сидящий в архетипическом Чёрном Замке и делающий оттуда горожанам всякие пакости. Примем, что Игра заключается уничтожением колдуна. Итак, Герой начинает действовать. Он собирает сведения и приходит к выводу, что при большинстве вообразимых развитий событий колдуна придётся навещать на рабочем месте, т.е. в замке - определена B-точка. Однако Герой ни черта не знает ни об уязвимости Замка, ни о страже, ни о возможностях колдуна, то есть FOW B-точку застит качественно. Тогда Герой начинает думать, а где бы чего разузнать. Ага, в кабаке собираются местные, обмениваются историями - I-точка. Герой идёт в кабак, причём по дороге то и дело проверяется на предмет слежки (см. п. 9). Если слежка есть, то этот факт надо оценить, добавить в копилку и, возможно, пересмотреть тактику. Если нет, то Герой доходит до I-точки, где подают пиво.

Предположим, в I-точке Герою втолковывают, что колдуна можно уделать только мечом-кладенцом. Хоп! П.1, 2, 3 - и прежняя B-точка меняется - ибо какой смысл лезть в Замок без кладенца, на убой? Появляется новая B-точка - меч-кладенец. Где, неизвестно, FOW мешает. Стало быть, определяем I-точку, то есть ищем Бабу-Ягу, которая всё это разъяснит... И так далее.

Разумеется, успех Алгоритма Героя сильно зависит от таких характеристик, как способности Игрока по оценке информации, дисциплины воображения Игрока (умения генерировать умозрительные представления развития событий), а также приемлемых для Игрока порога сходимости изолуд и величины дискреты.

Естественно, любая Система, в которой идёт Игра, конечна; то есть число объектов, субъектов и их свойств конечно; следовательно, мерность игрового пространства тоже конечна. Равно как и реализующие Систему мощности тоже ограничены. Отсюда приходим к упрощениям - например, колдун должен быть непременно убит, а не парализован, не пострижен в монахи, не отправлен в длительный творческий отпуск. Далее - колдун должен быть убит мечом-кладенцом, а не отравлен и не затрахан до смерти. Следовательно, должен быть честный бой. Сумма упрощений: когда Герой появляется в окрестностях колдуна, тот его атакует - с разговорами или без, но атакует. Если Герой оказался без меча, колдун, подчиняющийся Сюжету, всё равно его атакует и убивает - вместо Fw-точки получаем Fd-точку, но Финиш всё равно достигнут.

Эти упрощения в общем можно описать как некую окрестность С-точки, при попадании в которую изолуда (или просто траектория состояний Системы) начинает стремиться к С-точке, становящейся, таким образом, аттрактором. Получается что-то вроде воронки. Кто ходил в Morrowind, тот знает - в дикой местности герой оказывается возле монстра, привязанного к какому-то квадрату карты - тот его атакует. Герой, если не в силах драться, убегает, монстр возвращается на своё место. Вот тут те же дела, только в игровом пространстве, а не в изображении игрового мира. Описанную окрестность С-точки (грубо - "радиус воронки") я назову дум-окрестностью. Реализовываться эта дум-окрестность может самыми разными средствами - вовсе не обязательно боем.

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

Отмечу так же, что в игровом пространстве могут быть расположены и аттракторы, не относящиеся к С-точкам - заранее установленные или случайным образом генерящиеся (субквесты, например, или атаки случайных грызунов при транзите Героя из локации в локацию).

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

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

Алгоритм обхода барьера также сводится к сканированию точек вокруг него с целью определения его формы в игровом пространстве. Задача эта может усложняться фактом действия в дум-окрестности, то есть неверный выбор порядка сканирования может спровоцировать движение Системы к аттрактору, когда Игрок ещё не готов к этому.

Вот, пожалуй, и всё на сегодня. Возможно, займусь ещё описанием роли Мастера как части Системы. А в общем, подход богатый и весьма формализуемый. А то задолбали, извините, новые компьютерные РПГ на сюжетах экономить. Нету вдохновения, давайте алгеброй.

Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 19 comments