Портирование ваших игр с...

Портирование с Raconteur довольно просто по структуре, но вот что вам нужно проверить:

Игра

  1. Salet не имеет зависимостей от библиотек. Raconteur и Undum уже переработаны в его ядре. Почистите свой package.json
  2. ВАЖНО Salet использует класс room в то время как Raconteur оперирует над классом situation
  3. ВАЖНО Salet использует свойство dsc вместо content
  4. (совет) Вы можете использовать elements.js из Raconteur, но обычно нет нужды городить зависимости ради одной-двух функций. Просто пишите (content,ref) -> "<a href='_writer_#{ref}' class='once'>#{content}</a>" вместо (content,ref) -> a(content).once().writer(ref). Использование то же самое.
  5. Вам может понадобиться проверить свои функции before и after и переключить их на enter и exit. Это зависит от желаемого поведения.
  6. Вы можете разбить свою игру на несколько файлов, что не отразится на коде. Ищите concat в Gulpfile.coffee
  7. Также см. раздел "изменения по сравнению Undum" ниже.

CSS и HTML разметка

  1. Salet использует прекомпилятор Sass, когда Raconteur предпочитает LESS.
  2. Также Salet использует фреймворк Bootstrap (v4)
  3. Salet по умолчанию прячет блок "tools" вместе с качествами персонажа. Они не показываются игроку.
  4. ВАЖНО Salet ожидает, что вы будете загружать jQuery и компилятор Markdown как клиентские библиотеки Javascript. Raconteur просто склеивает всё в один большой комок. (jQuery вставляется дважды)

Нововведений по сравнению с Undum слишком много, чтобы портировать игры как есть, но я замечу самые большие изменения. (Нововведения не перечислены.)

  1. HTML API убрано.
  2. animateQuality убрано. В Salet нет готовых прогресс-линеек.
  3. Качества не показываются игроку автоматически. Вы сами задаёте, что показывать и как это выглядит.
  4. Мобильное меню и вся функциональность при изменении размера окна браузера отданы в CSS.
  5. Функция enter переименована в entering. Функция enter также вызывается при входе в ситуацию (теперь - комнату), но сейчас вы можете легко её переписать, не угрожая логике игры.
  6. Ситуация не может быть неявным выбором внутри самой себя.
  7. optionText может быть HTML, а не обычным текстом.
  8. Вы можете поймать функцию processClick и использовать её для настройки интерфейса игры.
    1. Поправка: вы можете переопределить любую функцию интерфейса. Эффекты показа или скрытия, вывод текста, стирание текста…
  9. optionText также может быть функцией.
  10. SimpleSituation убрана.
  11. jQuery (вместе с Markdown) библиотека НЕ поставляется вместе с вашей игрой. Игрок скачивает её с CDN (или, скорее всего, уже имеет её в кэше браузера). Это значит, что по умолчанию игры не запустятся без подключения к Интернету. Если хотите сделать игру доступной вне сети, вам придётся положить нужные библиотеки самостоятельно.
  12. minChoices убрана.
  13. Частота ситуаций ещё не написана. (см. задачу 1)
  1. По умолчанию нет опции subtitle. Но optionText - это HTML, так что вы можете оформлять её как захотите, см. #17
  2. Вместо одного свойства title в Salet есть отдельные optionText, название комнаты и любой заголовок, который вы поставите в текст. Смысл в том, чтобы они могли различаться.
  3. new-page становится clear. По умолчанию оно включено для комнат.
  4. view-if становится canView
  5. on-arrival становится enter или before. before может быть текстом. Вам придётся описать их как функции, если вы хотите устанавливать переменные. (просто напишите before: () -> season += 1)
  6. tags остались без изменений, но с другим синтаксисом: tags: ["weekly", "weekend", "awesome"]
  7. Нет особых правил по разделению вашего кода. Делайте что хотите.
  8. Нет особых под-комнат. Каждая комната пишется как комната. Но вы можете делать удобные функции, такие как dialogue, если ваши комнаты достаточно просты.
  9. Частота ситуаций ещё не написана. (см. #18)
  • ru/guide/porting.txt
  • Последние изменения: 2018/04/26 14:33
  • Alexander Yakovlev