Публикации

Технические заметки о gamebookformat

После недавнего выхода аудиообзора движка gamebookformat на диаласе, думаю, стоит поделиться некоторыми практическими аспектами.
Главное предварительное требование — установленный python 2.7. К сожалению, проект заброшен, обновлялся последний раз 5 лет назад. Для такого случая я использовал портативную версию python, чтобы с третьим не было конфликтов в переменных среды.
У движка есть возможность экспорта в разные форматы. В статье я покажу примеры для rtf, html и txt. Мне кажется, существует только два перспективных варианта использования движка:
1. Для создания печатной (или PDF) версии книги-игры.
2. Для генерации переходов и параграфов с последующим импортом в редактор митрил.
Читать дальше

Фильтр после коллажа – секрет успеха незадачливого цифрового художника

Всем привет, в этой статье я бы хотел поделиться собственной техникой создания иллюстраций к играм, без претензии на качественную графику. Статья предназначена для авторов, которые хотят сэкономить (я тоже не всегда так делаю) и при этом не умеют рисовать. Для музыки варианта аудио-коллажа я не нашёл, зато есть множество свободных аудиоресурсов, где выбираешь на свой вкус. Итак, для начала, у вас должно быть:
• образ в голове для иллюстрации;
• доступ к интернету для скачивания картинок и запуска фильтра;
• Paint.Net (можно просто Paint) для элементарного редактирования.
Читать дальше

Конечные автоматы в менюшном движке. Оформляем доисторическое приключение на 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