Всем привет! На связи Bear Head Studio, команда Claw Engine. Мы рады сообщить об открытом релизе нашего игрового движка :-)
Предыстория студии
В 2020 году студенты-технари из МИЭМ НИУ ВШЭ решили собрать команду и разработать свою видеоигру. Придумали название, нарисовали логотип, раскидали листовки по универу и отобрали самых лютых фанатов видеоигр. Так появилась Bear Head Studio.

Наш первый проект — шутер Project Revival. Пусть он получился кривеньким, но это стало нашим стартом: мы научились работать в команде, прокачали харды, стали узнаваемой тусовкой в альма-матер и загорелись новыми безумными идеями.

С чего начался Claw Engine
Первое сотрудничество с игровой компанией
В 2021 университет познакомил наш коллектив с игровым подразделением крупной компании (назовем их X). X просили нас разработать модуль генерации локации и точек интереса на Unity. Мы активно включились в задачу, к февралю 2022 выполнили все договоренности и параллельно создали дополнительные наработки, которые могли использовать в собственных интересах.
Применение наработок
Оставшиеся наработки натолкнули нас на мысль создать собственный движок под потребности отечественного рынка.
Сначала это была локальная шутка.
Потом план-капкан: взять азиатский опен-сорс движок Stride и прицепить к нему наш модуль. Долго и подробно изучали, как работает взаимодействие между объектами, файловая структура, пользовательский интерфейс и скрипты.
После полугодовой попытки разобраться в японской логике мы решили, что с полученным багажом знаний проще разработать свое ядро.
Результат
Сейчас наш движок не ограничивается только ядром. Ядро, как и везде, является только связующим элементом в системе. К нему подключаются модуль пользовательского интерфейса, погоды, физики, LOD и тот самый модуль генерации локаций, с которого началась история Claw Engine.
Концепция Claw Engine
Соперничать с Unity или Unreal — безумие, поэтому мы сосредоточились на том, чтобы сделать движок доступным, легким и генеративным: таким, чтобы инди-разработчик мог быстро собрать на нем демку и провести тестирование игровых механик.
Основой концепцией нашего движка является разработка такого инструментария, который бы автоматизировал рутинную и сложную работу при разработке игр. Это может быть как расстановка объектов на сцене, так и поиск 3D моделей, написание скриптов, подготовка материалов. Широта задач при разработке игры слишком велика, и не каждый человек с интересной идеей сможет разобраться во всем.
Для достижения нашей цели мы работаем над следующими модулями:
ядро
генерация локаций
генерация погоды
модуль оптимизации графики LOD
модуль физики
модуль генерации звукового окружения
модуль генерации текстур
модуль генерации поведения неигровых персонажей

Текущий релиз 1.2.0
Теперь любой желающий может скачать MVP Claw Engine. В него входит:
хаб для загрузки движка
ядро
пользовательский интерфейс
модули генерации погоды и локаций
модуль оптимизации графики LOD
модуль физики
Остальные модули пока не интегрированы в Claw Engine, а часть из них находится на ранней стадии разработки.
Хаб Claw Engine
Хаб — это единая точка входа для взаимодействия с Claw Engine. Через него можно скачать движок, создавать и добавлять проекты.

Ядро
Во время разработки ядра мы следовали основным требованиям к движкам: кросплатформенность и современный подход к программированию игровых приложений.
Для обеспечения кроссплатформенности в будущем мы используем фреймворк 3D приложений Monogame, который поддерживает различные графические API. Это решение позволило нам отложить задачу рендеринга, и мы сконцентрировались на архитектуре проекта и детально изучили реализацию компьютерной графики.
Для обеспечения модульности мы используем архитектурный паттерн ECS — разделение на сущности, компоненты, системы. В качестве готового решения был взят LeoECS, как хорошо документированный инструмент.

Оба решения были модифицированы для лучшей интеграции в нашу архитектуру проекта.
Модуль пользовательского интерфейса
После создания нового проекта или открытия существующего, пользователь попадает на главный экран приложения. Здесь присутствует инструменты для настройки параметров визуализации, а также доступен фрейм симуляции — это основное пространство, где происходит отображение и визуальная отладка разрабатываемых сцен. Интерфейс движка предусматривает модульную структуру остальных окон, которые пользователь может сжимать и растягивать, адаптируя рабочую среду под индивидуальные предпочтения и рабочие процессы.

