Duality
Saved games stay in this browser only.
About the game
Duality is a small puzzle game written by CheetahDoesStuff for Sprig, the open-source game console made by Hack Club that you program in JavaScript. The screen holds two little worlds, and in each one there is a character, one blue and one red. You do not choose which one to move: every key press moves both of them in the same direction, at the same time.
Each character has a goal square in its own colour, and a level is solved only when both are standing on their goals together. That is the whole puzzle. A wall that stops the blue one leaves the red one free to keep going, so the trick is to use walls, corners and the shape of each side to line them up, one move at a time. Brown blocks can be pushed by both characters and by each other, and a block pushed into the wrong corner can lock you out of a level, which is what the reset key is for.
There are eleven levels. The first two teach the idea with empty rooms and a row of blocks to push through, and the later ones use narrow corridors, rooms that mirror each other badly and rings of blocks that you have to open from the inside. After the eleventh level comes a win screen, and walking onto its goals starts the game over.
Playing it here
Click Play and the game starts in the page, on the Sprig's own screen scaled up so the pixels stay sharp. There is a short sound for each step and a jingle when you finish a level. The game keeps no save, so closing the page starts you at the first level again.
On a phone or tablet, two groups of buttons appear under the screen, like the eight buttons of the console. On a computer, use the keyboard; the arrow keys work like W, A, S, D.
Controls
| Key | Action |
|---|---|
| W, A, S, D (or arrow keys) | Move both characters up, left, down, right |
| J | Restart the level |
Tips
Think of one path that works for both. Look at where each character is blocked and ask which one will stop first. The one that is blocked waits for the other.
Use walls as brakes. Pressing into a wall costs nothing and lets the other character catch up.
Blocks are shared. A block you push for one character may also be in the way of the other, so check both sides before pushing.
Reset often. J is instant and free, and most levels are short once you see the trick.
FAQ
Is this an official Sprig game? It comes from the public Sprig game gallery, where anyone can send in a game. This one was sent in by its author, CheetahDoesStuff, and it runs here unchanged.
What is a Sprig? A small console with a 160×128 screen and eight buttons, made by Hack Club to teach programming by making games. Its games are plain JavaScript programs, and the engine that runs them is open source.
Does it save my progress? No. The eleven levels are short.
Screenshots