Портирование ваших игр с...
Raconteur
Портирование с Raconteur довольно просто по структуре, но вот что вам нужно проверить:
Игра
- Salet не имеет зависимостей от библиотек. Raconteur и Undum уже переработаны в его ядре. Почистите свой
package.json
- ВАЖНО Salet использует класс
room
в то время как Raconteur оперирует над классомsituation
- ВАЖНО Salet использует свойство
dsc
вместоcontent
- (совет) Вы можете использовать
elements.js
из Raconteur, но обычно нет нужды городить зависимости ради одной-двух функций. Просто пишите(content,ref) -> "<a href='_writer_#{ref}' class='once'>#{content}</a>"
вместо(content,ref) -> a(content).once().writer(ref)
. Использование то же самое. - Вам может понадобиться проверить свои функции
before
иafter
и переключить их наenter
иexit
. Это зависит от желаемого поведения. - Вы можете разбить свою игру на несколько файлов, что не отразится на коде. Ищите
concat
вGulpfile.coffee
- Также см. раздел "изменения по сравнению Undum" ниже.
CSS и HTML разметка
- Salet использует прекомпилятор Sass, когда Raconteur предпочитает LESS.
- Также Salet использует фреймворк Bootstrap (v4)
- Salet по умолчанию прячет блок "tools" вместе с качествами персонажа. Они не показываются игроку.
- ВАЖНО Salet ожидает, что вы будете загружать jQuery и компилятор Markdown как клиентские библиотеки Javascript. Raconteur просто склеивает всё в один большой комок. (jQuery вставляется дважды)
Undum
Нововведений по сравнению с Undum слишком много, чтобы портировать игры как есть, но я замечу самые большие изменения. (Нововведения не перечислены.)
- HTML API убрано.
animateQuality
убрано. В Salet нет готовых прогресс-линеек.- Качества не показываются игроку автоматически. Вы сами задаёте, что показывать и как это выглядит.
- Мобильное меню и вся функциональность при изменении размера окна браузера отданы в CSS.
- Функция
enter
переименована вentering
. Функцияenter
также вызывается при входе в ситуацию (теперь - комнату), но сейчас вы можете легко её переписать, не угрожая логике игры. - Ситуация не может быть неявным выбором внутри самой себя.
optionText
может быть HTML, а не обычным текстом.- Вы можете поймать функцию
processClick
и использовать её для настройки интерфейса игры.- Поправка: вы можете переопределить любую функцию интерфейса. Эффекты показа или скрытия, вывод текста, стирание текста…
optionText
также может быть функцией.SimpleSituation
убрана.- jQuery (вместе с Markdown) библиотека НЕ поставляется вместе с вашей игрой. Игрок скачивает её с CDN (или, скорее всего, уже имеет её в кэше браузера). Это значит, что по умолчанию игры не запустятся без подключения к Интернету. Если хотите сделать игру доступной вне сети, вам придётся положить нужные библиотеки самостоятельно.
minChoices
убрана.- Частота ситуаций ещё не написана. (см. задачу 1)
Dendry
- По умолчанию нет опции
subtitle
. НоoptionText
- это HTML, так что вы можете оформлять её как захотите, см. #17 - Вместо одного свойства
title
в Salet есть отдельныеoptionText
, название комнаты и любой заголовок, который вы поставите в текст. Смысл в том, чтобы они могли различаться. new-page
становитсяclear
. По умолчанию оно включено для комнат.view-if
становитсяcanView
on-arrival
становитсяenter
илиbefore
.before
может быть текстом. Вам придётся описать их как функции, если вы хотите устанавливать переменные. (просто напишитеbefore: () -> season += 1
)tags
остались без изменений, но с другим синтаксисом:tags: ["weekly", "weekend", "awesome"]
- Нет особых правил по разделению вашего кода. Делайте что хотите.
- Нет особых под-комнат. Каждая комната пишется как комната. Но вы можете делать удобные функции, такие как
dialogue
, если ваши комнаты достаточно просты. - Частота ситуаций ещё не написана. (см. #18)