Модули генерации локаций и погоды
Модуль генерации погоды предназначен для создания и наполнения виртуальных ландшафтов. Он позволяют генерировать террейн с помощью настроек карт шумов и мета-информации, автоматически расставлять объекты (POI) по заданным 3D-моделям и текстурам.

Для симуляции погодных явлений, таких как дождь или снег, используется система частиц, которая активируется в указанной области. Чтобы добиться естественного и равномерного распределения осадков, применяется метод триангуляции выделенной площади. Частицы генерируются внутри полученных треугольников, что гарантирует отсутствие пустых зон или неестественных скоплений. Разработчик может гибко управлять границами зоны эффекта, а также откатывать внесенные изменения.
Симуляция облаков реализована с помощью эффективной техники билбордов. Этот метод использует 2D-текстуры, которые благодаря специальному скрипту всегда ориентированы плоскостью к камере. Такой подход обеспечивает отличную производительность без необходимости в сложной оптимизации. Для удобства было добавлено несколько готовых пресетов, а также режим тонкой настройки, где можно регулировать плотность генерации облаков, их разброс и высоту расположения. Каждое облако является отдельным объектом, что позволяет гибко взаимодействовать с ним.

Модуль LOD
Модуль LOD предназначен для оптимизации и анализа 3D-сцен. Модуль позволяет оценивать сложность сцены с помощью тепловых карт распределения полигонов, профилировать производительность в реальном времени через LoD-профайлер, просматривать отдельные модели в превьюере с возможностью изменения уровня детализации, генерировать атласы проекций (импостинг) и автоматически создавать уровни детализации с настройкой их качества и расстояния срабатывания.

Подсистема оценки сложности сцены
В Claw Engine есть функция GenerateHeatmap: она смотрит на размер сцены, считает пересечения объектов и рисует картинку с координатной сеткой и легендой, чтобы сразу понять, где области с большим количеством полигонов.
Скрытый текст
Heat map (тепловая карта) — это способ визуализации данных, при котором значения отображаются с помощью цвета: «горячие» оттенки (красный, жёлтый) обозначают высокие показатели, «холодные» (синий, голубой) — низкие. Такой метод позволяет быстро выявлять зоны повышенной активности или наоборот — недостаточной нагрузки.

В нашем движке heat map используется для анализа локаций в игре. Она показывает области с перегрузкой, дисбалансом или пустыми зонами, что позволяет точно оптимизировать уровни, улучшать производительность и обеспечивать плавный и комфортный игровой процесс.

Подсистема импостинга
Подсистема импостинга — это инструмент оптимизации рендеринга, предназначенный для снижения нагрузки на сцену за счёт замены сложных 3D-объектов их двумерными проекциями. Принцип работы основан на предварительной генерации набора изображений (проекций) исходной 3D-модели под разными углами обзора. Во время выполнения сцены подсистема автоматически определяет направление взгляда пользователя и подставляет соответствующую проекцию вместо полноценной модели.

Такая замена значительно уменьшает количество полигонов, которые необходимо отрисовывать, что напрямую снижает нагрузку на видеокарту и повышает производительность. Визуально объект выглядит так же, как и оригинальная модель, но в рендеринге участвует только плоское изображение, которое почти не требует вычислительных ресурсов.

Скрытый текст
Использование импостинга особенно эффективно в сценах с большим количеством однотипных или удалённых объектов — например, деревьями, элементами окружения или второстепенными моделями, которые не требуют точного отображения всех геометрических деталей. Подсистема позволяет оптимизировать рендеринг без заметной потери качества и освобождает ресурсы для действительно важных элементов сцены: объектов, находящихся в фокусе внимания игрока.
Модуль физики
Модуль отвечает за симуляцию физических взаимодействий объектов в сцене: он предоставляет компоненты для задания формы (Shape), физических свойств материала (Physics Material) и параметров динамики (RigidBody), поддерживает обработку событий столкновений через пользовательские скрипты, а также позволяет применять силы к объектам для моделирования движения и взаимодействия под действием внешних воздействий.

Что дальше?
Разработка собственного движка — задача сложная, нервная, но очень интересная. Для Bear Head Studio это челлендж, который мы намерены выполнить.
Дальше — наращивание базовой функциональности, внедрение генеративных инструментов в Claw Engine и разработка технодемки ?
Следите за нашими успехами в тгк студии или на форуме Claw Engine