Puzzle · Sokoban

Zoko

Shove crates across a 3D grid where gravity sinks every pushed box downward, so each push is irreversible and you must sequence every move before touching a single block.

Overview

A crate shoved into a corner in Zoko stays there for the rest of the level — there is no pull, no undo, and with gravity dragging every box down the vertical axis, a crate pushed over empty space drops and cannot be hauled back up by hand. That irreversibility is the engine of the puzzle. Zoko is a free, open-source 3D reimagining of Sokoban, written in CoffeeScript over WebGL by Samuel Nilsson and Sebastian Viklund as their entry to GitHub's Game Off 2012 jam, and it runs entirely inside a browser tab. The familiar Sokoban brief — push every crate onto a marked target — is lifted off the flat warehouse floor and rebuilt as a three-dimensional grid where boxes tumble along the z-axis the moment they lose support. To lift a crate up to a higher platform you ride it onto an elevator block, the only object in a level that shifts a box upward. What you decide before the first push matters more than reflexes, because one box parked against a wall or sunk to a lower tier can render the layout unsolvable and force a restart. It rewards players who treat a Sokoban grid like a chess problem and would rather study the board than walk into a dead state two moves in.

How to Play

The goal is to land every crate on a platform tile, and the step counter tracks how many pushes it took you to get there. Press the Arrow keys to walk the player character one tile at a time; walking into a crate shoves it one square in the same direction if the cell beyond is empty, and any crate that ends up over a hole immediately falls under gravity to the next solid surface below. Movement is read relative to the rotated camera, so the Up Arrow always means "into the screen" however the level is currently turned. If a box lands somewhere unrecoverable, tap R to reset the layout and try again. There is no timer and no enemy — just you, the crates, the elevators, and the platforms, across five hand-built levels whose lowest step counts are stored as a local highscore table.

Tips & Strategy

Before any keystroke, trace each crate's path to its platform in your head and work backwards from the target: a box that must finish on a raised platform can only get there by riding an elevator, so identify which lift feeds which platform and route crates onto it first. The classic Sokoban trap — parking a crate flush against a wall or in a corner — is deadlier here, because gravity means a crate shoved off an edge is just as stuck, and you cannot walk around to its far side to push from another angle. Shove crates across open floor rather than cutting tight against walls, and leave maneuvering room beside any box you may need to re-push. A lift only carries a crate upward when something stands on it, so sometimes you push a box on, step away, and let the lift climb with the box alone. When a level feels locked, press R early and replan from the opening rather than burning thirty extra pushes into a configuration that cannot be solved.

Controls

Keyboard
Arrow keys to move the player and push crates one tileR to restart the current level
Mouse
Used only for menu buttons (Continue, Next/Previous Level, Menu, Restart), not for gameplay

Features

  • 3D Sokoban grid where every crate is subject to gravity along the vertical axis
  • Lift blocks raise and lower to shuttle crates between stacked platforms
  • Screen-relative movement that tracks the WebGL camera as the level rotates
  • Five hand-built levels scored by step count with a local highscore table
  • Pure keyboard logic puzzle with no timer, built in CoffeeScript over WebGL
  • Open-source MIT-licensed Game Off 2012 entry by Samuel Nilsson and Sebastian Viklund