Всем привет! На связи Bear Head Studio, команда Claw Engine. Мы рады сообщить об открытом релизе нашего игрового движка :-)

Предыстория студии

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

Логотип Bear Head Studio
Логотип Bear Head Studio

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

Project Revival
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. Через него можно скачать движок, создавать и добавлять проекты.

Хаб Claw Engine
Хаб Claw Engine

Ядро

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

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

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

ECS
ECS

Оба решения были модифицированы для лучшей интеграции в нашу архитектуру проекта.

Модуль пользовательского интерфейса

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

Главный экран
Главный экран

Модули генерации локаций и погоды

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

Модуль генерации локаций
Модуль генерации локаций

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

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

Генерация погодных условий
Генерация погодных условий

Модуль LOD

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

Исходная и упрощенная версии моделей
Исходная и упрощенная версии моделей

Подсистема оценки сложности сцены

В Claw Engine есть функция GenerateHeatmap: она смотрит на размер сцены, считает пересечения объектов и рисует картинку с координатной сеткой и легендой, чтобы сразу понять, где области с большим количеством полигонов.

Скрытый текст

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

Пример тепловой карты в Claw Engine
Пример тепловой карты в Claw Engine

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

Пример тепловой карты сцены, где содержится много объектов с большим количеством полигонов
Пример тепловой карты сцены, где содержится много объектов с большим количеством полигонов

Подсистема импостинга

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

Атлас проекций
Атлас проекций

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

Импостер и исходная модель
Импостер и исходная модель
Скрытый текст

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

Модуль физики

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

Обработка коллизий
Обработка коллизий

Что дальше?

Разработка собственного движка — задача сложная, нервная, но очень интересная. Для Bear Head Studio это челлендж, который мы намерены выполнить.

Дальше — наращивание базовой функциональности, внедрение генеративных инструментов в Claw Engine и разработка технодемки ?

Следите за нашими успехами в тгк студии или на форуме Claw Engine

Комментарии (0)