Состоялся релиз Box2D 3.0 — открытого физического движка для работы с двумерными объектами, разрабатываемого на Visual C++ под Windows.
Новая версия использует гибридный спекулятивный и time of impact подход. Он имеет следующие преимущества:
полигональная оболочка больше не требуется;
минимальные паузы в движении;
задачи можно решать параллельно;
поддерживаются пули.
В Box2D 3.0 полностью обновили API. В нём нет классов C++ и минимально использовались макросы. Все внутренние данные скрыты в каталоге src, что делает общедоступные заголовки include меньше и проще для чтения.
Разработчик перешёл с C++ на C. Он решил уделить основное внимание многопоточности и SIMD. Его вдохновил дизайн потоков bepu, и он выбрал Tracy, опираясь на enkiTS для управления потоками и пулом задач. Также был реализован набор инструкций процессора AVX2.
Версия 3.0 поставляется с Soft Step, который более стабилен и обрабатывает более более длинные цепочки тел, более крупные стеки и так далее.
Разработчик смог повысить точность алгоритмов, и теперь симуляция хорошо работает в мирах размером до 20 км.
Он представил консольное приложение для бенчмаркинга, которое выдаёт файлы CSV и показывает, насколько хорошо v3 масштабируется с количеством ядер и различными процессорами, если они совместно используют кэш L2/L3. Тесты показывают, что новая версия более чем в два раза быстрее v2.4.
О том, как создать собственный физический 2D-движок, можно почитать здесь.
Источник: habr.com