The physics, explained
Most 3D Pong games fake their bounces with random angles. RICOCUBE does not. The ball follows a small, honest physics model, so with practice you can predict and control every shot.
1. Angle in equals angle out
When the ball hits a resting paddle or a closed wall, it is mirrored: the part of its velocity that points into the surface is reversed, and the part along the surface stays the same. That is the law of reflection you know from billiards or a mirror. It means a ball that arrives at a shallow angle leaves at the same shallow angle, and a ball that hits straight on comes straight back. Nothing is randomised, so the red aim dot can show you exactly where the next wall contact will be.
2. Steering with friction
A paddle that is moving at the moment of impact drags the ball along a little, just like a table-tennis bat. RICOCUBE models this as Coulomb friction with a coefficient of μ = 0.25: the sideways push the paddle can give is limited to a quarter of the impact strength. A hard, fast ball can therefore be bent more in absolute terms than a slow one, but never more than the friction allows.
There is a second limit. A real ball that is pushed sideways starts to roll, and once it rolls it cannot pick up more sideways speed from the surface. For a solid sphere this happens at 5/7 of the paddle's sideways speed. RICOCUBE uses the same 5/7 rolling limit, so wild, fast swipes do not create absurd angles – they top out where a real ball would.
In practice: stand still for a clean mirror bounce, move gently during the hit to aim, and remember that the effect is strongest when the ball arrives fast.
3. Edges and corners
A paddle is a thin box, not a flat sheet. If the ball touches the rim instead of the face, the game computes the contact normal at that edge point. The ball still counts as returned, but it leaves at a steeper, less predictable angle – just as a ball glancing off the edge of a real paddle would. Cube corners work similarly: a ball can travel close to two walls at once, and the aim dot always shows the wall it will reach first.
4. The speed curve
Each return multiplies the ball's speed by 1.01. Because the increase compounds, the speed after n hits is 1.01ⁿ times the starting speed: about 1.6× after 50 hits, 2× after 70, 2.7× after 100 and 4× after 140. Items such as Slow-mo (half speed), Turbo (1.5×) and Fireball (1.8× until the next hit) multiply on top of that curve for their duration and then hand back to it.
5. Shadows and depth
The ball casts a real-time shadow from a light above the cube onto the floor. Because the shadow is physically placed, its size and sharpness change with the ball's height. Combined with the tail, which samples the last positions of the ball, and the aim dot, you get three independent depth cues.
6. 100,000 tests
Physics bugs feel unfair, so every bigger change to the simulation is checked by an automated test suite. Computer players play 100,000 rallies at random speeds and angles while the test watches for impossible events: a ball tunnelling through a paddle at high speed, a ball leaving the cube without a miss being counted, or a ball getting wedged between a moving paddle and a wall. One rare case – a ball pinched against the edge of a moving paddle – was found this way and fixed; the current version passes all 100,000 runs.
7. Small steps, no tunnelling
Each frame, the simulation splits the ball's movement into small sub-steps so that it never moves more than about one hundredth of the cube per step, however fast it flies. That is why even a ball at four times the starting speed cannot slip through a paddle between two frames. Online, the host computes the ball and sends snapshots to the guests, so all players share exactly the same physics.