Создавался с целью минимизировать начальную подготовку к созданию системы. Практически, содержит код и базовые настройки, которые каждый раз руками перебиваю в каждую новую создаваемую систему. Многие куски кода написаны с универсальным подходом, ибо предполагается развитие - наработки от системы к системе копятся так или иначе, потому буду складывать их здесь, если есть возможность, что они продублируются в будущем.
Включает в себя заранее созданный функционал:
- Основные настройки и код для Actors (Hero, Enemy и NPC), а так же для Items
- Полиморфизм для вызова вышеперечисленных объектов
- Gulpfile для компиляции LESS в CSS и для компиляции удобочитаемых json-файлов в нужный формат базы компендиума
- Набор универсальных хелперов для Handlebars
- Базовые шаблоны
- Базовый CSS
- Структура базовой локализации
- Оперирование (добавление, удаление) вещами на листах Actor
- Создание zip-билда для выкладки
- Конвертация изображений в webp формат
Установка зависимостей для корректной работы Gulp:
$ npm install
Компиляция LESS в CSS:
$ gulp compileLess
Также там есть наблюдатель(при изменении *.less будет автоматически собирать итоговый css файл), который можно настроить по этой инструкции.
Конвертация PNG, JPEG, JPG файлов в WebP(кладет по тому же пути в assets, рядом, меняется только расширение файла и формат):
$ gulp webp
Создание zip-дистрибутива:
$ gulp zip
Компиляция компендиумов:
$ gulp compilePacks
Как это работает? Скрипт смотрит в src/packs каталоги. Например, есть каталог items:
src/packs/items
Дальше он смотрит в этом каталоге *.json файлы. Он их собирает в этом каталоге в единую кучу и называет свежесозданный компендиум так же, как имя у каталога. Т.е. если в каталоге items лежат файлы:
- armor.json
- weapon.json
- equipment.json
То скрипт объеденит все файлы в один и положит преобразованный компендиум в packs/items.db На файлы разделение сделано затем, чтобы было удобно с ними работать - интуитивно понятно где-что смотреть. Можно всё держать и в одном файле, но мне удобно так. Плюс этот способ позволяет держать читаемые(пример ниже) json файлы. Содержание json файлов должно соответствовать структуре в корневом templates.json Пример:
[
{
"name": "Бронежилет охранника",
"type": "armor",
"img": "systems/systemname/assets/armor/heart-armor.png",
"folder": null,
"data": {
"description": ""
}
},
{
"name": "Армейский бронежилет",
"type": "armor",
"img": "systems/systemname/assets/armor/kevlar-vest.png",
"folder": null,
"data": {
"description": "Oдин раз защищает от травмы Массированные повреждения."
}
}
]