Jev Pongan ably-labs demo

Jev Pong

Pong where the ball moves one step per model decision. Slow model, slow ball.

Recorded run · London via Vercel AI Gateway

replay0.0 s

What counts as one decision

Every lane gets the same serve, the same rules, and the same question.

The state the model is sent, in full — numbers only, 127 bytes:

{"court":{"w":160,"h":100},"ball":{"x":80,"y":50,"vx":26.7,"vy":6.1},"paddle":{"y":50,"h":20},"interceptY":68.3,"dir":"toward"}

The question, in the words every lane is given:

You control the right paddle in a game of Pong. The state is a JSON object of numbers: the court size, the ball position and velocity, your paddle (paddle.y is its CENTRE, paddle.h its height), interceptY, and dir. y = 0 is the top edge and y grows downward, so "up" DECREASES y and "down" INCREASES y. interceptY is the y value where the ball will cross your paddle plane after any wall bounces; it is null when the ball is moving away from you. Move so that paddle.y covers interceptY. Treat the paddle as already covering it when paddle.y is within 5 units of interceptY. Answer with one move only.

Three answers: up · down · stay.

Jev answers through the AI SDK experimental_evaluate API. The LLM lanes get the identical state and the identical words through structured output at temperature 0 with reasoning off, and there are no retries for anyone.

The number on a lane is the round trip of that one call, timed on the server, and nothing else.

Play against JevSource