Perfect play is a design failure
An AI that never misses is easy to build. Give it infinite paddle speed, zero reaction delay and exact prediction, and it returns everything.
It is also a game nobody plays twice, because there is no path to winning and therefore no belief that the next run could go better. It is not a challenge, it is a wall.
So the first balancing decision is what the ceiling is. Here it is Expert: a paddle speed of 128, a ninety-millisecond reaction delay, 0.94 prediction accuracy and a three and a half per cent unforced error rate — deliberately short of perfect on every axis.
Five numbers, four tiers
Rather than four separately written AIs, there is one behaviour with five parameters and four presets.
| Parameter | Easy | Medium | Hard | Expert |
|---|---|---|---|---|
| Paddle speed | 62 | 86 | 108 | 128 |
| Reaction delay | 0.30s | 0.20s | 0.13s | 0.09s |
| Prediction | 0.55 | 0.74 | 0.87 | 0.94 |
| Error rate | 24% | 13% | 7% | 3.5% |
| Placement | 0.35 | 0.58 | 0.76 | 0.90 |
Paddle speed and reaction delay together determine coverage: about thirty-four world units on a typical shot at Easy against about seventy-eight at Expert. That single derived figure explains most of what players experience as the difference between tiers.
Decide errors early
This is the most important balancing decision on the site and it is about timing rather than magnitude.
The AI rolls once, when a ball is struck toward it, to decide whether this will be an unforced error. If it will be, the paddle commits to a wrong destination and travels there visibly.
The alternative — rolling every frame, or fudging the outcome at the last moment — produces exactly the same error rate and feels completely different. A paddle that twitches away from a ball it was about to reach reads as the game deciding you should lose. A paddle that went to the wrong place reads as a mistake you can see and exploit.
Make weakness exploitable
An error rate is only interesting if the player can do something with it, which means the consequence has to be a ball they can attack.
When the AI mishits, its return is deliberately weak: slower, drifted toward the middle, and sitting up near the net. That is a recognisable pattern — a short, floaty, central ball — and learning to recognise and punish it is one of the highest-value habits in the match games.
Recovery rate is the second exploitable property. It does not scale with difficulty, so hitting two balls to the same side works at every tier, including Expert.
Never give the AI extra information
It is tempting to make a hard opponent by letting it see the future — predicting the player's shot before it is struck, or knowing the ball's landing point exactly.
Both are noticeable. Players cannot articulate why an opponent feels unfair, but they reliably detect it, and the usual cause is an AI acting on information they do not have.
Here the AI predicts using the ball's current velocity and the same physics the player sees. Raising the difficulty tightens how much it trusts that prediction — it never changes what it can see.
Balance the tiers against a purpose
Four tiers are only useful if each one is the correct choice for something.
Easy exists for learning a mechanic without pressure. Medium exists for long rallies, because it returns competently without finishing points. Hard exists for match play, where longer rallies per point produce the best scores. Expert exists as a test.
A tier that is never the right answer is dead weight. If Medium were simply 'Easy but faster', there would be no reason to have both.
Personas refine, they do not override
In the tournament and boss games each opponent has a written playing style, implemented as adjustments within its tier rather than as a replacement for it.
A 'wide retriever' at Medium is still recognisably Medium — it just has a higher paddle speed and slower recovery than the default. That keeps the tiers meaningful as a difficulty scale while allowing variety within them.
It also keeps the written descriptions honest. If a persona could override its tier, a description would stop being reliable information about what you are facing.
Key takeaways
- Perfect play is easy to build and produces a game nobody replays.
- Four tiers come from one behaviour with five parameters, and coverage explains most of the felt difference.
- Deciding errors once per ball rather than per frame is what makes the same error rate feel fair.
- A weakness must produce an exploitable ball, or the error rate is invisible.
- Never give the AI information the player lacks; players detect it even when they cannot name it.
Frequently asked questions
Why not make the hardest opponent perfect?
Because a perfect opponent offers no path to winning, so there is no reason to play again. Expert keeps a ninety-millisecond delay and a three and a half per cent error rate on purpose.
Why does when an error is decided matter?
Because the same error rate feels fair when the paddle visibly goes to the wrong place and feels cheap when it twitches away at the last moment.
Does the AI ever see more than I do?
No. It predicts using the ball's current velocity and the same physics you see. Difficulty tightens how accurate that prediction is, never what information it has.
Why have four tiers rather than two?
Because each is the correct choice for something: Easy for learning, Medium for long rallies, Hard for match scoring, Expert as a test. A tier that is never right would be dead weight.
Alex Morgan