Erin Catto
erincatto.bsky.social
Erin Catto
@erincatto.bsky.social
I created Box2D. I enjoy all kinds of programming, but specialize in physics and animation. I work in Unreal for my day job (like everyone else). C/C++ and whatever Claude spits out for me. https://box2d.org/
You can have AI walking, running, sitting, climbing, etc. They can do anything out of view.
October 15, 2025 at 3:41 AM
Pre-rolling is good for character screens in the UI. For in game cloth this could lead to frame spikes, so my favorite solution is to simulate cloth at a lower rate off-screen.
October 14, 2025 at 10:24 PM
We use this in our CI. We have some tests that run our game and test various game play systems. Catches a lot of bugs before code gets merged.
October 11, 2025 at 1:08 AM
Very cool! Have you considered using voxels? Lots of procedural generation options with those.
October 5, 2025 at 7:48 PM
Box2D version 3 has a new API written in C to make it easier to wrap. For the revision I also decided to write the internals in C to see if I liked it. It worked out well.
October 2, 2025 at 4:03 AM
I revoked your ban. Please make sure your discord account is secure.
August 23, 2025 at 5:02 PM
I tried this many years ago. I didn't like it. Lots of wasteful code subtracting the origin to make stuff work.
Want:
point = 0.5 * point1 + 0.5 * point2
Have:
point = 0.5 * (point1 - zero) + 0.5 * (point2 - zero) + zero
July 13, 2025 at 5:27 AM
Casey presents some optimizations that seem intuitive and they work correctly for determining separation. However, when computing distance and closest points there are some cases which should not be skipped.
July 11, 2025 at 3:09 PM
Better quality here: www.youtube.com/watch?v=aiFu...
Gate Lift Physics with High Mass Ratio
YouTube video by Erin Catto
www.youtube.com
April 6, 2025 at 6:07 PM
Also recommend this for hot reloading code in VS. It works quit well these days and great for UI work.

add_compile_options("$<$<CONFIG:Debug>:/ZI>")
add_link_options("$<$<CONFIG:Debug>:/INCREMENTAL>")
March 29, 2025 at 11:44 PM
tip: if you work with the generated sln you can edit the cmake files in the sln and hit f5/f7 and it will regenerate the solution in place
March 29, 2025 at 11:43 PM
I use this to avoid bringing in stuff for samples if someone is just using my library.
`if(PROJECT_IS_TOP_LEVEL)`
March 29, 2025 at 11:39 PM
The nice thing about FetchContent is users can pin to a specific version of a library easily using a tag or git commit hash.
March 28, 2025 at 11:29 PM
I recommend cmake these days. I don't like it either but it gets the job done and I can point users at all the cmake info out there. I made an example app with raylib and box2d using FetchContent. github.com/erincatto/bo...
GitHub - erincatto/box2d-raylib: Shows how to integrate Box2D with raylib
Shows how to integrate Box2D with raylib. Contribute to erincatto/box2d-raylib development by creating an account on GitHub.
github.com
March 28, 2025 at 11:27 PM
Nice! Do you have large island threading?
February 18, 2025 at 6:28 PM
February 13, 2025 at 10:02 PM