====== Техническая подготовка ======
====== Заготовка ======
Самый простой способ - взять заготовку для игры. Проще всего открыть исходный код какой-нибудь существующей игры, например, [[https://gitlab.com/Oreolek/salet/|демо Salet.]]
- [[https://nodejs.org/en/download/|Установите node.js]], если его у вас его нет. [[https://www.youtube.com/watch?v=EtbZQ6qWuJ4|(См. видеоинструкцию)]]
- Сделайте копию проекта через ''git clone'' куда-нибудь или скачайте **[[https://gitlab.com/Oreolek/salet/repository/archive.zip?ref=master|архив]]** с кодом.
- Выполните ''npm install'' и подождите, пока не установится каждая зависимость. Не должно занять много времени.
Теперь у вас есть копия репозитория, готовая к запуску. Здесь вы и будете работать над своей игрой.
На что стоит обратить внимание в начале работы:
- Откройте ''game/begin.coffee'' и измените свойство ''salet.game_id'' на что-то другое. UUID будет хорошим выбором. Это должна быть уникальная строка, чтобы сохранения этой игры не мешали сохранениям других (если вы работает над несколькими проектами сразу), см. главу [[ru:guide:saving|«Сохранения»]]
- Сам Salet и игры на нём пишутся на [[https://coffeescript2ru.github.io/|CoffeeScript]]. Вам необязательно разбираться в CoffeeScript - просто поиграйте с исходным кодом и посмотрите, какой код на что влияет. В этом руководстве есть конкретные куски кода для копирования и вставки.
- Команда ''gulp'' запускает сборщик проекта. Обычно ''gulp'' означает ''./node_modules/gulp/bin/gulp.js'', просто оно может быть установлено глобально.
- Команда ''gulp serve'' показывает живой просмотр вашей игры. Вы можете отредактировать файлы, и ваш браузер загрузит новую версию как только вы сохраните изменения. Пока держится окно консоли (там где написано ''serving files from build'', страница в браузере автообновляется.
На этом сама подготовка закончена. Собирать игру из исходников нужно командой:
gulp dist
которая создаст папку ''dist'' с готовой игрой. Команда ''gulp zip'' автоматически упакует её в архив.
И начинайте писать!
Вы можете использовать такие сервисы, как [[http://codepen.io/|codepen.io]] или [[https://jsfiddle.net/|jsfiddle.net]] для того, чтобы создавать, редактировать и делиться ИЛ-играми.
Просто сделайте новый документ и включите в нём JS-библиотеки Marked, jQuery и ядро Salet. Последняя версия Salet доступна на [[ru:guide:using-cdn|CDN пакетов NPM.]]
==== Кратко о CoffeeScript ====
Эта вики использует интерпретатор CoffeeScript, чтобы упростить синтаксис JavaScript.
Чтобы лучше понять, как устроен код, вы можете прочитать эти статьи:
* [[https://coffeescript2ru.github.io|Сообщество CoffeeScript на русском]]
* [[https://habrahabr.ru/post/179031|Знакомство с CoffeeScript]]
Короткий текст обозначается кавычками: ''"текст"'', но также есть и длинный многострочный текст, который обозначается тройными кавычками: ''""" текст """''.
Текст может содержать логику и переменные, если они вставлены через ''#{}'': ''"привет #{name}"''. Для хитрой логики лучше использовать функции, которые описываются через ''() -> ''
А ещё отступ кода определяет логику игры.
Вы **не обязаны** писать на CoffeeScript. Можно писать на Javascript, TypeScript или других языках, которые транслируются в Javascript. Но он проще чистого Javascript и поэтому все примеры в этой вики даются на нём.
==== Кратко о Markdown ====
Весь текст в Salet пишется в синтаксисе Markdown. Например, ссылки выглядят как ''[текст ссылки](цель ссылки)'', а заголовки - как ''# Заголовок''
* [[http://rukeba.com/by-the-way/markdown-sintaksis-po-russki/|Краткое описание Markdown]]
=== Markdown и отступы ===
В Markdown пробелы имеют большое значение. Если в начале строки он видит много отступов, то думает, что это — программный код.
Но в CoffeeScript пробелы **тоже** имеют большое значение. Язык использует пробелы для того, чтобы понять, когда заканчиваются блоки описания объектов и ветвлений.
CoffeeScript позволяет писать текст без отступов, но некоторым людям так очень трудно понять, к какому коду относится текст, потому что отступы всё время "прыгают".
Salet автоматически обрезает отступы в тексте до минимального количества отступов в этом тексте, поэтому вы можете писать так:
room "prelude",
dsc: """
# Капуцин
[Читать](./_writer_read)
""",
writers:
read: """
Меня называют капyцином.
Я за это, комy следyет, yши обоpвy, а пока что не дает мне покоя слава Жан Жака Рyссо.
Почемy он все знал?
И как детей пеленать и как девиц замyж выдавать!
Я бы тоже хотел так все знать.
**(Д. Хармс)**
"""
В примере выше первый блок текста записан с пробелами так, чтобы визуально быть "внутри" блока кода, а второй блок текста — так, чтобы быть на том же уровне.
====== Начать игру с нуля ======
Если вы начинаете игру с нуля, то вы уже знаете, что такое веб-разработка и пакеты NPM. В этом случае вы просто выполняете в консоли:
npm install --save salet
Вы можете также использовать CoffeeScript, SASS, Gulp, или написать всё как вам нравится. Salet также требует подключённых библиотек [[https://code.jquery.com/|jQuery]] и [[https://github.com/chjj/marked|marked]] - с CDN или локально.