25 comments

[ 2.9 ms ] story [ 62.5 ms ] thread
I liked the talk, but it was given very much from the perspective of a game developer and not from the perspective of an engineer wanting to simulate a car. (Unsurprisingly)

There is actually a lot of literature on how to simulate vehicles, which would be quite a bit of help. He also mentions BeamNG whose approach is very weird if you actually want to get accurate vehicle dynamics. Their ongoing tire simulation project seems even weirder and as if it was done by people who actively tried to ignore standard approaches for modeling tires.

I realize the author goes super hard into actual physical vehicle hardware components, but every time I think about super good feeling vehicles in video games, I think about how ridiculous the Warthog in Halo 1 feels, but the vehicle physics in that game seems to make almost no sense, and when vehicles go flying it's hilarious and absurd, and I wish some developer from the Halo 1 days of Bungie would talk about it.

I recall the Warthog and other vehicles actually defining some specific properties about vehicles like RPM and gear ratio, at least I think, because in first person you'd see some of those properties reflected in the dashboard of say the Warthog, or you'd hear it in the audio for a covenant vehicle.

But wow, man, what great feeling vehicles. Nothing else like it in the industry, in my opinion. The ridiculous feeling of vehicles in Grand Theft Auto 4 came really close, but those seemed to be much, much more detailed from vehicular motion and damage-taking perspectives.

A while ago I made a game for iOS that simulates vehicles and drifting. It was built in SpriteKit but very easy to do in any 2d game engine. The idea is: you put two wheels in front, connect them to the rectangle car shape with pin joints and then you apply force to the wheels. The angle of the force is very easy to calculate: x = force * cos(bodyRotation + wheelRotation) y = force * sin(bodyRotation + wheelRotation)

That's it! I also added skid particles. The drifting was achieved by playing around with the wheels and body damping. The game is here: https://apps.apple.com/app/drift-mania-infinite-car-racer/id...

Truly fascinating. Now I want to read up further on steering models and how they're programmed. Steering feeling off is usually the thing that makes me hate driving cars in video games. Cyberpunk 2077 was the first time I felt like I was driving an actual vehicle.
One of the big difficulties in vehicle gamedev is taking a big abstract (semi-)physical model and handing it over to the game designers who then have to design with a large amount of unintuitive and correlated parameters. There's been various approaches to reduce the number of knobs to tweak so the designers don't have to rebalance the entire set of vehicles any time something related to the vehicles changes, but it's very much a black art.
Meanwhile I despise driving in Cyberpunk. It feels like the devs were expecting me to be driving with a sim setup rather than WASD. Very much tainted my experience with the game to have cars that are constantly sliding and spinning on me because I wasn't slowing down to a realistic turning speed. Especially because sliding into a pedestrian gives wanted rating and the only way to get rid of that is to hide from view of cops.
> Interestingly, while the engine has the most moving parts in real life, in code, it's the simplest piece of the entire car simulation. Because at its core, the engine is just a torque calculator. It's concerned with producing a single output: rotational torque, from a set of inputs. It is essentially a blackbox.

This just reminded me of AngeTheGreat's incredible video series showing his engine simulator- absolutely worth checking out, considering it's optimized enough to run in real-time! The fact that he's simulating it well enough to generate realistic sound is absolutely mind-blowing.

https://www.youtube.com/watch?v=RKT-sKtR970

This was a great rabbit hole. Thanks for sharing.
What got me into programming was my father writing an engine simulator in BASIC. Albeit for different reasons: he was a mechanical engineer and wanted to compare the torque curves of various engine designs. He used CIRCLE and LINE statements to draw an animated (<1 fps) wireframe of the piston, crank assembly, and crankshaft in operation (though he only completed one engine type this way), and that was the real holy-crap moment for me: that you could use this machine to draw things and make them move.

The fact that this guy did the same thing, just to have better sounding racecars in his vidya, blows my mind.

Very cool! Quite some time ago I attempted to make a helicopter sim for a gamejam, but I didn't have nearly enough time to get anything decent out of it.

Ah, the quest for more time...

