ЯРИЛ 2.0

ЯРИЛ (Язык Разметки Интерактивной Литературы) — это русская платформа для парсерной интерактивной литературы. Отличается изначальной ориентированностью на русский язык и визуальным программированием всей игровой логики.
Платформа состоит из Редактора, Плеера и Тестера. Тестер — приложение для проведения автоматизированных проверок проходимости игр. (Тестер пока находится в начальном состоянии разработки.)
Технологическая платформа: Java SE 8.

Структура игр

Игра (или в терминологии ЯРИЛ — история) описывается как набор локаций, предметов, действий, процедур, настроек и их взаимосвязей.
Основные понятия:
  • Локация — выделенная единица пространства. Может содержать предметы и игрока.
  • Предмет. Может содержаться в локации, у игрока, содержать другие предметы.
  • Действие — логическая связка для действия игрока, состоит из набора шаблонов парсера и процедуры игровой логики для обработки. Имеет набор ограничений (условий для выполнения).
  • Процедура — набор инструкций игровой логики. Используется как обработчик действия, так и может вызываться из других обработчиков (процедур и проч.).
  • Перехват — возможность перехватить выполнение какого-либо действия над предметом или в локации и задать отдельную игровую логику.
  • Роль — совокупность свойств и специальных обработчиков для предметов. При «навешивании» роли на предмет он принимает её свойства, что можно проверять по имени роли (например, выражение «предмет.открываемый» будет истинным, если на предмете навешана роль «открываемый»).
  • Библиотека — файл с набором сущностей ЯРИЛ для использования в игре. С платформой идёт стандартная библиотека «Глаголы» с набором действий и ролей. Дорабатывается.

Парсер

Парсер в ЯРИЛ работает по принципу подбора шаблона для введённой фразы. Шаблоны состоят из двух типов элементов: литерал (набор фраз) и объект (упоминание предмета по словарю в каком-либо падеже). При удачном подборе шаблона выполняется привязанная к нему процедура игровой логики.

Визуальный редактор игровой логики

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

Выпуски

Свежие выпуски публикуются на страничке проекта на GitHub.

14 комментариев

Oreolek
Программа на Java, но нет не-exe архива для Linux.
realsonic
Только недавно собрал портабельную версию — dl.dropboxusercontent.com/u/87862945/IFML2/IFML.Portable.2015.1.tar.gz
В ней лежит скрипт run.bsh для запуска под *nix. Только ему нужно раздать права на запуск, я под Windows не смог этого делать.
Да, и нужно поставить Java SE 6. Именно 6ку.
realsonic
Убрал обязательность запуска под 6ку из портабельной версии. Проверял, работает под 8ой.
major-kolz
Попробовал. Запустилось на OpenJDK под Ubuntu 14.10 Правда, пришлось убрать параметр
-version "1.6+"
Игры сразу запустить не получилось — проблема с кодировками в именах. В тестере пути указаны не через тот слеш и расширение истории — .xml, а не .ifml
Также неудобно, что меню выбора файлов стартует из корневой директории, а не из папки с игрой — лишние пару кликов каждый раз приходиться делать.

Дякую за послiдовнiсть до вiрша Петренка!
realsonic
Правда, пришлось убрать параметр
-version "1.6+"
У меня пока не получалось перенести по 7 яву. Сейчас попробовал запустить под 8ку — заработало. Убрал этот параметр из портабельной версии.

Игры сразу запустить не получилось — проблема с кодировками в именах.
Оки, переименуем.

В тестере пути указаны не через тот слеш и расширение истории — .xml, а не .ifml
Разберёмся.

Также неудобно, что меню выбора файлов стартует из корневой директории, а не из папки с игрой — лишние пару кликов каждый раз приходиться делать.
Хм, у меня стартует из папки Games. На линуксе, видимо, по-другому? Возможно, пути так определяются. Поищу в логах, есть ли это.

Спасибо за замечания!

Перевёл, но не понял последнее предложение на украинском.
realsonic
Игры сразу запустить не получилось — проблема с кодировками в именах.
В портабельной 2015/1.1 запаковал в 7zip. Имена распаковываются верно?
major-kolz
Да, имена теперь читаемые.
realsonic
Отлично! Спасибо, будем работать дальше. :)
major-kolz


Пробовал еще такие цепочки поискать — нашел что-то простое из двух глаголов, но не помню о чем. Забавная штука: не просто отказ получаешь — «Данное действие нельзя выполнить» — а вот что-то эдакое.
ASBer
Ох… что-то мне подсказывает что это просто заглушки. Действие не реализовано, вместо действия выводится текст.
Значит в реальной игре программирование этих способов передвижения ляжет на плечи автора…
realsonic
Таки-пока да, так и есть. Ждите следующих обновлений. :)
realsonic
На самом деле, и в пресловутом Информе такие же заглушки на действия, если предмет не удовлетворяет условиям.
Сейчас же в ЯРИЛе эти действия есть в стандартной библиотеке, и автор при необходимости может добавить свою логику для определённых предметов с помощью перехватов. В дальнейшем планируется расширение библиотек(и) в плане добавления различных ролей, реализующих стандартное поведение для таких действий. (На вроде «зажечь» -> «предмет.горит = да»).