Динамическое формирование сюжета (http://taplap.ru/articles.php?op=show&aid=36)
Отправлено: Chipollino
2001-12-18 06:28:15

Автор: SolitaryPilgrim

Теория, не получившая отражения на практике. А может и получившая, но автор статьи ничего подобного не видел :)
В этой статье я затрону большую проблему. Как сделать игру более интересной? Недостатком любого квеста является тот факт, что пройдя игру однажды, игрок почувствует потребность в новых приключениях, но проходить второй раз не захочет. Правильно! Квест тем и хорош, что заставляет игрока думать, искать, решать загадки. А можно ли сделать так, чтобы каждый раз (ну или не каждый:)) формировался новый сюжет с новыми персонажами, предметами и загадками? Можно! Но это сделать не так-то просто. Другой вопрос - насколько интересно и, главное, логически непротиворечиво будет это формирование.
Сейчас я попробую представить простейшую модель динамического создания сюжетов.
1) Комнаты. Их количество должно быть достаточным, чтобы выбрать из всего множества некоторые и создать некоторый лабиринт. Например, описывается 200 базовых комнат. Напомню, что под комнатой понимается любая локация в игре из которой есть (или нет(ловушка)) выходы. Описание каждой комнаты статично, за исключением тех случаев, где к локации жестко привязан какой-нибудь триггер. Например, подъёмный мост, с помощью которого можно пройти на север. Формирование карты должно быть непротиворечивым, а именно:
  • из любой комнаты в любую можно пройти (сразу или выполнив некоторые действия).
  • не должно быть одиночных комнат, к которым нельзя подойти.
  • смена комнат должна быть плавной. Такое чередование, как (например, [комната],[болото], [палуба парохода]) недопустимо
    2) Персонажи. Их количество зависит от степени разнообразия сюжета. Оптимальное количество, но не идеальное, равняется 10-20. Описания персонажей также статичны, за исключением тех случаев, когда на персонажа повешен триггер, или система триггеров. Например,
  • Грустный дракон [subj1]
  • Дать дракону конфету [obj1]
  • Дракон обрадовался подарку, повеселел [trg1], и в знак признательности наградил [trg2] путешественника хромированным шлемом молнии [obj2]
    Как видно из примера, к субъекту прикрепляются два триггера.
    3) Предметы. Чем их больше, тем лучше. Поверьте, иногда предметы применяются совсем не по назначению. Чем интереснее получится набор предметов для конкретного сюжета, тем большее воображение понадобится игроку, чтобы пройти игру.
    4) Цель игры. В каждой игре есть определенная цель, например, найти клад, спасти пленников, поймать нечисть, пробраться на концерт любимой группы и т.д. При динамическом формировании сюжета автор должен предусмотреть несколько вариантов игровой цели. Обычно, Цель выполнима, когда игрок попадает на нужную локацию и выполняет нужные действия. Наша задача заключается в том, чтобы локация не была одной и той же для разных сюжетов, и действия (в идеале) должны тоже различаться!

    Есть два подхода (известные мне) формирования динамического сюжета. Это новая инициализация при каждом запуске игры и создание сюжета по результатам прохождения игры. Второй вариант особенно сложен, т.к. в нём должны контролироваться не только создаваемые события, предметы, персонажи, но и уже произошедшие... Первый вариант является "более простым".
    Итак, что мы имеем?
    200 комнат
    20 персонажей
    40 предметов
    5 целей
    Как из всего этого набора составить игру, точнее, игровое пространство?

    1) Необходимо учитывать, какие комнаты могут быть использованы для целей, какие комнаты - для персонажей и предметов, а какие являются связующими... Проведя иерархию, мы определим, что, например, путешествую по [кораблю], мы никогда не попадем в [болото]!
    2) Персонажи. Нельзя в один сюжет "запихнуть" всех персонажей одновременно. Ничего хорошего из этого не выйдет. Необходимо выбрать 30-50 процентов из предопределенных персонажей и разместить их там, где позволяют комнаты (смотри п.1)
    3) Аналогично поступаем с предметами. Напомню, что предметы могут быть неявно представлены на локации с помощью триггеров (пример с грустным драконом).
    4) Создаем набор триггеров. Первоначально, они вешаются на комнаты, затем на персонажей и потом на предметы. Так, например, "золотой ключ" может открывать двери, а "серебряный ключ" сгодится только в роли метательного предмета :)

    Когда карта создана, последнее, что необходимо сделать - это выбрать стартовую локацию. Если она будет меняться от игры к игре, то такая тактика не позволит "скучать" игроку.
    Если у Вас возникли другие вопросы по данной теме - пишите письма...

    Хотите узнать больше - посетите GCM-Site.