It's a cool post but I am very confused by the intro.

It makes the case that cars in games offer a wide variety of unrealistic experiences and says this is unlike guns.

Is that really true? I've played games with homing bullets, slow projectiles, enormous projectiles, gravity guns, rocket jumping, hit scan guns, guns with bullet drop, freeze guns, ... idunno, I think there's a lot of variety in guns that are about the experience and not about simulating physics.

> It's because when it comes to cars, we derive our expectations of them not just from first hand experience. Our understanding of what “driving fast” feels like is often built from second-hand sources; films, games, pop culture.

And then this just feels like a theorycrafted thing with zero evidence. It's also even more true of guns than of cars, isn't it?

But then, there's stuff like, uh, jumping, where there is just as wide a variety in how you can jump in games even though my expectations about jumping come a lot more from actually jumping than do my expectations about driving come from actually driving.

Amazing article. I've always been curious how hard it would be to simulate accurate tires in particular, and I'm also interested in how the sound of engines is generated.

A quick typo though: s/Imperically/empirically (I guess)

In addition to some other things, I was responsible for all vehicle simulation in Army of Two. This article is a good starting point. I was glad they mentioned implementing Pacejka’s tire model and the transmission differential in the article - those help a lot. Aside from that, I was surprised (not surprised) how important an anti-roll bar physics sim and suspension sim helped make driving feel “fun”.

That’s the most important follow up. Without it, you’ll notice that the driving feels icy - I see it in the demo video. Most folks who fail to do the anti-roll bar and suspension wind up with cars that easily flip on turns - so they make the tires slip or they play with the surface friction, which makes the driving experience worse.

> Aside from that, I was surprised (not surprised) how important an anti-roll bar physics sim and suspension sim helped make driving feel “fun”.

Haha. My car recently had issues in that department and I got to experience the lack of fun firsthand.

This very closely mirrors what I discovered when I made Flightle[1].

I made it in anger when I played a sidescrolling flight "simulator" on my phone in which the plane didn't behave anything like a plane! I figured "how hard can it be" and started learning a lot about how planes fly. It turned out there was a level of abstraction that was just right. Too unrealistic felt static and unsatisfying. Too realistic was difficult to calibrate for fun gameplay.

[1]: https://xkqr.org/flightle/

Too late to edit the comment, but here's the article describing some more of what I learned: https://entropicthoughts.com/sidescrolling-flight-simulator

What's not mentioned in that article is that a couple months later I tried switching from modeling the plane as a point to modeling it as two separate wings attached by a rigid stick. It was a nightmare to get into a shape that played well, though I'm sure someone more skilled than I would be able to do it.

No hills? No banked curves? No suspension?

Unreal Engine comes with two car demo projects. The first one is the "Hello World" of Unreal, and has a simple vehicle. The second one has an actual suspension model.

Wow. Sincerely enjoyed this. Will re-read for the tire model alone.

On the other end of the spectrum, playing purely for fun with no regard for simulation or realistic anything ... I'll take a 1980s spinner wheel Super Sprint arcade cabinet any day for guaranteed smiles per mile.

https://www.arcade-museum.com/Videogame/super-sprint

A copy/paste from some related talks I had saved in my notes:

Hamish Young, Vehicle Physics and Tire Dynamics in 'Just Cause 4' https://gdcvault.com/play/1026035/Vehicle-Physics-and-Tire-D...

Jan Erik Steel & Patrick Donnelly, Supercharged! Vehicle Physics in 'Skylanders' https://gdcvault.com/play/1023219/Supercharged-Vehicle-Physi...

Edward Pereira, The Science of Off-Roading https://dev.gdcvault.com/play/1024004/The-Science-of-Off-Roa...

Jared Cone, It IS Rocket Science! The Physics of 'Rocket League' Detailed https://www.gdcvault.com/play/1024972/It-IS-Rocket-Science-T...

For a bad UI competition, I've made a full functioning vehicle controls with throttle, brake, gear and RPM/speed indicators. [1] It was very challenging.

Great resource. I wish this was available back then.

[1] https://nometer.toddle.site/