Отчёт от разработке: Salet
А тем временем я продолжаю работу над платформой 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 и так стабильное.
Готова ли платформа?
Да. Платформа готова к использованию. Я написал на ней уже очень много игр и черновиков. Подключайте, пробуйте, пишите о впечатлениях.