Sign in

Erin Catto

@erincatto.bsky.social
1K followers 208 following 58 posts

I created Box2D. I enjoy all kinds of programming, but specialize in physics and animation. Working on The Legend of California.

PostsRepliesMedia
Erin Catto @erincatto.bsky.social · 29/09/2026
New blog post on speeding up the separating axis test (SAT) using inscribed spheres: box2d.org/posts/2026/0...
box2d.org
Inscribed Spheres
The separating axis test (SAT) works well for computing contact manifolds. Unlike GJK, it is robust when shapes are very close together and it works when shapes are overlapped. Box3D uses SAT for comp...
1266
Erin Catto @erincatto.bsky.social · 19/08/2026
I added a new experimental rigid body character mover to Box2D. www.youtube.com/watch?v=MWnT...
youtube.com
Rigid body character mover
YouTube video by Erin Catto
1281
Erin Catto @erincatto.bsky.social · 21/07/2026
New blog post. Box3D is getting faster. box2d.org/posts/2026/0...
box2d.org
SIMD for Collision
In a previous post SIMD Matters I discussed the big wins I got from graph coloring to make the contact solver faster. That same approach exists in Box3D. I like to call this approach “wide SIMD”. The ...
17211
Reposted by Erin Catto
Andre Weissflog @flohofwoe.bsky.social · 19/07/2026
Ok, new sokol+box3d integration sample is out: floooh.github.io/sokol-html5/... Had to disable WASM SIMD last minute because of a LLVM/Clang regression in emsdk 6.0.3 (will investigate and write a ticket later). Also comes with a breaking sokol_shape.h update: github.com/floooh/sokol...
0275
Erin Catto @erincatto.bsky.social · 08/07/2026
Pushing Box3D to the limit. A pyramid with 16290 boxes. Stabilized by contact recycling. www.youtube.com/watch?v=vG4H...
youtube.com
Pushing Box3D to the limit
YouTube video by Erin Catto
3293
Erin Catto @erincatto.bsky.social · 01/07/2026
I’m happy to announce the release of a new open source 3D physics engine called Box3D. I’ve been working on this project for a few years now, but it represents over 20 years of experience writing physics engines for games. Read more here: box2d.org/posts/2026/0...
box2d.org
Announcing Box3D
I’m happy to announce the release of Box3D, an open source 3D physics engine. It is now available on GitHub. Box3D repository You can think of Box3D as a fork of Box2D, extended with many features nee...
13782220
Erin Catto @erincatto.bsky.social · 17/06/2026
Large world support is coming to Box2D v3.2. Uses doubles for body positions but all math is done in relative coordinates using single precision. Around 3% performance loss. www.youtube.com/watch?v=RwQr...
youtube.com
Double precision for larger worlds
YouTube video by Erin Catto
0182
Erin Catto @erincatto.bsky.social · 08/06/2026
New recording and replay feature added to Box2D. Uses determinism to exactly reproduce the simulation for your game. Debug your game with all details including ray casts and other queries. Deterministic rollback too. box2d.org/posts/2026/0...
box2d.org
Replay
Replay is a new system I developed for Box2D. The main goal is to allow users to send me files I can use to reproduce bugs. Because Box2D is open source, I can rarely run a user’s game or see their co...
1469
Erin Catto @erincatto.bsky.social · 30/04/2026
Where are the Copilot productivity gains?
C23 compiler support
0140
Erin Catto @erincatto.bsky.social · 25/04/2026
I added a native task scheduler people can use in Box2D. It is only 200 lines of C code. enkiTS is great, but having fewer dependencies is good for this project. It lets me run sanitizers more easily and have more control over performance. I'm still using Tracy for profiling.
1120
Erin Catto @erincatto.bsky.social · 12/03/2026
This is the game I've been working on the last four years. It is an incredibly ambitious project made by a small team. www.youtube.com/watch?v=7fax...
youtube.com
The Legend of California - First Look (Wishlist Now)
YouTube video by kintsugiyama
54112
Erin Catto @erincatto.bsky.social · 29/01/2026
Unreal has simple and complex collision. But sometimes a piece of collision is both. I'm now calling this "simplex" collision.
1101
Erin Catto @erincatto.bsky.social · 18/12/2025
They removed programming from the GDC. I thought games are software.
3392
Erin Catto @erincatto.bsky.social · 13/10/2025
When your graphics programmer tells you to stop simulating off-screen cloth, show them this video.
34510
Reposted by Erin Catto
WereCoder @werecoder.gamedev.blue · 05/10/2025
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
1428514
Erin Catto @erincatto.bsky.social · 01/10/2025
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...
3202
Erin Catto @erincatto.bsky.social · 17/09/2025
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
051
Erin Catto @erincatto.bsky.social · 04/09/2025
Silksong is using Unity? So using Box2D?
050
Erin Catto @erincatto.bsky.social · 30/08/2025
I love physics based walking simulations. I'm also pleased the author was successful using Box2D (v3.1?) www.youtube.com/watch?v=aBp-...
youtube.com
AI Cat Learning to Run
YouTube video by Pezzza's Work
0110
Erin Catto @erincatto.bsky.social · 11/07/2025
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...
youtube.com
Implementing GJK - 2006
YouTube video by Casey Muratori
2218
Erin Catto @erincatto.bsky.social · 20/04/2025
Box2D version 3.1 is released! Blog post: box2d.org/posts/2025/0... Release notes: github.com/erincatto/bo... Documentation: box2d.org/documentation/
box2d.org
Box2D 3.1
Version 3.0 was released about 8 months ago. It was a huge update and it needed some refinement. Version 3.1 addresses most of the bugs and build problems. It also introduces some new features and ref...
2225
Erin Catto @erincatto.bsky.social · 06/04/2025
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.
2280
Erin Catto @erincatto.bsky.social · 13/02/2025
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...
schedule.gdconf.com
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.
2285
Erin Catto @erincatto.bsky.social · 26/01/2025
Tangent speed is a new Box2D surface property that lets you easily make conveyor belts or launch ramps like this. youtu.be/WUxqUSk79nE
youtu.be
Launch ramp
YouTube video by Erin Catto
0121
Erin Catto @erincatto.bsky.social · 25/01/2025
Rolling resistance using a constraint so it works on ramps. www.youtube.com/watch?v=pRe6...
youtube.com
Rolling resistance
YouTube video by Erin Catto
1100
Erin Catto @erincatto.bsky.social · 03/12/2024
Compile Score is so good. This view lets me find out how vector is getting included, even implicitly. github.com/Viladoman/Co...
1110
Erin Catto @erincatto.bsky.social · 15/11/2024
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
2110
Erin Catto @erincatto.bsky.social · 12/11/2024
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.
Graph showing 17% performance gain for 2026 boxes in a spinning tumbler.
0262