Box3d: создатели box2d выпустили open source движок физики для 3d

03.07.2026 · 5 мин

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

Что такое box3d

Box3D — это новый движок физики для трёхмерных игр. По сути, это форк Box2D, адаптированный для работы в 3D-пространстве.

Автор подчёркивает: ядро архитектуры осталось почти идентичным оригинальному Box2D. Если вы работали с Box2D, переход на трёхмерную версию не станет культурным шоком.

Вот что уже есть в релизе:

BOX3D: АРХИТЕКТУРА СОЛВЕРА
──────────────────────────
┌─────────────────────────────────────┐
│  Входные данные: позиции, скорости  │
└──────────────┬──────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  Broad Phase    │  Narrow Phase     │
│  (быстрая      │  (точная          │
│   фильтрация)  │   проверка)       │
└──────────────┬─┴────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  Контакт-солвер (SIMD, многопоточный)│
└──────────────┬──────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  Интеграция (Эйлер / полушаг)       │
└──────────────┬──────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  Выход: обновлённые позиции/скорости│
└─────────────────────────────────────┘
Упрощённая схема работы физического солвера Box3D

Почему возникла потребность

Автор статьи работает над игрой The Legend of California с 2022 года. Игра построена на Unreal Engine 5, и встроенная физическая система Chaos создала несколько проблем.

Гироскопические моменты. В игре нужна реалистичная физика для тонких объектов вроде винтовок. Без поддержки гироскопических моментов такие предметы могли вращаться бесконечно, сохраняя угловую скорость. Epic добавили эту функцию в Chaos только в конце 2024 года.

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

Масштаб. На сервере одновременно существуют сотни тысяч сущностей. Стандартный broad-phase не справлялся.

В какой-то момент стало ясно: либо пытаться чинить чужое решение, либо написать своё.

Откуда взялся box3d

Ключевую роль сыграл Дирк Грегориус из Valve. Он работал над физическим движком Rubikon для Half-Life: Alyx и поддерживает его упрощённую версию для личных проектов.

Автор статьи форкнул эту версию и подключил напрямую к Unreal. Результат оказался отличным: гироскопические моменты заработали, деревья падали как надо.

Параллельно Box2D версии 3.0 получил множество оптимизаций. В какой-то момент стало очевидно, что поддерживать два разных движка с разными API — это пустая трата сил. Автор заменил API, структуры данных и алгоритмы в своём форке на код из Box2D.

Так Rubikon-Lite постепенно превратился в Box3D. При этом часть кода из Rubikon всё ещё осталась: генерация выпуклых оболочек и некоторые алгоритмы коллизий.

ЭВОЛЮЦИЯ BOX3D
──────────────
2015  │  GDC: алгоритм гироскопических моментов
      │
2022  │  Начало работы над The Legend of California
      │
      │  Проблемы с Chaos в Unreal Engine 5
      │
      ▼
2023  │  Форк Rubikon-Lite от Dirk Gregorius (Valve)
      │
      │  Подключение к Unreal, работает!
      │
      ▼
2024  │  Миграция кода из Box2D v3.0
      │
      │  Замена API, структур данных, алгоритмов
      │
      ▼
2026  │  Box3D — open source релиз
      │
      │  v0.1 (скоро)
Хронология создания Box3D

Кто уже использует

Помимо The Legend of California, Box3D уже применяется в нескольких проектах:

Кому это пригодится

Если вам нравится философия Box2D — минимализм, понятный код, отсутствие лишних абстракций — то Box3D покажется знакомым.

Движок подойдёт, если вы:

Как начать

Установка стандартная для C++ проектов:

  1. Установите git и CMake
  2. Клонируйте репозиторий Box3D
  3. Следуйте инструкциям в README

Документация доступна онлайн, а примеры кода — в тесте HelloWorld.

Что дальше

На данный момент Box3D всё ещё в статусе альфа-версии. В планах — улучшение движения персонажей, оптимизация работы с «призрачными» коллизиями, общие оптимизации производительности и улучшенный солвер для соединений.

Автор обещает поддерживать проект неопределённо долго, как и Box2D. В отличие от «старшего брата», Box3D будет открыт для pull-запросов.

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

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.