Real-Time Soft-Body Car Crash Physics Prototype (Godot + Jolt Customized)

Hi,

I’m working on a car crash / vehicle damage prototype in Godot and wanted to share a short video of the current state.

All deformation and damage is computed in real time. There are no pre-baked animations, mesh swaps, or scripted damage states. The main goal so far has been physical plausibility, deformation persistence, and keeping the simulation stable and fast enough to run well on older hardware.

The demo runs smoothly on an older iPad, so most of the work has gone into keeping the system lightweight and predictable under repeated impacts.

What’s in the video:
• Head-on and angled wall crashes
• Vehicle-to-vehicle collisions (including T-bones)
• Repeated impacts to show damage persistence
• Collisions against different masses and rigid obstacles
• Some slow-motion segments to make deformation easier to see

I just tried to emphasize the variety and correctness.

Vehicle control and damage & deformation is a custom system built on top of Jolt

This is still experimental, but I’d appreciate any feedback, especially if you’ve dealt with physics-heavy or performance-constrained projects in Godot.

Video:

Thanks.

13 Likes

This is really cool. It’s like a lower-end BeanNG. I can’t believe it works on an ipad.

Question. Is the slow-mo feature built into the game or is it just external video editing? I couldn’t quite tell from watching the video. If it’s the former, you’ll get more brownie points from mentioning it.

I left the same comment on the video just in-case that doesn’t reach you.

Thanks! Glad you liked it.

The slow-motion is actually in-engine, not added in post. It’s just time scaling on the simulation, so physics, deformation, and constraints are all still running normally, just slower.

I mainly use it as a debugging / inspection tool to better see how forces and deformation propagate during impacts. In normal gameplay it would likely be limited or contextual.

The iPad performance was a hard requirement from the start, so a lot of effort went into keeping the system lightweight.

And yes, this is still a very early stage of development. There’s more detail and fine-tuning planned as things evolve.

2 Likes

It’s awesome!

…also it looks tasty…Jelly!

1 Like

Sweet. How’d you make the slow-mo feature (or what in-engine function do I not know about)?

Maybe this?

1 Like

That’s definitely it. Cool to know that exists.

Yes, changing the timescale is an engine feature. Making sure everything is framerate and timescale independent and consistent is another thing… :smile:

4 Likes

So so cool.

Really curious how you went about making a custom soft-body class. Would you mind sharing more about your process?

I haven’t experimented with any softbody stuff yet but I have been thinking about it for squash and stretch on cartoon characters and would love to learn more.

1 Like

Awesome stuff! Are you doing all the custom physics in GDscript or C/C++ through GDExtension?

1 Like

GDExtension/C++: I really needed the control of performance here. GDScript is great, but I only use it for some debug utilities.

2 Likes

This looks like fun! Good work! Can you talk about your approach to “correctness”? I guess, you mean physical accuracy, right? Maybe it’s all those years of video games talking, but I did not expect the cars to loose so much velocity on impact.

1 Like

Cars in real life CRUMPLE, and they crumple bad. They’re actually designed to do that in order to absorb impacts. Also, cars are deadly.

2 Likes

That is wrong. They are designed to bend and compress in certain areas that will not crush a human sitting in there.

For new cars that is mostly true, but older ones… less likely and cabin compresses as well at higher speeds unfortunately…
I already support non-uniform parameters around the body by the way.
And answering your question: I rely on a couple of constraints in the softbody (nodes connected with links approximation), including dynamic stiffness based on kinematic energy, compression resistance, bending etc.
And yes, tweaking parameters and refining my work will hopefully improve results.
Thanks for you feedback and hope this answers your question. :slight_smile:

2 Likes

For such, perhaps you can give a shot with Godot’s built in Softbody node. :slight_smile:
And thank you!!!

1 Like

Hello! I make car games, and for my future projects, I need your help, I really like how you made your video. If you want, we can work together in future?

Thanks, appreciate that.

Right now I’m focusing on developing this solo and keeping the scope tight, so I’m not looking at collaborations. Maybe down the line, but not at the moment.

1 Like