Инструменты1 августа 2026 г., 07:45 МСК🤖 Auto

Box3D: Новый физический движок от создателя Box2D с SIMD и мультипоточностью

Эрин Катто выпустил Box3D — высокопроизводительный 3D-физический движок на C17, наследующий архитектуру Box2D с поддержкой SIMD, многопоточности и кроссплатформенной детерминированности.

Баннер новости 4865

От Box2D к Box3D: Эволюция от создателя

Эрин Катто, известный разработчик, стоявший за созданием легендарного 2D-физического движка Box2D, представил Box3D. Это не просто порт, а новая архитектура, спроектированная с нуля для современных требований. Движок написан на C17 (ядро) и C++20 (примеры), что обеспечивает максимальную производительность и контроль над памятью. Версия v0.1.0 уже доступна на GitHub.

Технические особенности и производительность

Box3D использует data-oriented design (DOD) для оптимизации работы с большими объемами данных. Ключевые преимущества включают:

  • Мультипоточность и SIMD: Полная поддержка SSE2 (x86) и Neon (ARM) для ускорения вычислений. Можно отключить через флаг BOX3D_DISABLE_SIMD.
  • Детерминизм: Кроссплатформенная детерминированность физики, критически важная для сетевых игр и записи/воспроизведения (replay).
  • Решатель: Robust rigid body solver с непрерывной физикой для быстрых перемещений и вращений, а также система «островков» (island-based sleep) для экономии ресурсов.

Физические возможности

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

Категория Поддерживаемые функции
Геометрия Выпуклые оболочки (convex hulls), капсулы, сферы, треугольные сетки (triangle meshes), высотные поля (height fields)
Столкновения Непрерывное обнаружение столкновений (CCD), фильтрация столкновений, сенсорная система, рейкасты, shape casts, overlap queries
Соединения (Joints) Вращательные, призматические, дистанционные, моторные, сварные, колесные. Поддержка пределов, моторов, пружин и трения
Управление Character mover (управление персонажем), события движения тел, уведомления о сне

Интеграция и кроссплатформенность

Box3D работает на Windows, Linux и macOS. Для рендеринга в примерах используется sokol (D3D11, Metal, OpenGL 4.5) и GUI на базе imgui. Библиотека не имеет внешних зависимостей, кроме стандартной библиотеки C (и libm на Unix).

Интеграция в проект проста через CMake. Рекомендуется использовать FetchContent для загрузки из Git:

include(FetchContent)
FetchContent_Declare(
  box3d
  GIT_REPOSITORY https://github.com/erincatto/box3d.git
  GIT_TAG v0.1.0
)
FetchContent_MakeAvailable(box3d)
target_link_libraries(my_app PRIVATE box3d::box3d)

Роль ИИ в разработке

Интересный факт: Эрин Катто активно использует LLM (Large Language Models) на этапе разработки, но только для вспомогательных задач: написания unit-тестов, создания примеров, миграции кода между Box2D и Box3D, настройки сборки и code reviews. Вся основная логика и архитектура написаны вручную, что гарантирует качество и предсказуемость кода.

Лицензия и сообщество

Box3D распространяется под лицензией MIT. Разработка спонсируется через GitHub Sponsors. Pull requests в репозитории временно отключены; обратная связь принимается через GitHub Issues и Discord-сервер.

Источник: Github ↗