Box3D вышел. Физика в 3D переписана с нуля!
07 июля, 2026

Box3D вышел. Физика в 3D переписана с нуля!

Box3D вышел. Физика в 3D переписана с нуля!

Эрин Катто - автор культового двумерного физического движка Box2D - выпустил его трёхмерного наследника. Box3D появился не как академический эксперимент, а как боевой инструмент: движок рождался прямо в процессе разработки реального шутера и уже работает в нескольких живых проектах.

Откуда взялся Box3D и почему не Chaos

Студия Kintsugiyama делает 3D-шутер The Legend of California на Unreal Engine. Штатный физический движок Chaos их не устроил: тонкие объекты крутились как в мультике, деревья падали неправдоподобно, а при сотнях тысяч объектов производительность проседала до неприемлемого уровня. Команда сначала смотрела в сторону форка Jolt - популярного открытого 3D-физического движка. Но в итоге пошли другим путём.

За основу взяли Rubikon-Lite - упрощённый вариант движка Rubikon, известного по Half-Life, разработанный его автором как хобби-проект. Затем туда влили код, оптимизации и архитектурные решения из Box2D. Постепенно от Rubikon-Lite осталось лишь два кита: алгоритмы построения выпуклой оболочки и обработка 3D-столкновений. Всё остальное - Box2D. Получившийся гибрид с согласия всех сторон решили опубликовать как самостоятельный проект.

Что умеет новый движок

Код написан на C, соответствует стандарту C17, опубликован на GitHub под лицензией MIT. Собирается под Linux, Windows и macOS. Первый релиз - версия 0.1.0, сам Катто честно маркирует его как альфу: функциональность на месте, документация и тесты ещё в работе.

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

Из наследства Box2D в новый движок перекочевало немало мощных механик:

  • непрерывное определение столкновений - объект движется по траектории, а не перескакивает между кадрами
  • Sub-stepping Solver: симуляция дробится на мелкие шаги ради точности
  • раскраска графов для параллельной обработки групп связанных объектов
  • контроллер персонажа с полноценной обработкой движения и взаимодействий
  • трассировка лучей и форм, система сенсоров
  • заморозка неактивных объектов для экономии ресурсов
  • шарниры, пружины, моторы, колёса и сварные соединения с гибкой настройкой
  • кроссплатформенный детерминизм и запись симуляции для воспроизведения
  • SIMD-оптимизированный обработчик столкновений и поддержка многопоточности
  • координаты в типе double - для огромных открытых миров

Кто уже использует и что дальше

Box3D успел прописаться не только в The Legend of California. Его уже подхватили игровая платформа s&box, открытый движок Esoterica и многопользовательская космическая игра Space Game, рассчитанная на тысячу одновременных игроков. Для альфы - весьма внушительный список ранних adopters.

Катто обозначил приоритеты на ближайшее время: улучшение механик движения персонажей, борьба с «призрачными» столкновениями - артефактом, когда объекты реагируют на несуществующие препятствия, - оптимизации и доработка решателя соединений. Pull-реквесты от сообщества будут приниматься после подписания CLA - соглашения о передаче прав на вносимый код.

Box2D своё время стал стандартом де-факто для 2D-физики в инди-разработке. Box3D делает ставку на ту же нишу, но в трёхмерном пространстве - и стартует с уже рабочим продакшн-кейсом за плечами. Это не демо. Это движок, который уже падает деревьями на воксели.