A bit tangential, but I have been playing the game "Pinball FX" a lot. I really like it (and especially its spin-off/expansion Pinball M), but it's surprisingly taxing on my computer.
I mentioned this to a friend, and he was kind of confused, understandably so, and said "...it's pinball...why is that taxing?"
It's not a dumb question, we have had virtual pinball games since the Atari 2600 at least, and even pretty fun stuff on the Amiga and DOS like Pinball Dreams and Epic Pinball, so why would a modern pinball game make my relatively beefy laptop struggle playing it?
The answer is because virtual pinball occupies a strange kind of space in the world of video games, in that they're trying to emulate something that is entirely dependent on extremely precise and subtle physics. It's not like you can really have too accurate of physics; the better the physics, the closer it is to a "real" pinball machine, and generally speaking the more fun the game is.
As such, I think you could honestly make a pinball game that taxes any hardware. You'll never be able to have "perfect" physics (as in physics that completely and totally imitate reality), you can only get asymptotically close to "perfect", and the closer you are, the more taxing the computation will end up being.
It just made me think, this applies to nearly anything. We all work with abstractions, but if dive into the details of something and recurse, it's not like it ever ends.
I don't actually know, but I'd wager a lot that it's the graphics rather than the physics which causes the game to be slow. Generally the expensive thing in video games is rendering. Computing the next world state is generally relatively cheap, especially if we're talking about a confined area with a very small number of rigid bodies (the ball, flippers, bumpers). A pinball game like Pinball FX that's rendering a 3d world with lighting, it'd just be shocking to me if the physics were to blame for the performance.
Nah. This is easily emulated with an impulse force. The outcome a nanosecond after the ball leaves the bumper is just an impulse. Users can't tell the difference.
While that could be an acceptable simplification on the aforementioned Amiga, it breaks down when multiple balls are in play, if the friction between the top and bottom plate differ (introducing spin) or when the ball doesn't hit the bumper exactly straight on the y axis.
Generally speaking, there are many ways you can simplify the game by sacrificing precison. This is exactly the kind of detail the original article is about. Ones simplified model of the world is always incomplete, and there are always surprising ways in which it will fall short.
So confident and so wrong. The microphysics of pinball are critical to the game, consider the live catch (https://www.youtube.com/watch?v=wjALq96jpJQ). It's impossible to see with the naked eye, but the reason it works is because the flipper is so powerful that flipper bounces off the stop. That combined with a milimeter or so of give in the rubber allows a live catch. The timing is difficult, but not THAT difficult. And this is just one specific maneuver that relies on nuances of the physical properties of actual machines, and being able to read those tiny subtleties is what makes the difference between the best players.
Pinball simulation has come a long way, but it still feels very different from the real thing.
Obviously the ball response can be modeled as an impulse. However as you point out the difficultly is that the physics engine needs to calculate a correct result for the ball bouncing (i.e. it isn't simple to calculate the impulse).
Especially with such a small number of rigid bodies to worry about. The literal only thing that has to collide with anything else is the pinball itself, unless we're talking about a pretty weird pinball machine.
Of course, but that rigid pinball has speeds in three directions, rotations along many axes, friction might change on different surfaces in the simulated machine, the ball can jump, bounce and slip depending on how it's rotating and if there is more than one ball in play then something like a bumper can "fully" hit one ball but merely graze another one. Pinball machines are a prime example of what the article talks about: a basic simulation is indeed quite simple. A good simulation rapidly spirals down into the most obscure details.
Yeah fair, it's tough to say; they're simulating a few non-obvious things too, like ball spin, but it's possible it's mostly graphics.
I think my overall point still stands, but you might be right.
ETA:
I would like to point out that my dad was debating buying one of those virtual pinball tables, and so we played one at a mall, it was decidedly not fun. The physics were way too floaty, and didn't feel good at all. It looked like they were running it on some shitty Android and just mounted a big TV.
That's why I thought that maybe it was the physics in PinballFX slowing things down.
I have not, that sounds pretty cool. That might make the machines more fun, or at least feel more realistic.
I think having something more or less like a rumble feature would do a lot too. Even if you just had a solenoid that thumps when hitting a bumper would make it feel a lot more realistic.
It sounds cool, but because you won't be getting different views from both eyes, I can imagine the brain is probably going to be fairly confused by it.
I remember back in 2008-ish Johnny Lee at CMU built a cool hack that tracked the user's head using a Wiimote as an infrared camera, and used it for this kind of effect.
Turns out that head-tracking parallax is surprisingly effective even without stereo vision. I'd guess there's some component about the effect working best when your head motion is large relative to the distance between your eyes, and also best for objects far enough away from your eyes that you're not getting a lot of information from the stereo vision.
I don't know exactly where those thresholds are, but I wouldn't be surprised if a pinball machine is in a regime where it works well.
There are tons of working examples of head-tracked 3D, and in practice it's good enough to satisfy most viewers (as long as you can deal with the obvious limitation: only one viewer at a time)
I bet it has nothing to do with the graphics or the physics and everything to do with the fact that you can't feel the ball. There's vibrations that can be felt when you play with a real pinball machine.
That's definitely part of it, but even when I play Pinball FX on my laptop with a keyboard, it still feels better than the one I tried at the mall.
The one I felt at the mall kind of felt like I was playing on the moon. The ball felt really floaty and the way the ball bounced off the walls and bumpers just didn't feel or look right.
Adding some kind of "thumper" feedback would have certainly helped the experience though.
Simulating airdrag and turbulence the compute-intensive way: simulating all of the air inside the pinball machine! You've got a few tens of liters of gaseous molecules to keep track of, should be enough to slow down most computers I would guess!
But I would be very surprised if any pinball software actually does that!
No one does it yet! Someone should import OpenFOAM into Unreal and make this happen. I want my pinball experience to require a dedicated server to help it.
Ball movement on a real pinball machine is three dimensional. The game is designed to keep the ball in contact with the playfield surface as much as possible, but in practice there are lots of imperfections and awkwardly shaped features that can make the ball bounce vertically if it hits them at the right angle. It can sometimes bounce violently enough to hit the glass. This is especially common when you have multiple balls in play. A 2D simulation isn't enough.
There’s always an infinite number of variables in a real pinball machine. Slight imperfections in the playfield surface making it not completely flat, slight imperfections in the shape of the ball so it’s not a perfect sphere, slight imperfections in the shape of the bumper. I could keep going, but I think there’s literally billions of potential variables that can modify the game.
These might seem insignificant, and in some cases they are, but it’s a chaos theory thing; small imperfections multiplied across enough of a timescale become pretty significant, and that’s a large part of what makes real pinball so much fun.
Of course there’s plenty of things we can do to approximate reality; adding a bit of randomness to the experience probably provides enough chaos to give us something more or less like reality in a lot of cases, but that is just an optimization hack.
Good story for getting a handle on the idea. It kind of reminded me of fractals and how we find some parallels between phenomena at every scale, e.g. galaxies and rotating water as it flows down your drain.
Is that actually true? That might be true on a small enough time step but there’s enough variation in every physical component of the machine that I think chaos theory would take over in a relatively short amount of time. The ball could fly across the machine in radically different ways even with seemingly the same inputs.
Obviously there’s are ways of spoofing even that, just adding some randomness probably helps a lot.
I mentioned this to a friend, and he was kind of confused, understandably so, and said "...it's pinball...why is that taxing?"
It's not a dumb question, we have had virtual pinball games since the Atari 2600 at least, and even pretty fun stuff on the Amiga and DOS like Pinball Dreams and Epic Pinball, so why would a modern pinball game make my relatively beefy laptop struggle playing it?
The answer is because virtual pinball occupies a strange kind of space in the world of video games, in that they're trying to emulate something that is entirely dependent on extremely precise and subtle physics. It's not like you can really have too accurate of physics; the better the physics, the closer it is to a "real" pinball machine, and generally speaking the more fun the game is.
As such, I think you could honestly make a pinball game that taxes any hardware. You'll never be able to have "perfect" physics (as in physics that completely and totally imitate reality), you can only get asymptotically close to "perfect", and the closer you are, the more taxing the computation will end up being.
It just made me think, this applies to nearly anything. We all work with abstractions, but if dive into the details of something and recurse, it's not like it ever ends.