← Редактор игр

Первая игра в редакторе: герой на экране и движение по клавишам

За этот урок герой появится на экране и начнёт ходить по клавишам. Код писать не нужно: логика собирается из нод — блоков вроде «каждый кадр → сдвинуть героя». Всё делается в браузере, ставить ничего не надо.

1. Что где находится

  • Нажмите «Создать проект» и выберите заготовку игры или пустой проект. Редактор откроется сам.
  • Слева узкая полоска. Кнопка ▶ запускает игру. Ниже инструменты: нодовый редактор, редактор карт, UI-редактор и таблицы. Внизу шестерёнка: настройки и выпуск игры.
  • Справа чат с AI-помощником. Его можно свернуть кнопкой ⇆ или сузить, потянув за левый край.
  • Всё хранится на сервере в файлах проекта. Ставить программы не нужно.

2. Кто за что отвечает

  • Редактор карт — ГДЕ что стоит: земля, стены, предметы, точка появления игрока.
  • Нодовый редактор — ЧТО происходит: движение, рисование, камера, столкновения. Нет ноды — нет поведения. Объект на карте сам не ходит и не рисуется.
  • UI-редактор — экраны поверх игры: меню, счёт, кнопки.
  • Таблицы — данные, которые вы задумали заранее: опыт до уровня, предметы и цены, лут, характеристики врагов.
  • Картинки и звуки: сначала загрузить, потом зарегистрировать, потом использовать в нодах.

3. Загрузить картинку или звук

  • Перетащите файл с компьютера в окно любого редактора.
  • В нодовом редакторе картинки лягут в img/, звуки в audio/.
  • В редакторе карт картинка ляжет в открытую папку img/, в UI-редакторе — в ui/img/.
  • Файл с таким именем уже есть — редактор спросит, заменить ли. Точную копию под другим именем не загрузит и скажет, с каким файлом она совпала.
  • Кнопка «Стор» — готовые ассеты из магазина. «Добавить в проект» кладёт файлы сразу в проект.
  • Картинки: png, jpg. Звук: mp3, ogg, wav.
  • Картинки при загрузке сжимаются, как в TinyPNG: имя и размер в пикселях те же, файл легче. Нужен оригинал до пикселя — поставьте галочку «Оптимизация: без потерь» на панели картинок.

4. Зарегистрировать картинку

  1. Нода возьмёт картинку, только если та есть в списке. Список — файл assets/images.json.
  2. Откройте его в нодовом редакторе: папка assets слева. Снизу появится панель с файлами из img/.
  3. Перетащите файл на холст. Появится нода Register Image с именем файла.
  4. Ctrl+S. Плитка с галочкой ✓ уже добавлена.
  5. Звуки так же: файл assets/audio.json, нода Register Sound.

5. Мышь и клавиши

  • Двойной клик по пустому месту или Tab — поиск ноды. Наберите название, Enter.
  • Связь: тяните от кружка выхода к кружку входа. Белые порты — порядок выполнения, цветные — данные.
  • Число или текст можно вписать прямо в поле ноды, ничего не подключая.
  • Колесо — зум. Два пальца по тачпаду — двигать холст. Space + тянуть или средняя кнопка — тоже.
  • Delete — удалить. Ctrl+Z — отменить. Ctrl+C и Ctrl+V — копировать. Ctrl+L — расставить ноды красиво. Ctrl+M — свернуть выделенные вычисления в метод модуля.
  • Ctrl+S или кнопка Save — сохранить. Можно и не сохранять перед тем, как открыть другой файл: правки подождут в браузере и вернутся, когда вы откроете файл снова. Save записывает на диск и их тоже.

6. Создать объект (сущность)

  1. Сущность — пустая коробка. Компоненты — что в ней лежит: позиция, картинка, метка «игрок».
  2. В game.json: On Start → Create Entity.
  3. К выходу entity подключите Add Position (x, y) и Add Sprite (texture из Image Asset, width, height). Белых портов у них нет: они вешаются на сущность.
  4. Игроку добавьте Mark As Player. Он попадёт в запрос player.
  5. После Create Entity по белому порту — Register Entity. Без этого системы объект не увидят.
  6. Для столкновений: Add Collider Rect или Add Collider Circle.

7. Нарисовать все объекты

  1. Слева у папки systems нажмите «+». Двойной клик по файлу — переименовать, например в draw.json.
  2. Внутри: On System Update → Draw Map Below → For Each Entity с запросом sprite → Draw Map Above.
  3. В ветку body цикла: Draw Image. layer — из Get Layer (world).
  4. Get Component (entity, sprite): texture → texture, width и height → dstW и dstH.
  5. Get Component (entity, position): x → dstX, y → dstY. Сдвиг картинки — прибавьте offset через Vector2 X, Vector2 Y и Add.
  6. В game.json: Add System, выберите draw.json. Ctrl+S, ▶.

Draw Map Below и Draw Map Above рисуют карту под объектами и над ними. Карты нет — они ничего не делают.

8. Двигать по клавишам

  1. В game.json: Register Action. Нажмите кнопку на ноде, потом клавишу D. В action впишите right. Ещё одна нода: A и left.
  2. Новый файл systems/move.json: On System Update → For Each Entity с запросом player.
  3. В ветку body: Branch. Вход condition — из Action Pressed (right).
  4. В ветку true: Add To Component Fields (entity, position). Вход x — Multiply: скорость 200 × delta с выхода On System Update.
  5. Для left — то же со скоростью −200. Для вверх и вниз — поле y.
  6. В game.json: Add System с move.json — выше draw.json.

Умножайте скорость на delta: тогда она одинакова на быстрых и медленных компьютерах.

9. Запустить игру

  • Кнопка ▶ слева сверху.
  • Редактор сам сохранит открытый файл, соберёт проект и откроет игру в новом окне.
  • Окно не появилось — браузер заблокировал всплывающее окно. Разрешите его для сайта.
  • Ошибка сборки покажется сообщением: в нём файл и нода, которые нужно поправить.
  • Чёрный экран — нет системы отрисовки или картинка не зарегистрирована.

Другие уроки