Why Do Some Things Bounce More? Restitution Explained

Why Do Some Things Bounce More? Restitution Explained

How much something bounces is measured by its coefficient of restitution, a number from 0 to 1. A value of 0 means it stops dead on impact. A value near 1 means it comes back with almost all the speed it arrived with. Everything real sits in between, because some of the energy of a collision always turns into heat, sound and permanent dents.

In a video game that number is set by hand, one per object, and it’s the reason a rubber ball and a beanbag behave so differently in the same level.

What restitution actually measures #

Drop something and it hits the floor at a certain speed. It leaves the floor at a slower speed. Restitution is the ratio of those two: rebound speed divided by impact speed.

  • Restitution 0: a beanbag. It hits and stays there.
  • Restitution 0.5: a tennis ball. It comes back about half as fast, so it reaches roughly a quarter of the height it fell from.
  • Restitution 0.9: a superball. It comes back nearly as fast, and it takes a long time to settle.
  • Restitution 1: nothing real. It would bounce forever.

The height detail catches people out. Because the energy of motion goes with the square of speed, a ball that returns at half its impact speed reaches a quarter of its drop height, not half.

Where does the lost energy go? #

Nowhere mysterious. It leaves the collision as:

  • Heat. Squash a rubber ball and let it spring back and it warms up slightly. Bend a paperclip back and forth and you can feel it.
  • Sound. That crack when something hits a hard floor is energy escaping as air pressure.
  • Permanent deformation. A dent in a cardboard box is energy that went into rearranging cardboard and never came back.
  • Vibration in whatever got hit.

Materials that store deformation elastically and give it back, like rubber, bounce well. Materials that deform permanently, like clay or wet cardboard, don’t.

How games use the number #

Physics engines give every object a restitution value alongside its density and friction. The interesting part is what happens when two objects with different values collide, because the engine has to pick one.

Matter.js, the engine our game runs on, takes the larger of the two: Math.max(bodyA.restitution, bodyB.restitution). Friction works the other way, taking the smaller of the two. The Matter.js documentation states both rules directly, and it describes a value of 0.8 as a body that “may bounce back with approximately 80% of its kinetic energy.”

Those two rules have a consequence that’s easy to feel and hard to guess: one very bouncy object makes everything bounce off it, and one very slippery object makes everything slide on it. A single value on a single block changes how the whole level plays.

A worked example from a real game #

Here are the actual settings behind four materials in Kitty Kaboom, our cats-versus-robots slingshot game:

MaterialRestitutionFrictionWhat you notice
Pink cushion0.950.3A trampoline. Everything pings off it
Cardboard0.150.4Dull thud, then it crumples
Glass0.050.1Almost no bounce, and it shatters
Soap0.10.01No bounce, and stacks slide apart

The cushions are the clearest case of the max rule at work. A cat with a restitution of 0.35 hitting a cushion with 0.95 bounces at 0.95, because the engine takes the higher value. That’s why a level like Bounce House works: the cushion is not a wall to get past, it’s a launcher, and hitting it on the way down throws you up onto a perch you couldn’t otherwise reach. Trying to punch straight through one sends you back the way you came.

Soap is the same trick applied to friction. At 0.01 it’s effectively ice, and because the engine takes the minimum, anything touching soap slides. A robot standing on a soap block doesn’t need to be hit at all: knock the block and the whole stack slips out from underneath.

The cats have their own values too. Chonk barely bounces (0.1) and is the heaviest, which is why he hits like a dropped brick. Mochi and Zippy bounce more (0.4), so they ricochet around a structure instead of stopping in it. Upgrading a cat past its second tier adds bounce on top. Our cats and powers guide lists what each one does.

Why designers pick numbers that aren’t realistic #

Real glass barely bounces, and the game agrees at 0.05. But a real cushion isn’t 0.95 either, and a real cat is not a circle with a density value. Game physics numbers are chosen for how a level plays, not for accuracy.

That freedom is the whole craft. Raise restitution across a game and it feels loose and chaotic; drop it and everything feels heavy and dead. The same applies to gravity, which in Kitty Kaboom is set to 2.5 in engine units purely because that’s what makes a shot feel right on a phone. More of that reasoning is in how physics games work.

How to use bounce as a player #

  1. Look for the bouncy thing and treat it as a tool, not an obstacle. If a level includes a trampoline, the level wants you to use it.
  2. Hit bouncy surfaces at an angle, not head on. Head on sends you straight back.
  3. Don’t waste shots on things that won’t break. In Kitty Kaboom the cushions can’t be destroyed at all, so a direct hit achieves nothing but a rebound.
  4. Expect ricochets to do work. A bounced projectile that lands behind a structure often does more than a direct hit on its front.
  5. Remember heavy and bouncy are different. A heavy, low-bounce object transfers its energy into whatever it hits. That’s what you want against a tower, which is the subject of why tall towers fall over.

Frequently asked questions #

What is the coefficient of restitution? #

The ratio of an object’s speed after a collision to its speed before it, on a scale from 0 to 1. Zero means no bounce at all, and 1 would mean a perfect bounce with no energy lost, which nothing real achieves.

Why does a ball bounce lower each time? #

Because each bounce loses some energy to heat, sound and deformation. If a ball returns at 70% of its impact speed, it reaches about 49% of its previous height, then 24%, then 12%, which is why the bounces get small quickly.

Is bounciness the same as elasticity? #

They’re related but not identical. Elasticity describes a material’s ability to return to its shape after being deformed. Restitution describes what actually happens in a specific collision, which also depends on speed, shape and what it hits.

Can two objects have different bounciness in a game? #

Yes, every object gets its own value. When they collide the engine has to choose one, and Matter.js takes the higher of the two, which is why a single very bouncy surface makes everything bounce off it.

Does a heavier object bounce less? #

Not because of its weight. Mass changes how much force a collision delivers and how the two objects share the outcome, but the bounce ratio comes from the restitution values. A heavy object with high restitution bounces well and hits hard at the same time.