Всем привет! На связи 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
Автор: Bear_Head_Studio
