Cheery Chimp

Bubble Saver - Math

  • Home
  • About Us
  • Privacy Policy
  • Terms and Conditions
  • Contact Us

Bubble Saver - Math

This is a Cheery Chimp original.

Objective

Create sums with ice blocks to free the bubbles before they crush against the floor!

Controls

Sums are formed by selecting adjacent blocks.

There are two ways to form sums:

  • Drag: Click the first number, drag to the last number, and release to submit.
  • Tap: Click each number of the sum, then click the final number again to submit.
Contact

Feel free to contact us with any bugs, complaints, or requests.

Release Date
June 14, 2026

Behind the Scenes

I liked Bubble Saver enough to want a maths version of it. Swapping letters for numbers took about an hour. Swapping the dictionary for arithmetic took the rest of the week.

This is the same game as Bubble Saver: ice made of tiles, water below, bubbles that need a hole to escape through, and a path you trace across adjacent tiles to melt them. The only difference is what makes a path legal. In the original it is a word. Here it is a sum — trace numbers that add up to the target, and those tiles melt.

It sounds like a find-and-replace. It was not, and the reasons are more interesting than the port.

A dictionary answers. A target has to be proved.

Here is the whole difficulty in one line.

In the spelling game, validating a word is a lookup. Is SLATE in the list? Yes or no, instantly, and the board plays no part in the answer. Generating the board is equally easy: scatter letters by how often they appear in English and the player will find something. You do not need to know in advance what they will find, and it does not matter if some boards are richer than others.

Now try that with numbers. The game shows a target and asks the player to reach it. Which means the game has to pick the target — and a target nobody can make is not a hard puzzle, it is a broken one. The player will trace every promising run of tiles, fail, and correctly conclude the game is lying to them.

So before a target can be displayed it has to be proved reachable on the actual board in front of the player. That means searching: walk outward from every tile through its neighbours in all eight directions, accumulating as you go, and see whether any path lands exactly on the number. The equivalent of the dictionary is not a list at all. It is a solver that runs against this specific arrangement of these specific tiles, every time a target is chosen.

That inverted the shape of the whole thing. The spelling version generates a board and trusts it. The maths version generates a board, then searches it, and only then knows what it is allowed to ask for.

It also gave the game a property the original never had: every target is guaranteed solvable at the moment it appears. Which is a promise worth making and one you can only keep if you check.

The daily has to be the same for everyone

A puzzle of the day means every player gets the same board and the same targets, which means the target selection has to be deterministic — seeded from the date rather than from chance.

That is easy to say and it collides immediately with the paragraph above. The target picker is not a random draw; it is a search over a board, and it has to produce the same answer for everyone. So the seed has to feed the search, not just the shuffle, and anything in there that quietly depends on iteration order or timing would put two players on different puzzles while both believed they were doing today's.

Running totals are not words

A selection in the spelling game has two states that matter: is this a word, and is it long enough. A selection in the maths version has three, and they are not the same three.

You can be under the target, which is fine and normal — keep going. You can be at it, which means you may submit. Or you can be over it, which is a dead end: there is no tile you can add that brings a sum back down, so the path is finished and wrong, and the game should say so immediately rather than letting you keep dragging hopefully.

That third state has no equivalent in the word version. A half-built word is never ruined, only unfinished. A sum that has gone past its target is over, and the interface has to communicate that instantly or the player wastes their time on a path that cannot recover.

Which is why the display ended up as a single chip showing the running sum against the target, updating as you trace. Earlier versions had the running total in one corner and the target somewhere else, and reading a game by comparing two numbers in two places is one job too many while your finger is moving. Putting them adjacent, as a fraction, removed the reading entirely: you are watching one thing approach another.

The old game hiding inside the new one

The part of a port nobody warns you about is the vocabulary that survives the transplant.

When the swap was done and the game was playing correctly, I went looking for every remaining trace of the spelling version by name — the lexicon, the current word, the minimum word length, the letter generator, the word-ready flag, the fallback word list. Most were gone. One was not: a timing constant still called something about words, being read by code that had nothing to do with words any more.

It worked. It would have gone on working indefinitely, which is exactly the problem — it was a piece of the old game's vocabulary sitting in the middle of the new game's logic, waiting to confuse whoever read it next, quite possibly me in a year. A port is not finished when it runs. It is finished when nothing in it is still named after the game it used to be.

Two modes, one set of constants, one very specific bug

There is a continuous survival mode alongside the levelled one: bubbles keep arriving, the ice keeps coming, and it ends when real ice reaches the floor.

It produced my favourite bug of the build. On a late level, a perfectly good two-tile sum — thirteen and fifteen, making twenty-eight — was rejected. The numbers were right, the tiles were adjacent, the target was correct, and the game said no.

The cause was that continuous mode was borrowing its rules from whichever level you happened to be on, and that level required a minimum of three tiles. A rule that makes sense in a designed level — forcing longer chains as difficulty rises — made no sense at all in a mode with no levels, and it was silently in force.

The fix was to give continuous mode its own constants rather than letting it inherit. Which sounds obvious written down, and the reason it was not obvious is that sharing them was correct right up until the two modes disagreed about one value. Shared configuration between two things that are nearly the same is a trap of exactly this kind: it works, and works, and works, and then produces a bug that makes no sense from either side.

Was it worth it?

The honest accounting: the visible half of this port — tiles, rendering, physics, bubbles, ice, the entire feel of the thing — came across almost free, because it never cared what was written on a tile. Everything that touched meaning had to be rebuilt from nothing, because a dictionary and an arithmetic target are not the same kind of object at all. One is a question you ask about a string. The other is a question you ask about a board.

What came out is not a re-skin. The spelling version rewards a big vocabulary and spatial judgement. This one rewards arithmetic you can do while your finger is already moving, and it turns out to be a genuinely different game wearing the same coat — which is the best possible outcome, and not the one I expected when I started.

icon for game Bubble Saver
Bubble Saver
icon for game Bug Jar
Bug Jar
  • About Us
  • Privacy Policy
  • Terms and Conditions
  • Contact Us

♻️ Made from 100% recycled electrons! ♻️

    Recently Played

      Games you open show up here.