Sign in

iiinova is part of the Atmosphere — an open, public network where you own your identity.

Erin Catto

@erincatto.bsky.social
1.1K followers 210 following 59 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 · 13/10/2026
Contact Recycling - making contact generation almost free. box2d.org/posts/2026/1...
box2d.org
Contact Recycling
Contact recycling is a technique I developed for Box2D and Box3D. Contact recycling can drastically improve rigid body simulation performance, making the process of computing contact points almost fre...
1267 26
Erin Catto @erincatto.bsky.social · 01/10/2026
I use the inner sphere to know when movement is slow enough that continuous collision can be skipped. For conservative advancement I've used the outer sphere to put a bound on the movement from rotation.
000 0
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 26
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 28
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 72
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 27
Erin Catto @erincatto.bsky.social · 12/07/2026
I have to say my emotions are mixed.
1281 28
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 29
Erin Catto @erincatto.bsky.social · 02/07/2026
This is just a benchmark and stability stress test. I've never used something like this in a game.
010 1
Erin Catto @erincatto.bsky.social · 02/07/2026
Right-handed. Left-handed coordinate systems are an abomination.
030 3
Erin Catto @erincatto.bsky.social · 01/07/2026
I'll leave comparisons to the community. I'm happy with the performance of both Box2D and 3D.
010 1
Erin Catto @erincatto.bsky.social · 01/07/2026
I was very close to using Jolt. I try to explain this in the blog. Box3D would probably have been developed any how. I needed an immediate solution. But long term I prefer having 2D and 3D aligned. It's just easier for me.
120 2
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...
13781220 781
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
0172 17
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 46
Erin Catto @erincatto.bsky.social · 30/04/2026
Where are the Copilot productivity gains?
C23 compiler support
0140 14
Erin Catto @erincatto.bsky.social · 25/04/2026
I also simplified the external task interface for people that want to use their own threads.
040 4
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 12
Erin Catto @erincatto.bsky.social · 26/03/2026
I've been enjoying your videos. I didn't know you are in Columbus. That's my home town!
000 0
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
44012 40
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 10
Erin Catto @erincatto.bsky.social · 10/01/2026
Nice post! I'm tempted to try Claude Code. One use of LLMs that seems appealing is using it for studying unfamiliar code. Then it really is not writing any code. I'm not sure if Claude Code would be beneficial for this.
211 2
Erin Catto @erincatto.bsky.social · 18/12/2025
They removed programming from the GDC. I thought games are software.
3392 39
Erin Catto @erincatto.bsky.social · 15/10/2025
You can have AI walking, running, sitting, climbing, etc. They can do anything out of view.
110 1
Erin Catto @erincatto.bsky.social · 14/10/2025
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.
160 6
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 45
Erin Catto @erincatto.bsky.social · 11/10/2025
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.
110 1
Erin Catto @erincatto.bsky.social · 05/10/2025
Very cool! Have you considered using voxels? Lots of procedural generation options with those.
120 2
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 285
Erin Catto @erincatto.bsky.social · 02/10/2025
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.
010 1
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 20
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 5
Erin Catto @erincatto.bsky.social · 04/09/2025
Silksong is using Unity? So using Box2D?
050 5
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 11
Erin Catto @erincatto.bsky.social · 23/08/2025
I revoked your ban. Please make sure your discord account is secure.
010 1
Erin Catto @erincatto.bsky.social · 13/07/2025
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
380 8
Erin Catto @erincatto.bsky.social · 11/07/2025
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.
093 9
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 21
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 22
Erin Catto @erincatto.bsky.social · 06/04/2025
Better quality here: www.youtube.com/watch?v=aiFu...
youtube.com
Gate Lift Physics with High Mass Ratio
YouTube video by Erin Catto
010 1
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 28
Erin Catto @erincatto.bsky.social · 29/03/2025
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>")
010 1
Erin Catto @erincatto.bsky.social · 29/03/2025
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
120 2
Erin Catto @erincatto.bsky.social · 29/03/2025
I use this to avoid bringing in stuff for samples if someone is just using my library. `if(PROJECT_IS_TOP_LEVEL)`
000 0
Erin Catto @erincatto.bsky.social · 28/03/2025
The nice thing about FetchContent is users can pin to a specific version of a library easily using a tag or git commit hash.
100 1
Erin Catto @erincatto.bsky.social · 28/03/2025
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.com
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.
140 4
Erin Catto @erincatto.bsky.social · 18/02/2025
Nice! Do you have large island threading?
110 1
Erin Catto @erincatto.bsky.social · 13/02/2025
Tagging @officialgdc.bsky.social
000 0
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 28
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 12