Coin Crunch

Coin Crunch is a portrait arcade puzzle game built in Godot for desktop and mobile browsers. It takes inspiration from the speed and structure of games like Money Puzzle Exchanger and Magical Drop.

Playable Build

Open full page

For mobile installs, open the full-page build so the browser uses the game page and its save storage directly.

What It Looks Like

Teaching the Rules

The basic controls only need four directions, but the chain system has a few details that are difficult to explain with a wall of text so I wanted to create an interactive tutorial.

There is one basic tutorial and seven advanced “modules” covering extra coins, output placement, combo setup, large chains, mid-combo insertion, risk management, and bonus coins. The insertion lesson also includes practice-speed that is slower to allow the player to understand the general concept, before introducing them to the actual game-speed versions because understanding the idea and performing it under pressure are two completely things.

Each step can control the starting board, allowed moves, highlighted coins, target columns, output previews, and timing window. This made the tutorial useful for more than onboarding. It also gave me repeatable scenarios for checking rules and interaction changes while I was developing the game.

Board and Chain Architecture

The gameplay rules live in a separate board-state class rather than inside the scene and animation code. The board owns a 7 by 12 grid and handles pulling stacks, pushing stacks, overfilling connected coins, scheduling matches, resolving bonus coins, compressing columns, and finding follow-up matches.

Matches are scheduled instead of resolving immediately. Their coordinates are temporarily locked, then resolved after a certain number of frames(determined by the difficulty). That delay is what gives merge animations room to play and lets a player insert another coin before the next chain check.

I kept the merge rules, difficulty settings, starting layouts, random coin generation, merge animation ordering, and feedback timing in smaller focused classes. The main scene coordinates those systems and turns state changes into visuals and sound hooks. Keeping the rules away from the code that handled the visual side of things made it much easier to debug chain reactions without also worrying about tweens, labels, or touch controls.

Scoring is pretty straightforward:

points = coin value * number of coins * chain level

A first merge uses a multiplier of 1, the next link uses 2, and so on.

Desktop and Touch Controls

The desktop controls use the arrow keys or WASD. Left and right move between columns, down pulls coins, and up pushes them back onto the board.

Touch controls needed more work than simply putting four buttons on the screen. The game supports swipe and tap zones, one-handed and split layouts, optional visible joysticks, configurable gesture areas, and separate behavior for movement and actions. An automatic input mode switches between desktop and touch, including a small guard against synthetic mouse events that mobile Safari(grrrr) can emit after a touch gesture.

The game uses a portrait layout so the board remains readable on a phone without turning the device sideways. The same layout also works on desktop, where the extra space is used for controls, menus, and fullscreen support.

This really made me realize just how much more restrictive touch controls are, even with multitouch. Learned a lot of lessons along the way.

Progression and Browser Saves

Coin Crunch keeps separate high scores for each difficulty along with control settings, tutorial progress, achievements, and the selected theme. The first release includes five achievements and nine visual themes. Some themes are score rewards, while others are hidden inside small interactions in the menus.

Godot stores browser saves through its web user directory. I also mirror the save data into local browser storage and compare timestamps when loading. That fallback was added after testing browsers that did not always expose persistent storage in the same way, especially on iOS(AHGHHHHH). It is a small detail, but losing a high score or an unlocked theme would make the progression system feel pointless.

What I Learned

The core puzzle logic was only part of the work. The rest was tutorial design, responsive layout, touch input, save recovery, difficulty tuning, menu behavior, visual feedback, and enough progression to give people a reason to try another run. This project gave me a much better understanding of how many systems sit between a working game mechanic and a public release.

The game is playable from start to finish, but I am still working on the final audio assets and will continue fixing browser-specific issues as I find them. If I get ideas I might add more fancy themes just to experiment on different things, but we’ll see :)

View the Coin Crunch release post