Другой Марс: парсер в 2018 году
Привет всем! И снова, превозмогая лень и комплексы интроверта, выхожу к людям и пишу о своей новой игре. И раз вы это читаете, то усилия не пропали зря. :)
Что такое парсер
После выпуска прошлой игры «Вахта» я получил довольно много (учитывая нишевость жанра) отзывов. В том числе — очень тёплых. Спасибо! Это дало заряд на новое творчество, и весь отпуск я писал движок для парсерных игр. В этой статье я хотел представить то, что у меня получилось, и вообще рассказать, как я дошёл до жизни такой.
Я уже писал, что мне не нравится формат мейнстрима текстовых игр, где доминируют CYOA игры. Поэтому я постоянно искал способ сделать игровой процесс более глубоким, при этом не превращая его в кликодром. В «Вахте» было применено (спорное) решение — сделать все ссылки невидимыми, но компенсировать это тем, что все слова в игровом тексте — кликабельны. Многим это понравилось, многим нет, а многим было всё-равно, но я остался доволен результатом. Но, все-таки, и в «Вахте» можно просто лихорадочно кликать на слова в тексте, а потом смотреть — что из этого вышло...
Существует формат текстовых игр, который для меня кажется идеалом — это парсерные игры. Возможно, кто-то из вас даже не знает, что это такое. Парсерная игра, это такая игра, где все действия игрока вводятся с клавиатуры. Это очень древняя штука, да. Про нее помнит только горстка маргинальных игроков (особенно, если рассматривать территорию exUSSR). Но это и есть те самые настоящие текстовые приключения. Когда у тебя перед глазами фрагмент текста и строка ввода, тебе приходится читать и думать. Ведь действие (ввод текста) — это дорогая операция. Это тебе не ткнуть пальцем в кнопку на экране гаджета. В общем, я всегда был очарован парсерными играми.
Новый движок — зачем?
Cуществуют две основные системы разработки таких игр: TADS и Inform 6 (7й для русских игр не подходит). Но, как и авторы Cypher, я написал свой движок. Зачем?
-
Я хотел сделать игру, которая выглядит как игра, с кое-каким графическим и звуковым оформлением.
-
Я хотел движок, в котором мне не придётся возиться с словоформами.
-
Я хотел движок, который был бы более дружественным к неопытным игрокам и имел более низкий порог вхождения.
-
Я уже написал свой движок для текстографических игр (INSTEAD) и хотел расширить его функции. ;)
На самом деле, я занимался парсером еще в 2015 году. Правда, там была гибридная система ссылок и ввода текста. На том движке было выпущено несколько игр (не только моих). Одна из них — «Материк» от Василия Воронкова — была неплохо встречена на Стиме.
Но главное, у меня уже был словарь и система склонений. В общем, за полтора месяца новый движок, с учётом старого опыта, удалось сделать. В качестве стандартной библиотеки я взял код библиотеки RInform 6 и просто перенёс его на свой движок.
Мой движок оформлен в виде модуля INSTEAD3 и доступен в составе пакета модулей. Если кому-то интересны подробности — вот документация.
Парсер в 2018? Серьёзно?
Я отдаю себе отчёт в том, что выпускать игры с парсерным вводом в 2018 году — выглядит безумием. Особенно, если ты озабочен финансовой стороной вопроса. В моём случае это не играет никакой роли, что даёт мне определённое приемущество в оправдании своего творчества.
Я понимаю, что мир меняется и сегодня большинство приключенческих игр не встретит отклика у современных игроков. Например, в старых текстовых играх частенько учитывался вес предметов или имелось ограничение на число носимых предметов. В наши дни это обычно выглядит как анахронизм, примерно как если бы сегодня была выпущена аркада на полтора часа геймплея, но без точек сохранения. Большинство людей такого не поймёт.
Но главный скепсис вызывает, конечно, сама необходимость ввода с клавиатуры. Здесь я попробовал упростить жизнь игрокам следующим образом:
-
Если игра запускается на мобильном устройстве, то она включает особый режим, когда игру можно пройти нажимая на ссылки с глаголами и предметами сцены. При этом игра разворачивается в портретный режим
-
Парсер использует функции нечёткого сравнения строк (расстояние Левенштейна) и подсказывает игроку возможные варианты ввода.
-
Автор игры, при желании, может включить режим авто-подсказок. Когда все возможные варианты ввода появляются в виде «облака» под строкой ввода.
А что в плане сюжетов? В 2018-ом году публику сложно удивить игрой про поиск кладов в подземелье с педантичным учётом очков и внезапными смертями (а именно такой была первая текстовая игра: Adventure).
В общем, я решил сделать упор на:
-
Простоту (Сверхцель: игрок, который никогда не играл в парсер, должен пройти мою игру!).
-
Рассказ или повесть. (Игра должна восприниматься не как адвенчура, а как интерактивная повесть).
-
Оформление. (Просто, но со вкусом)
-
Небольшой размер. (Для первой игры я выбрал формат рассказа на 40-50 минут. Во первых — как проба сил и движка. Во вторых — современному игроку легче пройти короткую игру, чем длиную).
Сюжет
С сюжетом получилось интересно. В отпуске я начал читать полное собрание рассказов Р. Шекли и получил из него просто тонну идей. Решено было писать игру по одному из рассказов.
Но когда я начал это делать, то постепенно сюжет видоизменился до такой степени, что от Р. Шекли почти ничего не осталось. А в мотивы игры были вплетены идеи из ещё одного рассказа. Сюжет, не смотря на некоторую бредовость, мне понравился и дальше оставалось только написать игру...
Альфа версия
Писать код вообще просто, особенно, если ты — программист. Так что 80кб кода были написаны влёт. Игра была представлена знакомым и коллегам и вот тут началось:
В твоей игре нельзя влезть в скафандр! А можно только одеть!
Исправлено.
В твоей игре написано: «воспользуйтесь визором». Я пишу воспользоваться — такого глагола нет!
Исправлено.
Мне лень вводить с клавиатуры предлоги. Почему игра не понимает: смотреть север? Почему надо писать: смотреть на север?
Есть кнопка tab, можно написать осмотреть север.
Почему игра не понимает: осмотреть девушка.
Надо писать грамотно.
В общем, такие (или примерно такие) репорты лились непрерывным потоком. Благодаря им удалось многие шероховатости исправить и, я надеюсь, улучшить игру. Но я осознал, что при написании парсера ты всегда сталкиваешься с интересной проблемой. Широта возможностей помноженная на широту восприятия и богатство русского языка приводит к комбинаторному взрыву. Только уже не в коде, а в вариантах восприятия игры.
К примеру, мне действительно пришлось внести в движок исправление. Если игрок пытается войти или выйти в/из одежды — то это означает надеть или снять. И таких нюансов можно привести массу!
Если говорить об общем восприятии игры, то за первый день тестирования я получил несколько тёплых отзывов и несколько — критических. Нашлись люди, которые действительно восприняли мою игру как интерактивную повесть и с удовольствием погрузились в неё. Парсерный ввод, при этом, не воспринимался помехой.
Критические отзывы в основном указывали на следующие недостатки:
-
Несколько мест в игре оказались неочевидными и привели к жёсткому клинчу (люди застревали на прохождении моей игры).
-
Отсутствие свободы и рельсовость сюжета, или просто не близок сюжет (с этим я не мог ничего поделать, так как замысел игры был именно в этом).
Пункт 1 удалось отработать. После десятка правок застревать в моей игре перестали. :) Спасибо альфа тестерам!
Вердикт?
Что в итоге? Сегодня я сделал сборку для Windows пользователей и разместил ее на itch. Есть веб версия — если она у вас работает (требуется WebGl) — можно посмотреть её. Пользователи остальных ОС могут запустить интерпретатор INSTEAD и поиграть. Если игровой процесс покажется вам утомительным, не забывайте про клавишу «tab». В общем, я предлагаю вам попробовать поиграть в парсерную игру. Я думаю, найдутся люди, которым это придётся по душе.
Я думаю, что и сегодня парсерная игра может «взлететь». Что даёт мне основания для надежды?
-
Тёплая реакция (и живой интерес) на игру «Материк» в Стиме, которая сделана на предыдущем поколении движка.
-
Попытка (в принципе, удачная) разработчиков игры Cypher сделать парсер на Unity.
-
Игра с Алисой «Фантастический квест» от Yandex — это практически парсерный квест с голосовым управлением.
-
Мою игру уже проходят люди, никогда не игравшие в парсер!
Возможно, писать парсеры в 2018 — это действительно безумие.
Но, если честно, я так не думаю.
А вы?
- 03 августа 2018, 08:12
- 021
Из недавних популярных игр с парсерами вспоминается Event[0], только там этот комп не такой интересный, как остальная игра вокруг компа. :(
Точно, забыл. Правда, только читал про нее.
P.S. еще вспоминается какая-то игра, где ты в доме, что-ли. Играешь в текстовую игру. horrorо подобная. Вылетело из головы. :)
Stories Untold. Та игра, которая про дом - первая из четырёх в этом сборнике.
Точно. :)
Правда в Stories Untold та парсерная часть очень простая, в том плане, что там буквально 3-4 команды исчерпывали почти всё
Где-то и визуальные новеллы парсерные бывали, кажется.
Может стоит добавить разрыв страницы, чтобы не весь пост в ленте светился?
Прошу прощения, забыл. Доеду до работы и сделаю.
Буду пробовать обязательно
Сыграл. В целом впечатление положительное, хотя сюжет - ну вообще не мое. В "Вахте" было как-то более лихо всё и свежо. Однако это всё субъективность - уверен, что многим как раз такое интересно. Для такой небольшой истории всё в порядке вроде!
Музыка хорошая подобрана в целом, всё уместно. оформление минималистичное, ничего лишнего. Хотя ничего особо яркого, в то же время. Понравилось, как цвет фона меняется в зависимости от освещения)
По поводу взлета парсерных игр - почему бы нет, сегодня это скорее выглядит даже чем-то свежим, нежели реликтом. Так что если реализовать именно сложный сюжет в парсерной механике, снабдив современным оформлением и эффектиками всякими - будет круто (тот же Stories Untold, хотя сюжет не очень там нравится как раз-таки).
Под спойлером пишу некоторые комментарии, может буду полезны. Кто не играл - читать не надо.
По тексту есть несколько смутивших меня мест.
1) Если попытаться потрогать воду, то герой отвечает что-то в духе "Никаких особых ощущений". Это очень непонятно, ибо он вообще в скафандре, и как он мог что-то ощутить. Ну и сама фраза в контексте происходящего немного странно звучит:) Типа "Ну вода как вода, только на Марсе":) Скорее было бы ожидать удивления, мол ЭТО Ж МАРС, А ВОДА СОВСЕМ КАК ЗЕМНАЯ.
2) Герой сходу измеряет высоту маяка в 60 метров. Может у него есть приборы, но как-то сгладить бы это, или рассказать, что "по приборам - около 60 метров"
3) Где-то проскользнула фраза "Как это вместить" - немного топорно ИМХО.
Ну это всё так, по мелочи, не сочти за придирки, просто комментарии) На качество игры не влияют.
Единственное непонятное место было - когда проходишь под аркой, а потом оказываешь в помещении с проломом в стене. Там так написано, мол "пол уходит вниз" - я думал это другой коридор, а не тот, откуда мы пришли. И долго пытался подобрать фразу, чтобы именно туда пойти)
Спасибо! На некоторые вещи мне уже указывали, но некоторые -- новые. Учту в следующей версии.
Да, эта игра, конечно, частично тест движка. В следующей собираюсь попробовать написать более масштабную историю.
"Посомтреть" не угадывает как "Посмотреть", а такие опечатки с перстановкой букв или пропуксом одной - очень часто встречаются.
Ага. Странно, я проверю. Вроде там как раз 2 или 3 стоит дистанция, при которой должна даваться подсказка.
P.S. вероятно, баг. Так как если просто написать посомтреть, то подсказка даётся. (а не посмотреть на) Буду исправлять, спасибо!
P.P.S короче, посомтреть себя - подсказывает. А можешь точно фразу назвать, которую вводил?
И совсем великолепно будет, если ответы на "риторические вопросы" все-таки будут срабатывать :)
Да, смешно. :)
P.S. пофиксил тот баг, в некоторых случаях не исправлял парсер действительно. В след версии будет норм.
Попробую обязательно, должно быть интересно.
Хоть в интерактивной литературе больше опыта именно с CYOA, помню, как в детстве играл в Red Moon на ZX-spectrum :) Думаю, тут должно быть только лучше, да ещё и на русском языке.
Ещё добавлю, что INSTEAD -- движок с очень хорошей кроссплатформенностью, если вы пишете игры текстовой направленности, то на него стоит взглянуть. Радует, что теперь в нём появился и полноценный движок для парсера.
Прошёл, мне понравилось.
Порадовало, как игра в нужные моменты подсказывала мне, что нужно сделать, не пришлось самому угадывать, чего тут от меня хотел автор. Причём, это не были какие-то явные подсказки. В общем, хорошо :)
Немного затупил на визоре. Сначала не дошло, что надо его включить (про это, кстати, тоже потом появилась подсказка), потом пробовал смотреть в разные стороны, и только после подсказки "посмотрите ещё куда-нибудь в северном направлении" посмотрел туда, куда нужно :)
Почему-то игра не знает глагола "отключить", хотя правильно советует "выключить". В принципе, не страшно.
И да, соглашусь с предыдущим комментатором, в арке не совсем понятно, что коридор, ведущий вниз -- это тот самый, по которому мы сюда пришли.
Но в целом всё это впечатлений не портит, играть приятно, спасибо за игру!
Спасибо за отзыв!
Прямая как кишка. Современные шутанчики смотрят с удивлением на такую линейность.
Текстовая игра, да еще и линейная. Жесть.
Привет... Можно. На практике -- таких игр мало. Навскидку: карантин (там неизвестен враг, как детектив), путь медведя (хотя это рогалик больше). Задача - сгенерировать комнаты и объекты динамически. В движке такие возможности есть. Другое дело, что метапарсер (модуль INSTEAD) -- только что вышел, может быть где то ошибки.
Но я люблю линейные сюжеты. В книгах, фильмах, театре -- они всегда линейные. :) Поэтому, после "карантина" я нелинейными сюжетами не занимаюсь и специально в эту сторону не смотрю.
Есть Волшебники и Камень и Созвездие: Полёт в бездну. Там много чего генерируется. От оружия до противников.
Как раз прошёл метапарсерный Обратный переход, где так недостаёт смерти по неосторожности. После прочих ссыльных историй на Instead, что удавалось запустить на телефоне, хочется видеть в свободе действия парсера сложность не только в управлении, но и позволение совершать ошибки (как в Особняке и Карантине) , не останавливаясь внутренним голосом каждый раз.
Захотелось чего в кой век добиться, избытком интернета не отвлекаясь (в деревне) -- засел изучать Java, ограничиваясь средой N-IDE на андройде, дабы что гибридное квесто-симуляторное (с параметрами окружающей среды из Biosys, Space station 13, Stationeers, Mars colony simulator) кроссплатформенно написать, базу комнатохаживанья сперва построив, догадавшись без копирования готовых решений.
Например, все развилки сделать суперклассом комнат, а для манипуляций и диалогов подклассы-микрокомнаты от этого, да выходы из каждого разветвления прописывать отдельным списком id-адресов каждому массивами. Не ограничивать себя рогаликовым перемещением по сторонам света (который кажется нелогичным в космосе, например, хотя и облегчая ориентацию и карторисование сотен комнат). Или лучше сразу к хэш-таблицам и базам данных перескакивать?
Марс пока не получилось на мобильном интерпретаторе запустить, а веб-версия слишком мелкотекстово сжимается.
Да, обратный переход - на предыдущем движке.
На android можно поставить instead-ng из play market. И прямо оттуда поставить игру, ткнув на нее. Но тогда в игре включатся ссылки.
Остальные мысли не готов комментировать, так как я лично не люблю нелинейности (и педантичную симуляцию) в играх. И после карантина я больше об этом не думаю.
Да, заработало на обновлённой мобильной версии. А то всё вручную устанавливал в оффлайне.
Хм, любопытно, как нынешняя прагматичная научная фантастика сталкивается с былой, романтической. Особенно когда поначалу всё так научно-приборно.
В этих двух метапарсерных квестах по ощущению недостаёт действия Показать... или Спросить о... предмете (только в Говорить иногда реагируют на новонайденное). Как использовать инвентарь на персонаже в ссыльных квестах.
Во второй главе тебя может сожрать монстряк, а в третьей можно врезаться в кактус. Так что немного смертей есть, хоть я вообще и не поклонник подобного.
Ну и есть такой момент, что последствия всех этих нелогичных действий - это тоже код и время на его написание, поэтому зачастую автору просто лень этим заниматься.
У вас ссылка не на тот Cypher. Даже не на текстовое приключение. Нужный CYPHER вообще в Стиме не появлялся, а на их тупой самодельный парсер отзывы очень плохие. И вообще это игра 2012го, вышла ещё до «Материка».
Ссылку заменил, спасибо.
Забавно, буквально недавно решал похожую проблему. Как pet project шлифую движок текстового квеста, был фича-реквест на ввод человековменяемых команд вместо "осмотреть девушка". Правда, свой парсер мне писать было совсем западло и я взял GoParsec.
Интересно почитать про систему склонений и как наполнялся словарь (подозреваю, что в лоб).
Идея с расстоянием Левенштейна проста и хороша, но как-то излишне упрощает суть. На мой взгляд, пользователю нужно дать понять, что набирать нужно лишь те слова, которые присутствуют в описании сцены или репликах. Впрочем, это у меня такое требование, у кого-то его может и не быть
Привет :)
> Интересно почитать про систему склонений и как наполнялся словарь
За основу взят готовый словарь с aot.ru
> Идея с расстоянием Левенштейна проста и хороша, но как-то излишне упрощает суть.
Это настраивается и отключается при желании.
P.S. сейчас продолжаю разработку парсера. За одно выполняю англофикацию :)
Тоже их нагуглил как-то. А весь словарь идёт в комплекте с конкретной игрой? Если да, то это как-то оверкильно.
сильно упрощается в плане падежей, конечно.
Нет, для конкретной игры компилируется собственный словарь из полного. Обычно он несколько десяток кб занимает.
Конечно, безумие, если вы хотите славы, денег и девушек. :-) Парсеры за свою 40-летнюю историю успели умереть в 80-ых как коммерческий продукт, возродиться в 90-ых как хобби проект и начать умирать в 2000-ых под натиском twine игр. Парсер - удел маргиналов и широкого отклика у публики не способен получить. Это мое ИМХО. При том, что для меня парсеры были экспериментом в плане геймплея (лол, староватый эксперимент). Я получил не мало удовольствия, когда года 3 назад играл в Фотопию, игру про шпиона и Вечерню (переводы западных игр). Из наших - игра про китайского детектива и фентези игра, но там пролог только был. Названий за давностью лет не помню, а искать лень. Сейчас сыграл в 3 простенькие для новичков англоязычные парсера - Six (https://ifdb.tads.org/viewgame?id=kbd990q5fp7pythi) - про девочку, которая играет в прятки с друзьями, 69,105 Keys (https://ifdb.tads.org/viewgame?id=j3rwlhuy6j6v79qj) - игра про поиск уникального ключика среди 69 тысячи разнообразных ключей и Hide a pachyderm! (https://ifdb.tads.org/viewgame?id=fkitx3t7bymkxbuw) - игра шутейка про то, как спрятать слона в комнате. Всё также круто и свежо. Но это я - любитель маргинальщины и всякого наколеночного и малопопулярного. Большинство игроков не готовы тупить в консоль. Это просто лениво, набирать команды ручками. В этом плане тыкать в twine и подобных играх намного удобнее, поэтому они намного популярнее парсера в интерактивной литературе.
Последнии несколько дней читал всякие западные блоги и форум про IF. И в общем-то мои слова про смерть (непопулярность) парсера можно подтвердить несколькими ссылками:
1 Эпичный тред о том, что IF (parser) мертв - https://www.intfiction.org/forum/viewtopic.php?f=4&t=16752
2 Статья известного бывшего парсерщика, который полностью ушел в choice-based игры - https://threeedgedsword.wordpress.com/2013/12/05/parser-as-prototype-why-choice-based-games-are-more-interesting/
3 Статья ещё одного известного разработчика парсеров, которая советует новичкам не писать парсер. Как бы это уже фейл, потому что наоборот на свою сторону надо приманивать авторов и игроков - https://emshort.blog/2017/05/04/mailbag-the-endangered-art-of-parser-if/
Смотря что понимать под словом "взлететь". Примеры так себе. Материк - бесплатная игра. На бесплатные (не галимый треш) в стиме всегда положительные отзывы. Будь она за 10 баксов, вот тогда посмотрели бы на количество отзывов. Я вангую, что было бы как с Anchorhead (https://store.steampowered.com/app/726870/Anchorhead/). А это на минуточку одна из известнейших парсерных игр. 10 баксов свое дело делают. Игра Cypher - это как я понял провал. Тру иферы плювались от парсера и кривого английского, а простые игроки ничего и не знают про эту игру. Про игру от Яндекса принятуто к теме возрождения парсера за уши. Так поиграться, не более. Ну и 4-ый пункт тоже очень слабый. Потому что ваша игра примитивная в плане парсера. Все команды прямо по тексту просят вводить. Не пройти такую игру может только хронический рукожоп, который не умеет читать и понимать прочитанное.
Имхо, конечно. Но противопоставление Anchorhead и Материка показательно. Дело в том, что тут сталкиваются два мира. Мир классического парсера. В лице Anchorhead. И мир "велосипедистов". Включая меня. Так вот я не говорю о возрождении парсера по версии тру иферов. В это я не особенно верю. Тру иферы реконструируют. Они по прежнему высоко ценят загадки и педантичное моделирование и спокойно относятся к отсутствию оформления. Я из другого лагеря. Я как раз считаю, что парсеры в "попсовом" формате, простые, с упором на сюжет (а не на задачи) и оформление могут взлететь не хуже cyoa.
Игры с упором на сюжет есть как минимум с 1998 года, с Фотопии. Цитата Эмили Шот с треда, который я приводил выше:
Были люди, который на рубеже 2000-ых были очень подавлены из-за волны парсерок без загадок, вызванных Фотопией. То есть этих игр и так много. Не особо они помогли в популяризации жанра. Зато, CYOA, которая раньше была маргинальщиной и никогда ничего не выигрывала на Ifcomp, вдруг получила признание. Появились успешные коммерческие игры в отличии от парсерок.
А так конечно, если ты видишь перспективы для парсера это хорошо. Но если их не видят зарубежные авторы, которые варятся в этом жанре по 20 лет и все как один уходят в choice-based игры, что-то мне подсказывает, что ты ошибаешься на этот счет и перспективы у парсера очень туманны.
С Наступающим тебя. :)
Ну, мне, конечно хочется, чтобы то, что мне нравится оказалось хоть сколько-нибудь востребованным. Поэтому я привожу доводы, которые важны мне и повторяться уже не буду. А там, конечно, посмотрим. :) Но cyoa, конечно, стала практически мейнстримом. Мне это не близко совсем.