В рамках фестиваля парсерных игр Парсерфест-2018, человеком, похожим на Юрия Павленко, была выпущена игра «На фоне ковра», представляющая собой фэнтезийное приключение с элементами карикатурной эротики, местами претендующими на пародийную текстовую порнографию, но по факту всё это время не выходящими за рамки детской шалости. Наряду с «Четырьмя брикетами» и «Фантазией» эта игра формирует на Парсерфесте-2018 фракцию хранителей традиций классических парсерных игр.
С точки зрения консервативных ценностей интерактивной литературы — это сильнейшая работа Парсерфеста-2018, хотя уже с первого экрана создающая впечатление, что местами автор был то ли не очень внимателен, то ли откровенно не совсем трезв, когда её писал. Вообще отсутствие вычитки даже первого экрана — это какой-то верх неуважения к игроку, не говоря уже об использовании в игре с такой механикой бета-версии движка, в котором поломана важная функциональность, за что, конечно, не мешало бы наказать автора. Ну а как в наших условиях можно наказать автора, кроме как выдать секрет решения главного пазла игры, так что ниже по тексту это и будет сделано, хотя, конечно, под спойлером, но зато уж со всеми потрохами.
> «Работа казалась нетрудной — доставить ковёр из одного района в другой. Если бы не маленькая «страховка», которая понадобилась работодателям. Если бы внутри ковра был бы не труп. Если бы не комендантский час и не цветовая дифференциация плащей внутри города.»
>
(Рецензия написана по версии игры Serial number 180513)
#### Сюжет
Вы играете за побитого жизнью искателя приключений, который путешествует с Края Света обратно домой и по дороге заходит в очень колоритный город Морлот, населённый людьми с говорящими польскими фамилиями, хотя называющими друг друга не панами, а господами. Здесь вам подворачивается казалось бы простая работёнка — отнести ковёр по указанному адресу, но это малозначительное поручение оборачивается крайне опасным и запутанным приключением, так как для гарантии заказчик травит вас страшным ядом Кульдаба, а противоядие вы можете получить только у получателя ковра, но добраться до него оказывается не такой уж простой задачей.
Выясняется, что на ночь город перекрывается и попасть из одного квартала в другой можно только в специальной одежде:
> «Город делится на четыре района разных цветов. На юго-западе Чёрный Район, место обитания нищих, простолюдинов и гостей города. На северо-западе Золотой Район, где живут аристократы, богатые торговцы и знать, там же находится и Дворец Чистого Золота, настоящее чудо города. На северо-востоке известный далеко за пределами Морлота Красный Район, с кварталами развлечений, азартными играми и куртизанками. На юго-востоке расположен Белый Район, место обитания воинов, стражников и жрецов.»
>
Вы оказываетесь совсем неподготовленным к таким приключениям, имея лишь пропуск в Чёрный Район, да к тому же быстро обнаружив, что в ковре спрятан обнажённый женский труп. Однако действие яда уже началось, так что надо действовать и вам.
#### Литературная составляющая
Уже на первом экране игра наносит мощный удар поистине шизофазической прозы, написанной с перескоком лица, от которого идёт повествование. Абсолютно монолитный вступительный текст, который описывает последовательность событий, происходящих в течении всего лишь пары десятков секунд, внезапно переходит с рассказа от первого лица на рассказ от второго:
> « Я протянул женщине руку, и тут же её пронзила острая боль. Вскрикнув , я обнаружил на ладони небольшой порез.
>
> — А это маленькая страховка, — сказала жен ~~ш~~ щ ина. — Теперь ты отравлен страшным ядом Кульдаба, и умрёшь в страшных муках, если не доставишь ковёр Черепнакольскому до рассвета! Он даст тебе противоядие.
>
> Ты хотел было возмутиться, но телохранитель твоей заказчицы сделал такое грозное выражение лица, что ты лишь грязно выругался, глядя как отравительница исчезает в ночи.»
>
Вероятно где-то между этими абзацами автор принял амброзии и перевоплотился из одной личности, напрямую ассоциирующей себя с протагонистом, в другую, ассоциирующую себя с игровым движком.
На фоне таких стилистических особенностей текста отсутствие указания автора на стартовом экране и где-либо ещё в игре выглядит уже не как оригинальная позиция, а просто как следствие расслабленного процесса разработки. Правда здесь зато можно прочитать список неких лиц, наличие которых после такого текста, пожалуй, полностью дискредитирует саму идею вычитки игр активными членами сообщества окрестностей iFiction.Ru, наглядно доказывая, что многие там неспособны внимательно прочитать даже первый экран.
Впрочем, всё это не слишком портит игру как таковую, но, в конце концов, кто-то же должен был на всё это обратить внимание. Пусть это буду я, если за всё время с момента релиза никого больше не нашлось. Видно пора создавать общество защиты прав игроков РИЛ, которое будет отстаивать их фундаментальное право на текст, согласованный по родам, числам, лицам и падежам.
Основной текст игры написан довольно лёгким шутливым языком, читающемся без особых затруднений, что для пазло-ориентированных парсеров, пожалуй, в самый раз. Хотя местами автор и теряет запятые, причём, что характерно, обычно на концах причастных и деепричастных оборотов, в целом справляясь с их началом.
Встречаются и двусмысленности, которые может быть получились и случайно, но в любом случае хорошо иллюстрируют частный случай художественного превосходства текстовых изобразительных средств над графическими, потому что визуально этой забавной неоднозначности достичь невозможно:
> «Статуи изображают древних героев — обнажённых мужчин с огромными мечами…»
>
Наверняка старина Зигмунд с очень большим интересом ознакомился бы со всей этой игрой.
Правда периодически автор пытается не очень удачно натужно шутить, например, в рамках отсылки к печально известной среди хардкорных игроков игре «Ученик Некроманта». Да и местами начинает сильно повторяться:
> «…
> Квартал Пик
> Длинные фаланги одинаковых серых домов, чисто вылизанная мостовая без единой соринки — всё здесь параллельно и перпендикулярно, а кое - где даже посыпано песком.
> К западу — Ворота в Чёрный Район. К востоку — Переулок Ножа. К северу — Площадь Топора.
>
> …
>
> Улица Мечей
> Длинные шеренги одинаковых серых домов, чисто вылизанная мостовая без единой соринки — всё здесь параллельно и перпендикулярно, а кое - где даже посыпано песком.
> К западу — Храм Священного Плаща. К северу — Ворота в Красный Район. К югу — Площадь Топора.
> …»
>
Также стоит отметить несколько путанную манеру описания ворот в городе. Так, например, ворота между Чёрным и Белым районами, если мы находимся в Чёрном Районе, называются в основном описании воротами в Белый, а уже чуть ниже в перечислении направлений воротами в Чёрный Район:
> «…
> Ворота в Белый Район
> Высокая стена на востоке разделяет районы. Огромные ворота ведут в Белый Район.
> К западу — Улица Тысячи Попрошаек. К востоку — Ворота в Чёрный Район.»
>
Да и в целом в описаниях локаций с воротами опять же прослеживается невнимательность автора, потому что в независимости от их местоположения в тексте фигурирует какая-то заклятая стена на востоке, хотя с точки зрения географии игрового мира эта самая стена на востоке будет лишь для некоторых из ворот, а для других она должна быть с других сторон:
> «…
> Ворота в Чёрный Район
> Высокая стена на востоке разделяет районы. Огромные ворота ведут в Чёрный Район.
> К западу — Ворота в Белый Район. К востоку — Квартал Пик.
>
> …
>
> Ворота в Золотой Район
> Высокая стена на востоке разделяет районы. Огромные ворота ведут в Золотой Район.
> К югу — Квартал Лавочников. К северу — Ворота в Чёрный Район. »
>
И так далее для всех ворот в игре.
Ну и да, думаю, вы уже обратили внимание на несколько однообразную манеру описания направлений с отрывом от текста локаций. Впрочем, у меня есть гипотеза, которая объясняет многие из этих проблем: от шаблонизированных обозначений направлений до путанного именования ворот. Вероятно автор хотел сэкономить усилия посредством кодогенерации, но в итоге подобно унтер-офицерской вдове высек сам себя, кругом налажав в тексте.
#### Игровая механика
Одно из первого, что замечаешь при прохождении игры, — это пустота мира. По большому счёту, по пазлам «На фоне ковра» — это игра на десяток локаций, но их там в несколько раз больше. Вероятно автор хотел одним из пазлов сделать затруднённую навигацию по миру, требующую рисовать карту, но, во-первых, на мой вкус, географические пазлы — это одно из худшего, что можно взять из парсеров старой школы, а во-вторых, чтобы заставить серьёзных игроков заниматься картографированием игры, надо стараться намного сильнее, по крайней мере, у меня не возникло никаких проблем с удержанием карты в голове, так что получилось просто рутинно, а не сложно. Парсерную гвардию таким не проймёшь! Когда игрок не любит делать карты, он насобачивается до такой степени, что может держать в голове на порядок большие миры. Да и если в какой-то момент у автора получится сломать такого игрока, то, скорей всего, игра превратиться уже в выхолощенное барахло, так что её просто выключат без особого сожаления.
Если у автора плохо с интуитивным пониманием меры, то во время моделирования мира надо использовать формальные ограничения, например, взять за правило, что в каждой локации должно быть минимум 2 чисто декоративных объекта, минимум 2 интерактивных объекта, с которыми можно будет взаимодействовать, и минимум 1 переносной объект, необходимый для решения пазлов из других локаций. Когда не удаётся вписать ещё одну локацию в эти правила, то она просто лишняя. Работайте так, если по-другому вас заносит.
Да и даже если оставлять наполненность мира на таком же уровне, то большую карту всё равно можно было как-нибудь обыграть, например, ввести ночные патрули, звон оружия которых был бы слышен на соседних локациях, так что надо было бы ещё перемещаться с учётом необходимости прятаться от дозоров. Но в «На фоне ковра» ничего такого нет, там просто в несколько раз раздутая карта без всякого смысла.
С учётом проблем в тексте, отмеченных выше, у меня есть серьёзные подозрения, что автор игры взял какой-то редактор карт с функцией кодогенерации Inform 6, после чего нарисовал там много локаций с путанными переходами, а потом сгенерировал объекты локаций, но вот с их наполнением уже не очень справился, да в добавок облажался с генерируемым описанием направлений, например, как с путанными названиями ворот, которые, вероятнее всего, брались автоматически как название соседней локации. Повторы целыми фразами в описаниях разных локаций — это тоже следствие того, что автор просто не справился с объёмом того мира, который для себя сгенерировал. В общем получилось всё как-то не очень, и игроки теперь царапаются об незашлифованные напильником участки игры.
В контексте моих подозрений о внутренней кухне разработки «На фоне ковра» и статьи «Автоматическое построение карт в парсерных играх на русском» замечу, что лично мне не очень бы хотелось, чтобы парсерные игры превратились просто в поле битвы каких-то прикладных инструментов автора и игрока. Всё-таки парсерная игра, в первую очередь, должна быть логическим пазлом для игрока, а не тренажёром памяти, тестом навыков пространственного представления или чем-нибудь ещё. Ну и первый шаг здесь за авторами, так что, господа, сознавайте свою ответственность перед жанром.
Модель мира в «На фоне ковра» местами выполнена халтурно:
> «…
> Несмотря на название, Тупик Гробокопателей довольно глухое и мрачное место — отвесные кирпичные стены, покрытые ядовитым плющом , окружают пустырь, где-то вдалеке воют собаки , а если неосторожно ступать по перекопанной земле в кочках и ямах, то можно и ногу себе свернуть к чёртовой матери.
> >прислушаться
> Никаких необычных звуков нет.
> …
> Жёлтого цвета флаг развивается над Рыночной Площадью.
> >взять флаг
> Ты попытался сорвать флаг, но он подвешен слишком высоко , возможно именно для того, чтоб такие как ты его руками не трогали.
> >потрогать флаг
> Никаких необычных ощущений нет.
> …»
>
Моделирование хорошего мира в парсерной игре — это большая работа в том числе и над самим собой, практически аскеза. Следует учитывать все типы чувственного восприятия героя и реализовывать последовательные реакции на все действия для особых случаев, типа удалённых объектов (см. обсуждение методик разработки в комментариях к рецензии на игру «Все или ничего»).
Заметьте, не слова про необходимость кастомных реакций на нелогичные действия, типа «лизать стены». Это как раз не то, к чему следует стремиться и на что следует распыляться парсерным авторам, хотя в русскоязычном сообществе любителей интерактивной литературы попадаются члены секты лизунов, которые проповедуют практику применения этого и других контекстно немотивированных действий ко всем объектам во всех играх, но это ересь и не имеет никакого отношения к парсерному канону. Эти заблудшие рано или поздно закончат на костре из книг-игр с повешенными на их грудь избранными цитатами нелогичных команд из транскриптов, так что не стоит к ним примыкать.
Однако в целом игра «На фоне ковра» выдержана в духе квестов старой школы на достаточно хорошем уровне. Пазлы не имеют особых проблем с логичностью, а также смоделированы и вписаны в игровой мир вполне неплохо, например, нет проблемы «ключа у двери», когда загадки решаются при помощи предмета, который валяется в той же локации. Некоторые предметы применяются для решения более чем одного пазла, что является одним из признаков хорошей проработки. Да и игровой мир, хоть и пустоват, но реально используется, то есть требует интенсивного перемещения по нему для прохождения, причём, предоставляет достаточную свободу передвижения, а не захлопывает локации за спиной, продавливая вас в определённом направлении. Всё это обеспечивает большое число логичных состояний мира, повышая естественным путём сложность геймплея и, как следствие, интересность игры.
Разве что к самому концу игры заметно, что автор немного подустал и откровенно скомкал приключения в Красном Районе, где он не столько реализовывал игровую механику, сколько смаковал специфические описания блуда и разврата. К слову, если вы возмущены происходящем в Красном Районе, то это наоборот лишний повод пройти игру до конца. Почему? А вот пройдёте и узнаете.
Самым сложным местом игры является пазл с рычагами и лампочками в Панели Управления Фонарями из Золотого Района. Для многих игроков он оказался роковым, так что они не смогли из-за этого полностью пройти игру. Данная загадка, конечно, несколько абстрактна и с точки зрения вписанности в антураж игры не является самой изящной, но именно как одиночная вишенка на торте очень неплоха. Для тех, кто из-за этого пазла не смог в полной мере насладиться игрой «На фоне ковра», я привожу под спойлером общий способ его решения, как и обещал в начале рецензии.
Рецепт решения пазла с рычагами и лампочками
Механика данного пазла заключается в том, что у нас есть 9 рычагов, каждый из которых меняет состояние каких-то лампочек. Именно меняет состояние, то есть если она погашена, то он её зажжёт, а если зажжена, то погасит. У каждого рычага свой фиксированный набор лампочек, к которым он привязан. Нам надо, последовательно переключая рычаги, свисти лампочки к такой комбинации, когда они все погашены.
Для решения, сначала следует исследовать поведение каждого рычага и зафиксировать схему его привязки к определённым лампочкам. После этого, имея перед глазами все характеристики рычагов, можно уже приступать к подбору последовательности, выключающей все лампочки.
>
> Позабыты хлопоты,
> Остановлен бег,
> Вкалывают роботы,
> А не человек.
>
Лично я этап исследования делал в Excel, но к моменту подбора перешёл уже на Python. Откровенно говоря, для одного раза наверное быстрее было бы решить руками, чем писать solver, но, во-первых, никогда нельзя быть уверенным, что игру не придётся перепроходить, а во-вторых, надо же было как-то наказать автора за все его безобразия, так что те, кто не хочет самостоятельно повторять вышеописанный алгоритм, могут просто взять под спойлером уже готовый скрипт для решения этого пазла:
Код подборщика решения пазла с рычагами и лампочками
>
> # -*- coding: utf-8 -*-
> # исходное состояние лампочек ( от первой до девятой, 1 - горит, 0 - потушена)
> lamps = [0, 1, 0, 0, 1, 0, 1, 0, 0]
> # привязки всех рычагов к лампочкам (от первой по девятую, 1 - переключает, 0 - нейтрален)
> lever1 = [1, 1, 0, 1, 1, 0, 0, 0, 0] # белый
> lever2 = [1, 1, 1, 0, 0, 0, 0, 0, 0] # жёлтый
> lever3 = [0, 1, 1, 0, 1, 1, 0, 0, 0] # красный
> lever4 = [1, 0, 0, 1, 0, 0, 1, 0, 0] # синий
> lever5 = [0, 1, 0, 1, 1, 1, 0, 1, 0] # оранжевый
> lever6 = [0, 0, 1, 0, 0, 1, 0, 0, 1] # зелёный
> lever7 = [0, 0, 0, 1, 1, 0, 1, 1, 0] # коричневый
> lever8 = [0, 0, 0, 0, 0, 0, 1, 1, 1] # розовый
> lever9 = [0, 0, 0, 0, 1, 1, 0, 1, 1] # чёрный
> # ограничение попыток подбора
> limit = 200
>
> def useLever(lever):
> n = 0
> while n < 9:
> lamps[n] = abs(lamps[n] - lever[n])
> n += 1
>
> import random
>
> i = 1
> commands = ''
> rnd = tmp = 0
>
> while i <= limit:
> if lamps == lever1:
> commands += 'повернуть белый рычаг\n'
> break
> if lamps == lever2:
> commands += 'повернуть жёлтый рычаг\n'
> break
> if lamps == lever3:
> commands += 'повернуть красный рычаг\n'
> break
> if lamps == lever4:
> commands += 'повернуть синий рычаг\n'
> break
> if lamps == lever5:
> commands += 'повернуть оранжевый рычаг\n'
> break
> if lamps == lever6:
> commands += 'повернуть зелёный рычаг\n'
> break
> if lamps == lever7:
> commands += 'повернуть коричневый рычаг\n'
> break
> if lamps == lever8:
> commands += 'повернуть розовый рычаг\n'
> break
> if lamps == lever9:
> commands += 'повернуть чёрный рычаг\n'
> break
> while rnd == tmp:
> rnd = random.randint(1, 9)
> tmp = rnd
> if rnd == 1:
> useLever(lever1)
> commands += 'повернуть белый рычаг\n'
> elif rnd == 2:
> useLever(lever2)
> commands += 'повернуть жёлтый рычаг\n'
> elif rnd == 3:
> useLever(lever3)
> commands += 'повернуть красный рычаг\n'
> elif rnd == 4:
> useLever(lever4)
> commands += 'повернуть синий рычаг\n'
> elif rnd == 5:
> useLever(lever5)
> commands += 'повернуть оранжевый рычаг\n'
> elif rnd == 6:
> useLever(lever6)
> commands += 'повернуть зелёный рычаг\n'
> elif rnd == 7:
> useLever(lever7)
> commands += 'повернуть коричневый рычаг\n'
> elif rnd == 8:
> useLever(lever8)
> commands += 'повернуть розовый рычаг\n'
> elif rnd == 9:
> useLever(lever9)
> commands += 'повернуть чёрный рычаг\n'
> i += 1
>
> if i <= limit:
> solution = open('solution.txt', 'w')
> solution.write(commands)
> solution.close()
> print(f'Найдено решение в {i} ходов. Оно записано в solution.txt\n(Нажмите Enter)')
> else:
> print(f'За {limit} итераций не удалось подобрать решение. Имеет смысл провести повторный подбор.\n(Нажмите Enter)')
> input()
>
Я дважды перезапускал игру для проверки, и, насколько я понимаю, в ней рандомизировано только начальное состояние лампочек, а их привязка к рычагам не изменяется, поэтому, скорей всего, вам потребуется только указать свою текущую комбинацию лампочек в переменной lamps на строке 3, а привязки рычагов на строках 5-13 исследовать заново и изменять в скрипте не придётся.
Код из вышеприведённого спойлера надо скопировать и сохранить в обычном текстовом файле в кодировке UTF-8, ну и назвать его, например, «solution.py». Для запуска нужно скачать и установить на компьютер Python, после чего в командной строке запустить интерпретатор, указав ему путь к скрипту:
python solution.py
Ну или можно заменить вывод результата решения в последних 8 строках скрипта на следующие 4 строки:
>
> if i <= limit:
> print('Найдено решение в %i ходов:\n%s' % (i, commands))
> else:
> print('За %i итераций не удалось подобрать решение. Имеет смысл провести повторный подбор.' % limit)
>
и запустить модифицированный код скрипта в онлайн-интерпретаторе Python, чтобы ничего не скачивать и не устанавливать.
Подбор решения осуществляется псевдослучайным обходом, поэтому число ходов может получаться разным. Лучшее, что получалось у меня, — решение в 2 хода, худшее — в 198 ходов. Достаточно вероятным и приемлемым для последующего ручного воспроизведения в игре является нахождение решения в 10-15 ходов, так что можете ориентироваться примерно на такой результат. То есть перезапускайте скрипт до тех пор, пока не получите удовлетворяющую вас длину решения.
Вот так надо с этим пазлом, а что вы думали? Классические парсерные игры — это вам не трамвай, чтобы просто сел и поехал.
Ближе к самому концу игры встречается ещё один внешне похожий пазл с трубами и вентилями, но он решается достаточно просто, так что спойлерить его я здесь не буду. Если вы сможете дойти до этого места, то наверняка способны решить его самостоятельно, потому что он базируется чиста на стандартной парсерной механике.
В общей сложности на прохождение игры я потратил около пары часов, вместе со всей суетой вокруг пазла с рычагами и лампочками. Но поскольку у вас теперь есть инструмент для его решения, то вы можете сэкономить себе время. Правда после того, как вы пройдёте игру, ну или хотя бы приключение в Красном Районе, то вам откроется секрет намного более быстрого прохождения. Однако если я открою эту тайну, то накажу уже не столько автора игры, сколько самих игроков, потому что они пропустят всё самое интересное.
#### Технические аспекты
Откровенно говоря, мне очень не хотелось поднимать техническую тему парсерных платформ, так как для большинства авторов это вопрос бесконечной агрессивной рационализации собственного нерационального случайного выбора, так как мало кто выбрал платформу осознано, реально достаточно хорошо познакомившись со всеми альтернативами, но для «На фоне ковра» сделать это всё-таки придётся. На Парсерфесте-2018 есть 3 игры, написанные на платформе RInform: одна на стабильном варианте для Z-машины и две на тогда ещё бета версии для Glulx от 13 февраля 2018 года.
То, что в RInform до сих пор безобразно реализовано применение действия ко всем доступным объектам, знают наверное уже и за пределами сообщества любителей парсерных игр. Однако когда мы имеем дело с играми типа «Откуда в Пустоши появились монстры» или «Все или ничего», где интенсивного взаимодействия с объектами не требуется, то ещё простительно, когда они лепят на это место фиговый листок. Но когда в игре с классической квестовой механикой разработчик, вместо того, чтобы наконец-то пропатчить стандартную библиотеку, научив движок отбрасывать фиксированные объекты из списка объектов, к которым происходит обращение по слову «все», просто отключает эту функцию, заменяя её натянутой шуткой, — это откровенное вредительство.
> «…
> >взять всё
> Попробуй лучше команду «Xyzzy».
> >xyzzy
> Ты говоришь волшебное слово, и мгновенно берёшь ВСЁ, применяешь ВСЁ ко ВСЕМУ и с успехом проходишь игру. Ты победил. До свиданья.
> …»
>
Ну а то, что в RInform слабая реализация функциональности составных команд, типа применения действия к группе заданных объектов, последовательное выполнение действий, задаваемых одной командой, и так далее, знает наверно меньшее число людей, но для тех, кто понимает толк в парсерах со сложной механикой, это также уже давно не секрет. Однако, несмотря на это, в «На фоне ковра» взята не версия RInform для Z-машины, где это работает хотя бы на каком-то уровне, а версия для Glulx, где данная функциональность поломана полностью, так что составными командами пользоваться в игре в принципе невозможно.
> «…
> Несмотря на название, Тупик Гробокопателей довольно глухое и мрачное место — отвесные кирпичные стены, покрытые ядовитым плющом , окружают пустырь, где-то вдалеке воют собаки, а если неосторожно ступать по перекопанной земле в кочках и ямах, то можно и ногу себе свернуть к чёртовой матери.
> К северу — Улица Угольщиков.
> Прямо на земле лежит большой ковёр. Он свёрнут.
> >о стены. о плющ. о землю. о ямы. о кочки. о ковёр. о себя. и
> Глухие стены , покрытые ядовитым плющом , окружают Тупик Гробокопателей со всех сторон.
> Этот глагол непонятен.
> …»
>
Впрочем, автор «На фоне ковра» пошёл ещё дальше и ко всем общим багам стандартной библиотеки RInform добавил и эксклюзивные, например, поломав обработку комментариев:
> «…
> >* комментарий
> Этот глагол непонятен.
> …»
>
Сломанные комментарии — это, конечно, не очень критично для геймплея, но просто противно. Ещё в начале двухтысячных в русскоязычном парсерном сообществе было принято решение, что мы, в отличие от англоязычной сцены, берём поддержку комментариев сразу в стандартную библиотеку, потому что у нас выше культура и богаче духовность, так что нам всегда есть, что написать помимо команд: либо для автора, либо даже просто как заметку для себя, чтобы потом что-то уточнять по транскрипту. Ну а чуть позже в качестве основного символа комментария был закреплён знак звёздочки «*», потому что в отличие от первоначально использовавшегося знака больше «>», звёздочку можно вводить со стандартной русской клавиатуры без переключения раскладки. И вот теперь появляются какие-то ревизионисты, которые пытаются расшатывать скрепы русского парсера и убирать функциональность комментариев. Это ужасно, потому что у парсерных игроков при виде сообщения об ошибке распознавания команды всегда дёргается глаз, ну и особым шиком считается пройти игру, ни разу не увидев такие сообщения.
Мораль у всего этого очень простая: парсерные игры со сложной квестовой механикой требуют хорошо работающего синтаксического анализатора с расширенной функциональностью команд взаимодействия с миром, и если вы не способны обеспечить это самостоятельно в рамках какой-то недоведённой до ума платформы, то меняйте платформу, а не вписывайте тупые шутки в качестве переназначенных реакций. Ну и, конечно, руки прочь от функциональности добавления комментариев в транскрипт!
#### В итоге
Классические квестовые парсеры — это один из тех немногих видов текстовых игр, которые абсолютно оригинальны и первичны по своей сути, являясь высшим выражением тех механик, на которых базируются. Именно в оригинальном виде они выдают максимум того, что есть в концептуальных идеях, лежащих в их основе. Прочие жанры практически любых текстовых игр или графических квестов — это уже всего лишь вторичное воспроизведение каких-то парадигм, то есть этакий косплей базовых идей, подсмотренных у других: от парсеров до видеоигр и даже обычной литературы. В общем всего лишь попытка малыми силами сделать что-то подобное тому, что было хорошо в другой более сложной реализации. Это не плохо и не хорошо, просто это так. А вот если вы хотите увидеть высшую точку развития приключенческих квестовых игр, то это по-прежнему только классические парсеры, так как остальные являются лишь жалким подобием по уровню глубины базовой игровой механики, основывающейся на взаимодействии с физической симуляцией игрового мира.
Игра «На фоне ковра», безусловно, написана не без помарок и местами сделана грязновато или даже халтурно, но с точки зрения реализации игрового процесса классических парсеров — это лучшее из того, что было в этой области на русском языке за весь 2018 год, и вряд ли в оставшийся месяц в этом отношении что-то поменяется. Те, кто любит и ценит классические парсерные игры, думаю, уже всё поняли сами. Ну а те, кто удивляются, что такие игры в виде чистой оконченной идеи всё ещё живы и полны сил, могут запустить эту текстовую игру от 2018 года, и убедиться, что парсеры в худшем случае могут лишь простудиться на похоронах очередной новомодной волны компьютерных игр, которых за эти более чем 40 лет было не мало, потому что если вы сумеете понять красоту тех концепций, на которых основан парсерный геймплей, то убедитесь, что конкурентов в этой области у парсерных игр просто нет. Парсеры можно не любить, но, если вы хоть что-то понимаете в этом мире, их нельзя не уважать, как и авторов, которые по-прежнему их пишут, наплевав на все навязываемые из вне финансовые и аудиторные критерии успеха, абсолютно не способные померить то, ради чего многие люди до сих пор этим и занимаются.
#### Ссылки
* Играть онлайн
* Скачать файл игры для интерпретатора Glulx
Ссылка:
https://ifhub.club/2018/11/24/na-fone-kovra-morlot-dolzhen-byt-razrushen.html