Pinball

Started by
6 comments, last by bemmu 22 years, 8 months ago
What kind of physics are involved in pinball games such as Pinball Fantasies or Pinball Dreams? I''ve often wondered how they get it to work so well. Do they just have bitmaps of the walls or some other information as well? Sonic is a game I''ve also sometimes wondered, how they get him to slide around flawlessly. I guess it''s an identical problem with the pinball thing. Any resources?
Advertisement
I think the easiest way to create a pinball game is to use simple 2D geometric primitives matching your bitmaps. E.g. circles, curves and straight edges, with special case logic for features such as sinkholes, ramps and magnetic devices. With gravity, mass, friction and perhaps rotation you can create a pretty good pinball simulation.

But some pinball games (e.g. the one recently done based on Quake) and games like Sonic go a bit further: like first person shooters they''re using a mix of 2D and 3D. 2D where they can simplify things to 2D, and/or where they want to limit motion to just two degrees of freedom. But otherwise 3D, e,g, for working out the path of a projectile.

The detail of how this is done will depend on the game type and situation. Sonic is particularly difficult as the characters move in various ways, and I suspect this involves a lot of special case coding for each of the ways (e.g.) Sonic moves, sometimes like any FPS, sometimes flying, sometimes racing sort of like Wipeout.



John BlackburneProgrammer, The Pitbull Syndicate
Pinball, like simple games such as Pong, relies a lot on the concept of momentum, as well as its conservation. Momentum is primarily important in collision detection, however, and since in real life pinball games are tilted, the only other major factor is gravity to pull the ball back down.

Basically, if you want to accurately simulate pinball, you would need to add in the mass of the ball to be able to correctly calculate the ball''s momentum.


Got Slack?
Commander M
This requires near-elastic collision with low-friction spin. The ball doesn''t just drag along the game objects. They impart spin on the ball, of course, and this is the kind of thing that pinball g33ks will nail you on.

-----------
-WarMage
...and don''t forget you should be able to nudge
Johnb sorry I didn''t remember they had made a 3D version of
Sonic, I was talking about Sonic 1! ) It had a lot of spins
and slides. I wonder how they are handling the collisions and
sliding and all. It even has roller coaster style spins.

But your idea of using primitives with bitmap images for them
seems interesting. I''ll try asking Digital Illusions how they
did it. I asked the author of Lotus Turbo Challenge once how
he did the road drawing .
In Pinball Dreams/Fantasies we used a bitmap outline for the tables and ball. Precalculated angles for each ball pixel and some special tweaks made the ball move very smoothly. For True Pinball we used slightly more advanced routines, but the bitmap was still there. We used different colors for different materials too.

/axl - DICE
AAxelsson, so you didn''t use geometric shapes and equations in Pinball Dreams/Fantasies? Could you explain more about how you calculated the angles of walls and such?
Did you have a precalculated value for every pixel of table and when ball hit it calculated new angle for ball using that value and the old angle of ball??
heat: No, we used precalculated angles for each pixel on the ball, (not the table) then we made a bitwise AND with the background and took the average angle of the affected pixels. (It required some tricks for when the angles wrapped, but it was more or less just the average) Then we used basic linear algebra and physics formulas to move it around. The only real tweaks we used was to move the ball out of walls when it moved too fast and to zero the speed normal to the plane when the angle of attack was really low. The latter gave the effect of smooth movements along rough edges. Calculations had to be performed often enough to avoid the ball moving through walls. A maximum speed and several iteartions per frame solved that.

/axl - DICE

This topic is closed to new replies.

Advertisement