#Геймдев #ИгровойДвижок #NewEngine #КайлаИГеймДев #Игры #Kayla #GameEngine #Modular #Snapshot #Gizmo 🛠 KAYLA SYSTEMS: Ранняя версия Object Gizmo — Как мы учим движок «трогать» объекты

Привет, это Кайла. Когда мы начинали NewEngine, у нас был треугольник. Потом — куб. Потом — сцена. Но всё это было статично. Как музейный экспонат.

Сегодня мы сделали шаг к интерактивности: Object Gizmo — инструмент, который позволяет перемещать, вращать и масштабировать объекты прямо в 3D-пространстве. Это не просто «ещё одна фича». Это фундамент для редактора, без которого невозможен никакой AAA-воркфлоу.

🧩 Что такое Object Gizmo Если вы работали в Unity, Unreal или Blender, вы знаете эти трёхцветные стрелки, круги и квадраты, которые появляются вокруг выделенного объекта. Их задача — дать дизайнеру или художнику интуитивный контроль над трансформациями:

  • Перемещение (стрелки X/Y/Z)
  • Вращение (окружности вокруг осей)
  • Масштабирование (квадраты на концах осей)

В NewEngine мы реализовали раннюю версию такого gizmo. Пока — без изящного дизайна, но с правильной архитектурой. ++ ⚙️ Как это работает под капотом++ 1. Gizmo — отдельный модуль-плагин Как и всё в NewEngine, gizmo живёт в своём крейте — newengine_gizmo. Он загружается как DLL, регистрирует свои команды в консоли и подписывается на события ввода и рендера.

2. Рендеринг через Vulkan Gizmo рисуется прямо нашим рендерером, но в отдельном проходе поверх сцены. Для линий мы используем тот же пайплайн, что и для отладки, но с собственными шейдерами (цвета осей, прозрачность).

Ключевой момент: все вычисления позиций осей идут через реестр математики. Координаты стрелок, углы поворота, масштаб — всё это запрашивается у newengine-math по идентификаторам операций. Благодаря этому мы можем, например, подменить стандартные формулы на специфические для криволинейных пространств, просто зарегистрировав другой плагин.

3. Интеграция с ECS и сценой Gizmo работает не с абстрактными «объектами», а с Entity. Когда дизайнер выделяет сущность в редакторе, gizmo получает её компонент Transform и начинает отслеживать ввод мыши.

Движение мыши преобразуется в смещение в экранных координатах, затем через реестр математики — в мировое смещение вдоль выбранной оси.

4. Горячая перезагрузка Прямо сейчас можно править код gizmo, перекомпилировать gizmo.dll — и новая версия подхватывается без перезапуска движка. Это значит: экспериментировать с дизайном контролов можно в реальном времени. ++ 🧠 Почему мы сделали это именно так++ Мы могли бы нарисовать три линии в коде и назвать это «gizmo». Но мы хотим, чтобы NewEngine был расширяемым инструментом, а не монолитом.

Плюсы нашего подхода:

  • Любой разработчик может написать свой gizmo. Хотите ось-спираль для вращения? Просто создайте свой плагин.
  • Математика не зашита в коде. Все преобразования — через реестр. Можно менять математику под конкретные задачи.
  • Gizmo не знает о сцене ничего лишнего. Только компоненты Transform — остальное через ECS-запросы. ++ 🔮 Что дальше++ Ранняя версия уже умеет:
  • Отображать оси перемещения (красный X, зелёный Y, синий Z)
  • Перемещать объект мышью вдоль выбранной оси
  • Переключаться между локальной и глобальной системой координат

В планах:

  • Вращение и масштабирование
  • Поддержка нескольких выделенных объектов
  • Привязка к сетке (snapping)
  • Кастомизация внешнего вида через шейдеры
  • И, конечно, полноценная интеграция с редактором, который мы будем строить поверх NewEngine. ++ 💬 Вместо послесловия++ Object Gizmo — это не просто «стрелочки на экране». Это первый настоящий инструмент взаимодействия в NewEngine. То, что отличает движок от рендерера.

Когда дизайнер сможет взять мышью куб и передвинуть его интуитивно — это будет момент, когда NewEngine перестанет быть «ещё одним графическим проектом» и станет реальным инструментом для создания игр.

Мы близки к этому моменту.

KAYLA SYSTEMS 🎮 Строим будущее, не спрашивая разрешения

#Геймдев #ИгровойДвижок #NewEngine #КайлаИГеймДев #Игры #Kayla #GameEngine #Modular #Snapshot #Gizmo
🛠 KAYLA SYSTEMS:
Ранняя версия Object Gizmo — Как мы учим движок «трогать» объекты
Привет, это Кайл... | Сетка — социальная сеть от hh.ru