Публикации

Конечные автоматы в менюшном движке. Оформляем доисторическое приключение на ink. Часть 3

Продолжение части 2. То что получилось в итоге можно посмотреть по ссылке:
dialas.ru/ink-dino/
Скрин игры на широкоформатном экране:


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

Конечные автоматы в менюшном движке. Реализуем доисторическое приключение на ink. Часть 2

Продолжаем первую часть. Пишем вступление к игре и вход в основной параграф:

Доисторическая схватка
Если вы готовы, то выберите
*   [Начать]
    Лёгкий ветерок над пустынной равниной дарит небольшую прохладу после знойного дня. Охотник прислонился к стволу дерева и спокойно наблюдает за магическим пламенем. В этот год ему удасться сохранить его, если неподалёку отыщется еще несколько деревьев. Верное копьё, с каменным наконечником лежит возле левой ноги. Небольшой шорох из ближайших кустов и уже его руки крепко сжимают древко. Только не это, кажется на этой небогатой земле появился еще один охотник - не знающий пощады. Зубастая морда высунулась из-за кустов и начался древнейший танец смерти.
    -> init_and_start_knot
-> END
Читать дальше

Конечные автоматы в менюшных играх. Пишем доисторическое приключение на ink. Часть 1


Давайте начинать с ответов на вопросы.
  • Зачем нужно писать про конечные автоматы? Они позволяют моделировать сложное поведение, которое мы часто хотим видеть в текстовых играх. Есть большое количество статей по реализации конечных автоматов на обычных языках программирования, но мы будем рассматривать исключительно инструменты ИЛ.
  • Почему менюшный движок? В примере хочу остановиться на автоматном подходе и продемонстрировать, как можно использовать конечные автоматы в менюшных движках, где главной смысловой единицей в них является параграф (или узел как в ink). Эти сведения должны пригодиться для тех, кто интересуется представлением сложного поведения в ink, twine, undum, salet, axma и подобных.
  • Хорошо, тогда почему ink? ink очень перспективный язык с возможностью встраивания, сборкой под веб, тестированием истории в консоли, мощными фичами для потока управления и в тоже время минималистичным синтаксисом.

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

Читать дальше

Конструктор виртуальных миров

Не так давно вышла игра «Звезды знают всё, но молчат». В ней есть одна примечательная деталь – это интерактивный виртуальный мир, хоть и небольшой. Лично для меня, это целый поджанр интерактивной литературы, который надо развивать. Отличается от классических игр в первую очередь отсутствием игровой системы и явных целей. Он становиться больше похож на произведение искусства. Представьте себе, вы побывали в каком-то замечательном месте, но вместо фотографии или заметки решили оставить кусочек виртуального мира, чтобы потом снова в него погрузиться или кому-то передать. Текстовый мир не нуждается в сложных механиках. Автору хочется просто создавать локации, объекты и менять стандартные реакции. Передавать атмосферу мира за счёт интерактивного опыта. Для этих целей в 2016 г. был сделан конструктор текстовых виртуальных миров. Давайте попробуем создать виртуальный мир и посмотрим, что из этого получится.

Читать дальше

Локализация парсера

В данной статье пойдет речь о способе локализации парсерной игры, как мне кажется, довольно нетривиальном процессе. Буду рассказывать об игре Антиквест, которая была успешно переведена на английский и участвовала в конкурсе ifcomp, а также была одним из экспонатов на фестивале медиапоэзии «101» в спб. Скажу честно, локализация закладывалась заранее, перед началом проектирования игры. Если мы сначала делаем игру, а потом стараемся локализовать, тогда проблем намного больше и приходиться просто переводить весь исходный код, каждую сущность. Другое дело, когда мы готовимся заранее и выделяем общие части кода, независимые от локали, а потом переводим только строки для вывода, делаем удобную инфраструктуру. Ниже немного нестандартная UML-диаграмма главных компонентов игры, с точки зрения удобства перевода:


Читать дальше

Комментирование битвы

