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/
When your graphics programmer tells you to stop simulating off-screen cloth, show them this video.
October 13, 2025 at 9:19 PM
Reposted by Erin Catto
I'm an #IndieDev building a custom engine for my medieval fantasy survival game.

Some things I've done so far:
Simulation with client / server networking
Basic DX12 renderer
Asset pipeline
Character movement and animation
#ProcGen world creation
Basic UI
Basic Audio
Basic Health / Combat
October 5, 2025 at 12:07 AM
A couple barriers to C development are lack of a fast sorting library and a fast hash set and map. I've found these two libraries to be excellent at providing those. They are macro based, but I think the trade-off is worth it. Both work with C99.
github.com/svpv/qsort
github.com/JacksonAllan...
October 1, 2025 at 4:24 PM
Pinched wrists on ragdolls are caused by twist bone poses living in the animation data. Twist bones are procedural and computed based on the pose of animated bones, so they should computed as a post process at runtime to fix this. See www.youtube.com/watch?v=Jkv0... by @bobbyanguelov.bsky.social
September 17, 2025 at 5:03 PM
Silksong is using Unity? So using Box2D?
September 4, 2025 at 5:21 PM
I love physics based walking simulations. I'm also pleased the author was successful using Box2D (v3.1?) www.youtube.com/watch?v=aBp-...
AI Cat Learning to Run
YouTube video by Pezzza's Work
www.youtube.com
August 30, 2025 at 8:29 PM
This video is great for teaching the basics of GJK. However, the approach is flawed for computing distance and only works for determining separation true/false. Unfortunately the author has disabled comments and people keep using this and ending up with broken code. www.youtube.com/watch?v=Qupq...
Implementing GJK - 2006
YouTube video by Casey Muratori
www.youtube.com
July 11, 2025 at 3:03 PM
Conventional wisdom is that you need a complex and expensive direct solver to handle high mass ratios and long chains.

Box2D has an iterative SoftStep solver that uses sub-stepping and soft constraints to handle high mass ratios and long chains.
April 6, 2025 at 5:46 PM
I’ll be speaking about Box2D optimizations at the #GDC2025. I’ll be diving into the details of implementing fast continuous physics. This presentation has a new format I’ve developed recently. I’m really excited to share it!
schedule.gdconf.com/session/opti...
Optimizing Continuous Physics in Box2D | 2025 Schedule | Game Developers Conference (GDC)
Attend 750 sessions for game designers, programmers, artists, producers, audio, business, and marketing professionals over 5 days at GDC.
schedule.gdconf.com
February 13, 2025 at 6:12 PM
Tangent speed is a new Box2D surface property that lets you easily make conveyor belts or launch ramps like this. youtu.be/WUxqUSk79nE
Launch ramp
YouTube video by Erin Catto
youtu.be
January 26, 2025 at 11:59 PM
Rolling resistance using a constraint so it works on ramps.

www.youtube.com/watch?v=pRe6...
Rolling resistance
YouTube video by Erin Catto
www.youtube.com
January 25, 2025 at 8:06 PM
Compile Score is so good. This view lets me find out how vector is getting included, even implicitly. github.com/Viladoman/Co...
December 3, 2024 at 9:56 PM
I spent a day debugging a Linux server bug for our game. Apparently code like this is undefined behavior and Clang may optimize it to garbage (but not always).

struct Vec { float x, y, z; };

Vec myVec;
int index = 2;
return (&myVec.x)[index]; // UB
November 15, 2024 at 7:43 PM
The benchmark suite in Box2D has unlocked some easy optimizations. For example, how much should a bounding box be inflated? This is hard to answer without benchmarks. So I tried several values and ran the benchmarks for each one. Result is a 17% gain on this scenario and no regressions elsewhere.
November 12, 2024 at 5:45 PM