Семь обязательных требований к качественной парсерной игре

Игры с текстовым вводом команд, чаще называемые просто парсерными, до сих пор оказываются способны предложить уникальный геймплей, не имеющий достаточно близких аналогов ни в одной другой разновидности компьютерных игр. Это обеспечивается детализированной физической симуляцией игрового мира в совокупности с реализацией высоковариативных способов манипулирования множеством его объектов. Визуализация игрового процесса и/или явное указание игровых команд в интерфейсе приводит к снижению возможностей информативного представления большого числа вариантов взаимодействия, и позволяет парсерам сохранять абсолютное лидерство в той самой нише компьютерных игр, построенных на сложном высоковариативном манипулировании симулированным миром.

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

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

Подразумевается, что читатель уже знаком с основными техническими особенностями написания парсерных игр, поэтому в тексте не будут объясняться базовые понятия, а также особым образом подчёркиваться отличающиеся в зависимости от контекста значения терминов, например, «объекта» как абстрактной сущности в парадигме ООП и как предмета игрового мира, «глагола» как лексической единицы и как неэквивалентного понятия в рамках парсерной платформы и так далее.

Существование всех упомянутых объектов

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

Причём, это касается упоминаний объекта под всеми названиями: как под основным, так и под синонимичными в расширенном описании. То есть объект должен отзываться как на своё основное имя, так и на все синонимы, использованные где-либо в остальном тексте игры, а также на какое-то количество неявных, но высоковероятных для использования синонимов, например, для названий в уменьшительно-ласкательной форме имеет смысл добавлять синоним в общей форме («грибок» = «гриб»), для предметов с названием во множественном числе форму единственного числа («иголки» = «иголка»), а также по возможности другие очевидные синонимы, даже без их явного упоминания («девушка» = «женщина»).

На конвенциальном уровне из данного правила допускается пара исключений:

  1. Поскольку под объектом игрового мира в данном случае понимается некоторая условная физическая сущность, а не просто любое имя существительное, то считается допустимым не создавать в игре объекты абстрактных вещей, например, голосов в голове героя, или имён существительных, являющихся фигурой речи, например, для пейзажа в описании «Унылый пейзаж скрашивается одиноко стоящей ёлкой». Хотя в некоторых стандартных библиотеках для моделирования мира существуют специальные классы и для объектов такого типа.
  2. В большинстве случаев считается допустимым не создавать физические объекты, выполняющие роль названий направлений движения, например, «дом в для описания „На севере расположен кирпичный дом“. Хотя для игр с высокодетализированной проработкой модели мира характерно создание в том числе и таких объектов, в частности, чтобы обеспечить возможность осматривания удалённого объекта локации, а также сделать возможным не только команду „идти на север“, но и „идти в дом“. Впрочем, наличие таких объектов-направлений в модели мира всё-таки считается в большей степени опционной, а не обязательной частью дизайна парсерной игры.

Тем не менее, в ходе эволюции парсерных игр в разное время использовались некоторые технические приёмы, позволявшие, с одной стороны, пренебречь данным правилом, а с другой, сохранить эргономику игрового процесса на приемлемом уровне за счёт предоставления контекста о существующих объектах дополнительными способами. В целом, можно выделить два основных подхода:

Первый подход основывается на отдельном явном описании объектов, доступных для взаимодействия, то есть происходит разделение описания локации на функциональную и литературную части. Например:

«…
Я в грязном баре.
Предметы в поле зрения: бармен, кнопка, занавес
Другие области: север и запад
Я в грязном баре. За барной стойкой сидит бармен. Над ним висит табличка с надписью «ПИВО — 100 долларов, ВИСКИ — 100 долларов». Место меблировано не очень хорошо. На одной из стен висит занавес. На ближней стене есть кнопка. Над головой медленно вращается вентилятор, гоняя застоявшийся воздух.
Что мне делать?
…»

Этот подход был распространён в конце семидесятых — первой половине восьмидесятых годов. Не в последнюю очередь потому, что на том этапе многие парсерные игры разрабатывались в процедурной, а не объектно-ориентированной парадигме, так что моделирование мира было намного более трудоёмким процессом, который многие авторы предпочитали облегчать игнорированием несущественных объектов. В частности, эрудированные игроки возможно узнали в вышеприведённом примере одну легендарную игру 1981 года.

Второй подход основывается на выделении объектов, существующих в модели мира, различными средствами визуального форматирования. Например:

«…
Возле пещеры

Ты стоишь в ярком солнечном свете прямо перед большой, тёмной и зловещей пещерой, лежащей к северу. На юге расположена извилистая тропа, ведущая обратно к цивилизации.
…»

Этот подход стал ограничено использоваться во второй половине девяностых годов, когда основные платформы для написания парсерных игр получили поддержку средств визуального форматирования и даже гипертекста, позволявшего не просто выделить название объекта, но и сделать его активной ссылкой, по клику на которую могло выполняться основное действие, например, осматривание для предметов или переход для направлений. В частности, эрудированные игроки возможно узнали в вышеприведённом примере одну известную демо-игру 1998 года, как раз демонстрировавшую поддержку HTML.