Продолжим рассказывать элементы разработки игры Комбикорм-2. Подготовка и карты были рассмотрены ранее здесь и здесь.
Допустим, вы автор текстовой игры с боевой системой. Скажите, хотелось бы вам добавить литературного описания к поединку? Чтобы вместо холодных цифр, были попадания и промахи, хитрые приёмы врагов и проявления черт характера персонажей? Конечно же хочется. Однако препятствий кажется намного больше чем, чем возможностей, поэтому придётся накладывать ограничения:
  • Выдача боевой ситуации происходит линейно, событие за событием. Сначала первый попал во второго, второй умер. В дальнейшем, это облегчит составление описаний и их отладку.
  • Всего один тип монстров и все герои — люди. Не очень люблю универсальные описания, по типу “муха нанесла удар крылом”. Для игры решил, что лучше делать более естественные, но всего для трех типов нападений: человек на быка, бык на человека и бык на быка.
  • Каждый удар отнимает по одной жизни. Получается два типа комментариев — нанесение урона и гибель.
  • Добавление описательных фраз для сглаживания механистичности описания. Как раз в эту категорию попадают некие уникальные черты персонажей, состояния перед нападением, реакции на нападение.
Читать дальше

Комбикорм-2. Редактор карт

Речь идёт о парсерной игре «Комбикорм-2», которая использовалась в конкурсе игроков интерактивной литературы.

Начнём с небольшой статистики:
Уровней: 10
Количество локаций: 167
Количество монстров: 270
Участников разработки: 2
Длительность разработки: 5 месяцев в свободное время (активно занимались картами месяца 3)

Чтобы достичь таких результатов, пришлось сделать редактор карт, в котором может работать я и напарник, создавая карту и выставляя монстров. Итак, “платформой” стал самый обычный Excel. Точнее не Excel, а google spreadsheets для работы в облаке и синхронизации изменений.
Читать дальше

Автоматическое построение карт в парсерных играх на русском

В этом посте речь пойдет об известном средстве для построения карт trizbort. Недавно узнал, что он обладает возможностью автоматически строить карты по логам, даже в реальном времени, отслеживая обновления. Однако, он заточен под англоязычные команды. Когда-то я его собирал из исходников и сейчас решил дополнить список распознаваемых глаголов. Получилось вполне приемлемо, так выглядит карта в начале игры «На фоне ковра»:

Итак, последовательность действий:
  1. Скачать бинарную сборку отсюда: yadi.sk/d/iPH6IgNC3YCbnX
  2. Перейти в пункт меню Automap->Start
  3. Выбрать файл с логом и ввести команду для осмотра локации, чаще всего в играх — «о».
  4. Нажать Start Automapping
В теории может подойти транскрипт от любой парсерной игры, главное чтобы соблюдались условия:
  • Кодировка UTF-8
  • Начало команды игрока с символа ">"
  • После команды первая строчка названия локации, остальные её описания.

Пока не выложил в онлайн-репозиторий, если надо то помещу на git-hub.
Ссылка на экзешник: yadi.sk/d/iPH6IgNC3YCbnX

Живой диалог с NPC. Чат или меню?

Когда я только начинал делать парсерные игры, ответ был для меня очевиден — ну конечно же чат с NPC! Ограниченное меню с вариантами меня тогда вообще не интересовало. Подождите-ка, а ведь в парсерных играх уже используется ASK-TELL система, вида: “спросить Машку про Дашку”, “рассказать Машке про Наташку”. Может не стоит изобретать велосипед? Решил попробовать эту систему в игре “Рыбак-рыбака”. Там был диалог с рыбаком в лодке. Не знаю как другие, но я не мог никак догадаться, о чем можно было его спросить и рассказать. Большинство попыток заканчивались провалом, так и не смог пройти это место, пока не увидел исходники и ключевые слова. Когда в других играх видел подобную систему, то практически сразу расстраивался — не хочу в новой игре таких сложностей! Всё-таки надо чатик делать. Будет красивый диалог, если что робот сам подскажет о чем беседовать и получиться легче. Немного покумекав, понял, что этого нужен чат-бот. Кое-как скрестив с одним из плееров, удалось связать чат-бота с моделью парсерного мира, игра вышла в свет.
Читать дальше

Идеальный парсер на сенсоре

Думаю, многие со мной согласятся, что богатый внутренний мир парсерной игрушки разбивается о скалы обычного сенсорного интерфейса. К выводу претензий нет — приклеенная сверху полоска с текущей локацией и сплошной текст, всё как на взрослых компах. А вот с вводом — беда. Маленькие кнопочки, печать голосом, даже автоматическое исправление не помогает. Что же делать? Поставить крест и забыть про парсер на смартфоне или планшете? Я так не считаю. Хочу поделиться концепцией, которую можно применить в таком мобильном плеере, как Fabularium.

Читать дальше