Game playtesting & performanceEvonx plays it before you do.
Every game ships with its own playtests: a robot player fires the cannon, sets off the TNT, breaks the jars and runs out of balls on purpose, and checks that the game does the right thing each time. A change only reaches your preview after its playtest passes, and a live game profiler shows what every frame costs.
37 checks, one robot player
Every rule, played by a robot.
Automated game testing on the smash template: a robot player fires, misses, sets off TNT and runs out of balls on purpose, and checks that the game answers right each time. 37 passed, 0 failed.


















pass60 fps- passboard · board the seams fire and a hook scales the score
- passbooster · booster bar arms and consumes
- passbooster · booster the seams fire and a hook adds a button
- passconfetti cannons · confetti cannons fire from both corners
- passhud shots · hud shots top
- passiap · iap a store release pays through the bridge
- passiap · iap a serverless store release grants from the device
- passlevelend · levelend banner sparks coins card
- passlevelend · levelend settles only a level the game has
- passlevelend · levelend card fits
- passlevelend · levelend the seams fire and a hook bends the coins
- passlevelend · levelend the verdict holds the input not the world
- passnav · nav deck and hanging sign
playtest: 37 passed, 0 failed
Performance score
Frame rate and stutter, one number.
Every game measures 45 seconds of real play on the player's own device: how many frames it draws and how many it misses. The two become one game performance score from 0 to 100, kept per game. Move the sliders to see how the score reads them.
What the playtests look for
The rules, tested by playing.
Each playtest plays a moment of the game and asserts what must happen. These are the smash template's gameplay checks, each with the screenshot it took and what it measured.









Before you see a change
Red stops the change. Green ships it.
When you ask for a change, the server runs the game's own proofs in the build before telling you it is done:
npm run typechecknpm run levels:solveQuestions
Game playtesting, answered.
What does a playtest check?
That the game does what its rules say when it is played: a press fires a ball, a ball never flies through a piece, TNT goes off, a jar breaks, a fallen can splashes and sinks, the balls run out and the offer comes, no shot leaves while the game is paused. The smash template has 37 such checks.
What happens when a check fails?
The change is refused with the failing check and its output, and the preview stays on the last version that passed, so you never play a build that broke a rule.
How is the performance score worked out?
From 45 seconds of real play: the frame rate counts for 45% (from 20 to 55 fps) and the share of missed frames for 55% (0 to 15%). 80 and above is good, 55 and above fair.
Does measuring slow the game down?
No. With the measurement on and off the smash template ran at 59.98 and 60.00 fps; the measurement takes 40 to 63 nanoseconds a frame.
What does the game profiler show?
A strip along the top of the game: an fps counter, the slowest recent frame, frame time, CPU and GPU time, draw calls, triangles, vertices and memory, each coloured from green to red. Add ?profiler to a game's address to turn it on; in the Evonx editor it sits beside the preview.
Does a game run at 120 fps?
On a 60 or 90 Hz screen a game draws every frame the screen shows. On a 120 or 144 Hz phone it draws every other frame on purpose: nothing in a casual game moves faster than a 60 Hz screen shows, and twice the frames only doubles the work and warms the phone.
Tested before you play. Scored while you do.
Start free and build a game that checks itself.
Start free