Впрочем, оба этих подхода в конечном счёте широко не прижились, так как техническое развитие парсерных платформ привело к существенному облегчению моделирования мира, да и явное выделение объектов в описании привело к разрушению сильных сторон геймплея, базирующегося на создании модели мира, высокая вариативность состояний которого и неявные пути взаимодействия для прохождения призваны обеспечить тот самый вызов для игрока.

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

Явное упоминание в тексте нетипичных действий

Не смотря на то, что парсерные игры у неподготовленного игрока могут вызывать иллюзию практически неограниченной интерактивности (по крайней мере, первые минуты), в реальности 99% их геймплея строится на нескольких десятках базовых универсальных действий, обозначающих типовые варианты взаимодействия с физическим миром. Причём, это ограничение является введённым и удерживаемым опытными авторами вполне осознано, потому что как раз за счёт него и обеспечивается эргономичность системы управления через ввод произвольных команд, так как именно около 70-80 глаголов и является естественным количеством достаточно очевидных действий.

По этой причине, когда в конкретной игре появляется необходимость создать новый глагол, не подпадающий ни под одно из стандартных действий, автор должен дать достаточно явный намёк на него: либо прямым упоминанием, например, в описании предмета „Это острое шило, которым можно что-нибудь проколоть“, либо косвенно через очевидное словообразование от названия предмета, например, если вводится глагол „скрести“, то для этого в игре должен быть не предмет „шпатель“, а предмет „скребок“.

При нарушении этого правила, автор вынуждает игрока заниматься угадыванием нужного глагола, что является признаком низкого качества парсерной игры.

Отсутствие отдельных ключевых действий свыше минимально необходимого количества

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

Например, если в какой-то момент игроку дают стопку документов и сообщают, что ему нужно с ними ознакомиться, то не следует разводить по функционально различающимся действиям реакции на команды „читать документы“ и „ознакомиться с документами“, допустим, предполагая логику, что „читать“ — это чтение только верхнего листа, а „ознакомиться“ — это чтение всей стопки.

Если игрок выполнит определённое действие, но для прохождения игры будет предполагаться выполнение схожего отдельного действия с синонимичным названием, то он может попасть в тупик, потому что будет считать, что логически обусловленное действие уже выполнил, но оно ни к чему не привело, так что решение в чём-то другом. Присутствие такой ситуации в парсерной игре является признаком её низкого качества.

Отсутствие различной обработки нескольких действий, синонимичных в определённом контексте

В отдельных случаях два функционально отличающихся действия могут оказаться достаточно близкими по смыслу. Автор должен учитывать данную возможность и реализовывать для таких ситуаций приведение этих действий к одной реакции игрового мира.

Например, если в игре встречается книга, то вполне логичной может являться попытка её чтения как командой „читать книгу“, так и командой „открыть книгу“.

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

Логичные и последовательные реакции на действия

Процесс построения модели игрового мира заключается в симуляции типового поведения предметов в ответ на типовые же действия. То есть условные двери могут открываться и закрываться, условные книги могут читаться, условные переносимые предметы браться и так далее. Поэтому автору парсерной игры крайне важно обеспечивать логичные реакции на стереотипные действия с теми или иными объектами.

Например, если в модели мира есть условный пенёк, то не обязательно реализовывать возможность на него сесть, но он не должен выдавать стандартную реакцию как для стены, типа „Но на/в пенёк невозможно войти, встать, сесть или лечь“. Следует адаптировать под контекст ситуации основные стереотипные действия с объектом игрового мира, в том числе и для объяснения невозможности выполнения того или иного вполне логичного действия.

Кроме того, реакции на действия в отношении объекта не должны противоречить друг другу и логике происходящего, например, попытка понюхать объект с названием „вонючая рыба“ не должна приводить к реакции „вонючая рыба никак не пахнет“, а в игре про лазутчика попытка кричать не должна оставаться без наказанной, если реакция заключается в реальном крике, а не объяснении невозможности или неуместности этого действия.

Когда те или иные действия приводят к нелогичным или противоречивым реакциям, это создаёт впечатление общей неряшливости модели мира, что разрушает эффект погружение и является признаком некачественной парсерной игры.

Отсутствие неразрешимых коллизий с названиями объектов

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

Например, в двух отдельных локациях вполне допустимо существование двух разных объектов с одинаковым названием „шкаф“, если модель мира не допускает возможность передвижения этих объектов в одну локацию. Но в этих шкафах не должно быть двух разных объектов с одинаковым названием „книга“, если в игре доступна возможность поместить эти два объекта в одну локацию, потому что после этого будет невозможно обратиться к конкретной книге:

«…
>осмотреть книгу
Когда вы писали „книгу“, то имели в виду: книгу или книгу?
…»

