Suika3: руководство по началу работы
====================================

Добро пожаловать в Suika3! Это руководство поможет вам быстро запустить
свой первый проект визуальной новеллы всего за несколько простых шагов.

## 1. Установка

Сначала запустим движок, чтобы вы сразу увидели результат.

### Windows

- **Скачайте и распакуйте**
    - Скачайте [Suika3-SDK-Full.zip](https://github.com/awemorris/suika3/releases/latest/download/Suika3-SDK-Full.zip) и распакуйте его в удобную папку.
- **Запустите**
    - Откройте папку и запустите `suika3.exe`, чтобы открыть пример игры.

### macOS

- **Скачайте и распакуйте**
    - Скачайте Suika3-full.zip и распакуйте его в удобную папку.
- **Подключите образ диска**
    - Перейдите в `SDK/macos/` и откройте `Suika3.dmg`.
- **Настройте пакет приложения**
    - Скопируйте приложение `Suika3` из DMG в ту же папку, где находится `suika3.exe` (и папка с данными).
    - Примечание: пакет приложения должен находиться рядом с данными игры, иначе он не будет работать правильно.
- **Запустите**
    - Дважды щелкните приложение `Suika3`, чтобы открыть пример игры.

### Linux

- **Скачайте и распакуйте**
    - Скачайте Suika3-full.zip и распакуйте его в удобный каталог.
- **Установите пакет Flatpak**
    - Перейдите в `SDK/linux/` и откройте `Suika3.flatpak` (или выполните `flatpak install --user Suika3.flatpak`).
    - Это связывает файлы `.novel` и `.ray` с движком Suika3.
- **Запустите**
    - Откройте распакованную папку, затем дважды щелкните `start.novel`, чтобы запустить пример игры.

## 2. Интеграция с Visual Studio Code

Интеграция с VSCode доступна в Windows, macOS и Linux.

Также для подсветки синтаксиса доступен [NovelML-Helper](https://github.com/lalalll-lalalll/NovelML-Helper).

- Откройте распакованную папку в `Visual Studio Code`.
- Откройте палитру команд.
- Выберите `Run Task`.
- Выберите один из вариантов:
    - `Suika3: Run` (или `Ctrl+Shift+B`)
    - `Suika3: Create a package`
    - `Suika3: Build Android APK`
    - `Suika3: Build iOS IPA`
- Откройте `PROBLEMS`, если возникла ошибка.

## 3. Настройте свою историю (`start.novel`)

Теперь заставим игру вывести именно тот текст, который вам нужен.

- **Откройте:**
    - Найдите файл `start.novel` в папке проекта и откройте его в любимом текстовом редакторе.
- **Отредактируйте:**
    - Добавьте следующий тег в начало файла:
    ```
    [text text="Привет, мир! Это моя первая игра."]
    ```
- **Проверьте:**
    - Сохраните файл и снова запустите Suika3.
    - На экране должно появиться ваше новое сообщение.

## 4. Настройте экран (main.ray)

Вы можете легко изменить внешний вид окна вашей игры.

- **Найдите:**
    - Откройте файл `main.ray` в редакторе.
- **Измените:**
    - Найдите раздел `func setup()`.
    - Здесь можно изменить разрешение и заголовок окна:
    ```
    // Вызывается при открытии окна.
    func setup() {
        return {
            width:      1280,            // Ширина вашей игры
            height:     720,             // Высота вашей игры
            title:      "Моя первая игра", // Заголовок вашей игры
            fullscreen: false            // Установите true для полноэкранного режима
        };
    }
    ```

## 5. Под капотом (дополнительные советы)

Нижняя часть файла `main.ray` содержит основную логику движка. Лучше
оставить эти функции как есть, если вы не выполняете расширенную настройку:

- `func start()`:
    - Вызывается один раз при запуске игры.
- `func update()`:
    - Выполняется каждый кадр для обработки игровой логики.
- `func render()`:
    - Отрисовывает все на экране после завершения обновления.

```
// Вызывается перед запуском игры.
func start() {
    // Загружайте плагины здесь.
    // Suika.loadPlugin("testplugin");

    // Не удаляйте следующую строку.
    Suika.start();
}

// Вызывается перед отрисовкой кадра.
func update() {
    // Не удаляйте следующую строку.
    Suika.update();
}

// Вызывается при отрисовке каждого кадра.
func render() {
    // Не удаляйте следующую строку.
    Suika.render();
}
```

> [!TIPS]
> Эти функции являются основным механизмом `Playfield Engine`, на котором
> работает Suika3. Suika.start(), Suika.update() и Suika.render() должны
> оставаться на месте, чтобы игра работала правильно.
