Every Gravibot Room Is Beatable: How a Solver Proves It

On 14 October 2026, Gravibot's level checker replayed a stored route for each of its 28 rooms. All 28 reached the exit, and the whole check took 0.28 seconds. Each of those routes was found by a program, not a person: a solver that plays the rooms using the game's own physics and searches until it finds a way out.
Every puzzle game has the same worry: a room that looks fine but can't actually be beaten, because a laser pulses slightly too fast or a crate lands a few pixels short. Playtesting finds most of those. The solver rules them out.
The same code as the game
The solver does not use a simplified model of Gravibot. The physics live in one file, sim.js, which both the game and the solver load, and it is deterministic: the same inputs always give exactly the same result, with no randomness and no dependence on the frame rate.
That is what makes a found route meaningful. It is a real sequence of inputs, and the same presses at the same moments clear the room in the game exactly as they did in the search.
How the search works
Every 0.05 seconds of game time, the solver chooses a move, left, right or none, and whether to flip gravity. That is six options per decision. The fastest stored route for the whole game lasts 137.8 seconds, which is about 2,760 decisions, so trying every combination is out of the question.
Instead it uses weighted A*. The search keeps a list of states and always expands the most promising one, scored by the time already spent plus an estimate of the time left. The estimate is a quick greedy tour: from the robot to the nearest energy core still in the room, on to the next, and finally to the exit. Gravibot weights that estimate by 1.6, which pushes the search to trust it more than plain A* would. That gives up the guarantee of the very fastest route in exchange for an answer in a fraction of the time.
The search also refuses to explore the same situation twice. Two states count as the same only if the robot sits in the same 4-pixel cell and every laser, lift and reactor pulse in the room is at the same point in its cycle. Without that second condition the solver would treat "standing by the laser" and "standing by the laser just before it fires" as one state, and miss routes that depend on waiting.
Long rooms get a second chance. If a room runs out of its 2,000,000-state budget, the solver retries with the estimate weighted by 4 and a quarter more budget. That search is greedier and finds some route faster, even if not the quickest one.
What the routes are used for
Par times. Each room's par comes from its stored route: the solver's time doubled, plus four seconds, rounded up. A route found by a program that decides 20 times a second would be an unfair target for a person, so par sits well above it. The shortest pars in the game are 12 seconds and the longest is 25, for room 25, Pulse, where the reactor flips gravity on its own rhythm. Its stored route lasts 10.23 seconds, the longest of any room.
The ghost guide. After three reboots in a room, the game points to the ghost guide in the pause menu. It replays the stored route alongside the player's attempt, in step with it, so the route on screen is the solver's own.
A safety net for changes. Any change to the physics can quietly break a room. The verify mode replays all 28 routes in well under a second, so a broken room shows up immediately rather than in a player's hands.
Previews. The solver can also draw every room with its route on top, which shows at a glance whether a room plays as designed or hides a shortcut nobody planned.
Why it matters to a player
A room in Gravibot can feel impossible. It isn't, and that is no longer a matter of opinion: there is a stored, replayable route for every one of the 28 rooms, and the ghost guide will show it on request.





