Erin Catto

@erincatto.bsky.social

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

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...

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...

box2d.org

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...

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...

box2d.org

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.

Bild

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

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.

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

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

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.