We build our two-player games ourselves, and we test them ourselves. Some of that is people playing on a couch. Most of it is not. Before an original ships, it runs through eighteen automated checks. They open the game in a real browser, read what is on the screen, press the keys, tap the phone layouts and try to solve the levels. This post is about the bugs those checks found. Every one of them had survived a human playtest.
The bug that survived every playtest
Each of our games prints its controls along the bottom of the screen. In seven of the first twelve originals, that line was wrong during play. It showed the menu keys instead of the game keys. Sumo Smash, our most played game, had this bug. Nobody noticed. The game played perfectly, it just never told you how. The fix was one line per game. The lesson was bigger: our checks were reading the code, not the screen.
Reading what the player is told
So we wrote a check that plays instead of reads. It starts a solo match, waits through the countdown and reads the sentence actually on screen. If that sentence names the menu keys, the check fails. We then put the old bug back into one game on purpose. The check caught it. A test that cannot fail is not a test, so we break our own checks before we trust them.
Menus that overlapped on phones
Our title menus are drawn at a percentage of the screen height, plus a few pixels for each row. That works on a laptop. On a phone held sideways, the rows landed on top of each other. A screenshot from a player showed it on one game. When we checked every game at five screen sizes, eighteen of twenty-one had the same problem somewhere. Every title menu is now one stack that measures its own space, and the check runs every game at every size before a release.
Real touches, not fake ones
Several originals let two people share one phone. The screen splits in half and each thumb gets its own stick. The risk is silent. If the right half quietly sends the left player's keys, the screen looks perfect and one player simply cannot move. Our touch check uses real browser touch events, not simulated key presses. For each half it lists the keys that must fire and the keys that must never fire. We tested it by wiring one half to the wrong key on purpose. It failed, which is what we wanted.
Levels that could not be solved
Puzzle games get a solver. Tether is a co-op puzzle where two orbs on a rope must both stand on pads at the same time. In the first draft, every level was unsolvable. The pads were placed at opposite ends, further apart than the rope was long. It looked fine by eye. The numbers said otherwise.
Beam had a subtler problem. Every level could be solved by some angle of the light. But three of six levels opened with the walker standing in the dark, and the dark is a timer. Solvable on paper, fatal on the first frame. The check now tests the opening angle, not just the existence of an answer.
Color Gates went furthest. A check priced each level in seconds. It found that three of six levels could be finished without ever using the game's main mechanic, because two players could simply take turns. The whole design was rebuilt around pressure plates that both players must hold at once. A mechanic you can schedule around is not a mechanic.
One rule, broken four times
Every original follows the same small contract. Space on a fresh title starts a solo game. The number two starts two players. Escape returns to the title. We wrote that rule down and still broke it four times. Two co-op games defaulted to two players, so a lone visitor pressing Space got one orb and a dead partner. We fixed those, and later a new check found the same bug still living in two older games. A rule broken four times is not a rule. It is luck. Now a check drives all thirty games and asserts the contract.
Breaking our own checks on purpose
Every check above has been tested against a deliberate fault. Put the bug back, run the check, confirm it fails. This matters more than it sounds. In one racing game, a check for the scoring rule passed even after we rewrote the rule to something wrong. The check was only assuming the rule, not testing it. It now samples every scoring moment. A check that never fails tells you nothing.
Why this matters to you
None of this makes a game fun. People on a couch decide that, and we still playtest every original. What the checks do is remove the bugs a playtest cannot see. A hint that lies, a menu that overlaps on your phone, a level that cannot be solved. Those are the bugs that make someone close the tab and never say why. If you want the design side of this story, read the games we killed and how we balance our games. Or just open the originals and see whether it worked.