Самым простым приёмом обеспечения уникальности названий похожих объектов является использование разных прилагательных. Однако следует учитывать, что если эти прилагательные упомянуты не в названиях, а в расширенных описаниях, то игрок может их забыть или в принципе не успеть их прочитать до возникновения описанной проблемы, а осмотреть каждый предмет по отдельности он уже не сумеет, поэтому данные прилагательные желательно выносить прямо в название:

«…
>осмотреть книгу
Когда вы писали „книгу“, то имели в виду: чёрную книгу или белую книгу?
…»

Отдельные парсерные платформы с развитым синтаксическим анализатором позволяют справиться с такой ситуацией за счёт поддержки ключевого слова „любую“, так что игрок сможет взять первую попавшуюся книгу, вынести её в другую локацию и разрешить коллизию названий, но в любом случае полагаться на это не стоит.

Абсолютно не важно, вытекает ли нахождение двух объектов с одинаковым названием в общей области досягаемости из логики сюжета или же это может быть лишь следствием нелогичных действий игрока. Если такая ситуация в модели мира в принципе возможна, то это признак некачественной парсерной игры.

Разумеется, в данном случае речь не идёт о ситуации, когда самой логикой игры обуславливается необходимость полной эквивалентности объектов, как, например, в игре «Четыре брикета», основной пазл которой намерено построен на том, что игрок в принципе не должен иметь возможности без дополнительных манипуляций точно различать несколько одинаковых объектов. Это особый случай, требующий определённой функциональности синтаксического анализатора, который будет автоматически разрешать коллизии названий объектов.

Отсутствие ключевых для прохождения объектов, неупомянутых в описаниях

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

Применительно к парсерным играм следует соблюдать требование обязательного упоминания всех объектов, существующих в модели мира. Особенно, если это объекты, являющиеся ключевыми для прохождения игры, а не просто декорации для создания глубины мира, типа стен в помещении, которые реализуются на всякий случай, но функциональной нагрузки не несут.

Например, если игрок заходит в помещение, где на стене что-то написано, то необходимо в каком-то из описаний всё-таки сообщить, что надпись существует. Причём, сделать это достаточно явно, а не в очень расплывчатой форме, типа „кажется, здесь что-то есть“.

Существует понятие уровня описаний в игре. Так, общее описание локации, выводимое при входе, — это первый уровень, описания предметов, упомянутых в описании локации, — это второй уровень и так далее.

Не обязательно предоставлять всю информацию на первом уровне, но она должна быть доступна при последовательном восходящем движении по уровням. Например, в описании помещения можно упомянуть стены, в описании стен упомянуть надпись, а ключевую информацию предоставить при чтении надписи. Однако нельзя делать надпись с ключевой информацией, но нигде не упоминая, что эта надпись здесь в принципе есть.

При этом, в парсерных играх сложились определённые традиции, способствующие ослаблению данного правила в отношении нескольких объектов. В частности, объект самого игрока традиционно подразумевается по умолчанию, хотя и постоянное обращение к читателю в принципе можно трактовать как его упоминание. Кроме того, обычно в модели мира присутствует объект земли или пола без постоянного явного упоминания. Однако даже в этих случаях, если игровая логика ключевым образом завязана, например, на внешность главного героя или рисунок на полу, то рекомендуется в определённый момент всё же дать более очевидное указание на существование этих объектов, заостряя внимание игрока.

В общем случае, если для прохождения игры требуется формулировка команд с обращением к объектам, которые нигде в описаниях не упомянуты в достаточно явном виде, то это признак некачественной парсерной игры.

Заключение

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

Любой опытным автор парсерной игры знает, что разработку практически невозможно закончить, а можно только приостановить на каком-то промежуточном уровне достижения идеала реализации игрового мира и реакций его объектов. Будда Шакьямуни как-то сказал, что пути к счастью не существует, а сам путь и есть счастье. Это в полной мере подходит и к процессу разработки парсерной игры, идеал которой понятен, но в сущности недостижим, и смысл заключается в постоянной реализации тех или иных компонентов и признаков этого идеала. Важно лишь понимать, что разработка парсерной игры с нарушением вышеприведённых правил — это не путешествие по такому пути, а просто прыжок в придорожную канаву и барахтанье там на одном месте.

2 комментария

goraph
Я б добавил в первый пункт, что у каждого объекта должны быть ещё и все УПОМЯНУТЫЕ синонимы. Это очень часто забывают сделать. Я понимаю что все возможные синонимы в принципе невозможно перечислить, да это и не нужно, но часть соглашения автора и игрока состоит в том, что игрок обращается к объекту так, как он видит его перед собой в игре. Потому если игра пишет — «Вы видите толстенный фолиант.», то ">осмотреть фолиант" тоже должно работать. А не только ">осмотреть книгу".
Nikita
Да, вы правы. Спасибо, добавил. В том числе с упоминанием желательности неявных, но высоковероятных синонимов, типа «гриб» для объекта «грибок».