Отчёт от разработке: Salet

2016-09-19T11:24:32+07:00

А тем временем я продолжаю работу над платформой Salet.

Краткое содержание предыдущего года

Salet - это движок для онлайн-игр, далёкий потомок Undum с идеями из INSTEAD. Отличается большой гибкостью и полной абстракцией от интерфейса игры. Синтаксис простой, но нужна настройка окружения.

Самое большое изменение - это версия 1.4, в которой я опубликовал библиотеку как модуль для NPM. Теперь вместо ручного копирования файлов достаточно указать название модуля, и npm сам может установить последнюю версию.

Второе по важности новшество - я наконец разобрался, как тестировать проекты на jQuery :-) знаю, знаю, глупо было тянуть так долго, но — лучше поздно, чем никогда. После прогона нескольких тестов я нашёл много багов, которые уже исправлены.

Наконец, третье изменение: я запутался в переменных (у CoffeeScript и browserify разные взгляды на то, какие переменные где должны быть видны) и просто сделал объект salet глобальным и привязанным к window. Библиотеку можно использовать и как NPM модуль, и как обычный Javascript сценарий. Что даёт в свою очередь залить её на общий CDN, но прямо сейчас я этим не буду заниматься.

Если кратко, то вот список всех нововведений, ну, скажем, с марта:

  • Функция salet.goBack() возвращает игрока в предыдущую локацию — или на начало игры.
  • Свойство canView комнат теперь принимает два параметра: текущую комнату и комнату, к которой относится (чтобы не запутаться в ссылках this)
  • Пример игры теперь использует Bootstrap v4
  • Исправления нормализации Markdown
  • Объекты (objects) переименованы в элементы (units). Это связано с ясностью терминологии, чтобы не смешивать предметы в игре с объектами CoffeeScript и JavaScript.
  • Функция salet.goTo() теперь вызывает автосохранение, как и другие переходы между комнатами.
  • Исправлена загрузка игры
  • При загрузке игры Salet не будет чистить экран; это нужно, если вам нужно сохранить интро.
  • Теперь одноразовые ссылки обрабатываются для всей страницы, а не только для блока #content
  • Я выкинул генератор случайных чисел от Raconteur и написал другой на CoffeeScript. Заодно и починил несколько багов с чтением строк кубиков, типа 1d20+2. Фактически теперь весь код из Raconteur в составе Salet - это нормализация табов Markdown.
  • Объект локализации теперь тоже сделан глобальным как window.i18n. Он используется в самом Salet, но ваша игра может про него и забыть.
  • Новый метод ядра salet.getSave() читает и возвращает файл сохранения из localStorage. Файлов может быть несколько, но по умолчанию всего один.
  • Автозагрузка игры теперь отключаема, как и автосохранение.
  • Игра больше не сохраняет действия внутри комнат, в которых отключено сохранение.
  • Исправил проверку свойства canExit: если комната запрещает из неё выходить, то после выхода Salet тут же делает форсированный вход обратно. Тут уж иначе никак.
  • Исправил выбрасывание предметов из инвентаря персонажа.
  • Убрал из ядра поиск пути и вставку видео. Это слишком сильно зависит от конкретной игры.
  • Перевёл библиотеку в режим совместимости (она больше не надеется на то, что объект $ - это и есть jQuery)

Что происходит сейчас?

Я готовлю новый сайт, на который перенесу вики, игру-пример и сделаю маленький форум. Сайт будет двуязычным. Если интересно, он строится полностью на движке DokuWiki. Также я меняю лицензию для документации на CC-BY 4.0. Точных дат не даю

Новых функциональных и модульных тестов я пока не пишу - не до того.

В это же время я работаю над своими новыми играми, которые используют Salet. Это не должно сильно отразиться на самом ядре Salet, потому что код уже проверен предыдущими играми, а API и так стабильное.

Готова ли платформа?

Да. Платформа готова к использованию. Я написал на ней уже очень много игр и черновиков. Подключайте, пробуйте, пишите о впечатлениях.