Что такое модульность и зачем она нужна в Claw Engine

Интервью с руководителем модулей Claw Engine — Кириллом Матановым

1. Модульность

Это принцип проектирования, при котором движок разбивается на независимые, функционально завершённые части — модули. Каждый модуль можно разрабатывать, тестировать или подключать отдельно, без вмешательства в ядро.

В этом интервью с Кириллом мы подробно обсудили архитектуру Claw Engine и один из её ключевых принципов — модульность.

Кирилл, расскажи о себе, и чем ты занимаешься в проекте?

Я закончил направление «Информатика и вычислительная техника» и сейчас учусь на втором курсе магистратуры в МИЭМ. Два года работал разработчиком в Bear Head Studio, а сейчас уже второй год руковожу проектами. Отвечаю за координацию команд, постановку задач и развитие Claw Engine.

Как у вас родилась идея модульной архитектуры в Claw Engine?

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

2. Задачи модульной концепции

Какие проблемы вы хотели решить?

Существующие движки часто имеют избыточный функционал: пользователю приходится загружать огромные пакеты, даже если он использует лишь малую часть возможностей. Мы стремились к тому, чтобы каждый пользователь движка получал ровно то, что нужно для его задач. Если разработчик делает RPG или симулятор — он может подключить модуль LOD и генерацию ландшафта с погодными условиями. Хочет ускорить процесс программирования — добавляет модуль НОД. Нужно создать большое количество объектов окружения — помогут генеративные модули.

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

Как модульность помогает команде?

Модульность упрощает работу: каждый строит нужную архитектуру на базе основного движка.

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

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

В итоге каждый участник команды получает нужный ему инструментарий.

Какие преимущества в скорости разработки и тестирования?

Модульная архитектура значительно ускоряет процесс работы. Команды могут разрабатывать свои части движка параллельно, не затрагивая базовое ядро и не мешая друг другу. Это позволяет тестировать модули независимо, подключать их без конфликтов и быстро проверять результаты.

3. Какие модули есть в Claw Engine

Какие модули уже реализованы, какие будут реализованы?

На текущем этапе в движке реализованы ключевые модули:

  • LOD — система уровней детализации.
  • Генерация приключений — генерация ландшафта, наполнение мира объектами и их раскраска/текстурирование.
  • Погодные системы — генерация облаков, системы частиц и прочие эффекты погоды.
  • Нодовая система (ноды) — для сборки логики/контента через визуальные блоки.
  • ML-агент для поведения NPC — модель готова, сейчас идёт её интеграция в Claw Engine.

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

Было ли сложно разрабатывать модули?

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

4. Практика и опыт

С какими трудностями столкнулись?

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

Какие ошибки допустили и как их исправили?

Яркий пример — ошибка в модуле LOD с импостерами — проекциями 3D-модели. Идея импостеров — снизить нагрузку, подставляя облегчённые проекции, но у нас выбор проекции происходил слишком часто и дорого по времени — прироста FPS не было. Мы упростили алгоритм выбора проекции, сделали его константным по сложности. Проблема исчезла.

В каких случаях модульность не подходит?

Она не подходит для продуктов, где набор функций должен быть одинаков для всех пользователей и не предполагает вариативности. Например сервисы вроде доставки еды: там единообразие и предсказуемость важнее гибкости и настраиваемости.

5. Технический принцип работы модульной системы

Принцип — «ядро + плагины»:

  • есть легкое, самостоятельное ядро движка, в нем только необходимое для создания игры;
  • дополнительные функции реализованы в виде модулей или плагинов, которые подключаются по мере необходимости;
  • модули взаимодействуют напрямую с ядром , что снижает их зависимость друг от друга. Благодаря этому можно разрабатывать и тестировать модули отдельно, подгружать их динамически и минимально вмешиваться в ядро.

6. Планы на будущее

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

1
3 комментария