Mr. Mole is an arcade game about underground digging, inspired by the classic Polish game "Mole" from 1991. The player controls a mole who digs through a board full of falling and resting blocks, descending through successive, increasingly difficult layers of the earth.
The game is completely offline, does not collect data, does not contain advertising, and does not contain accounts. It runs on desktop (for testing and editing) and on Android (target platform, exported to AAB).
## 2. Plot
During a beach picnic, a giant earthworm kidnaps Mrs. Mole and drags her deep underground. Mr. Mole gives chase, digging through ten increasingly deeper layers, from warm sand to scorching magma, avoiding falling boulders and smashing those that have already fallen. The goal is to find his beloved before the kidnapper disappears into the depths.
The story is presented in an intro sequence composed of slides (with text embedded in the graphics), culminating in a transition to the main menu.
## 3. Gameplay
- The board is a grid of COLS = 32 by ROWS = 16 cells, responsively scaled to fit the window. - A mole moves around the board (using the arrow keys or the on-screen D-pad). Moving into an empty space means digging. - Blocks exist in two states: - STOPPED (resting) — can be broken by entering it from the side or from below (the "chomp" animation). Breaks from above are blocked. - FALLING (falling) — is fatal; stepping under a falling block will crush the mole and result in loss of a life. - The player starts with lives = 3. After losing all of them, an end screen appears with a nickname and a scoreboard.
### Level Progression and Pace - 10 main levels (1–10), each with three sublevels A/B/C—30 sublevels in total (step_index 1–30). - Advance one sublevel after destroying ADVANCE_EVERY = 50 objects. - The rate of block fall increases linearly from FALL_START_MS = 800 ms (sublevel 1) to FALL_END_MS = 100 ms (sublevel 30). - Changing the main level triggers a transition animation (PHASE_CLEAR): the entire stack slides down and disappears, avoiding the mole, after which continuous respawning builds a new level layer from the top.
To prevent subsequent shapes from repeating: NO_REPEAT_LAST = 5 (don't repeat the last 5), FORCE_ROTATE_LAST = 10 (force rotation if the shape was in the last 10).
The block color depends on the shape TYPE (shape_palette built once from SHAPE_COLORS — 9 shades from white to gray to brown). Falling blocks are highlighted in orange.