Skip to content
Funlit Games

How Splishi Splashi's analogue control feels right

By Joakim Bengtsson
  • Devlog
  • Game feel
  • Arcade

Splishi Splashi started from one feeling: the panic of being the smallest thing in the water. Everything about the game, the controls, the camera, the threats, exists to serve that feeling. This devlog is about the single most important decision that makes it work: the steering.

Analogue, not four directions

The tiny fish follows your pointer. Hold the button (or a finger, on touch) and move up or down, and the fish banks toward where you’re pointing. A small movement is a gentle curve; a big movement is a hard turn. It’s analogue, not a four-direction grid.

That distinction sounds academic until you play it. With grid movement, every dodge is the same dodge, you’re picking from a menu of fixed directions. With analogue steering, you decide exactly how tight to cut a corner. A near-miss feels hand-crafted, because you chose the exact curve around the predator. A clean escape feels earned, and that ownership is what makes the game stick.

Threats from everywhere

Most survival arcade games chase you from behind. Splishi Splashi surrounds you, predators close in from the top, the bottom, and both sides. That turns the game from a reaction test into a spatial awareness test. You’re never just dodging one fish; you’re reading the whole tank and managing space.

Pairing that with analogue steering is the point. If threats come from every direction, you need control that can respond in every direction with nuance. Four-way movement would fight the design; smooth steering completes it.

Speed as risk

The reward loop is speed. Orange and blue orbs push your top speed higher, which feels fantastic and immediately raises the stakes: the faster you go, the less time you have to read the next threat. That’s the tension every good run is built on, grab the orb, or stay safe? I tuned it so max speed in a crowded corner is genuinely how runs end, which keeps the decision honest.

The retro-styled water and chunky sprites are doing quiet work here too. When the screen fills with hungry neighbours, readability is survival, so I kept the art bold and high-contrast for quick threat recognition.

The part that took the longest: the response curve

“The fish follows your pointer” is one sentence and about three weeks of work, almost all of it in how directly it follows.

The naive implementation snaps the fish to the pointer position. It is perfectly responsive and it feels awful, the fish has no weight, no sense of being a thing moving through water, and every input reads as teleportation. It also makes the game trivially easy, because there is no consequence to a wild input; you just snap back.

The opposite extreme, where the fish accelerates toward the pointer with real inertia, feels much better and plays much worse. Momentum means a correction takes time to land, which means every death has a component of “I did the right thing too late”, and that is precisely a failure that makes the controls feel untrustworthy.

The final response curve gives the fish a sense of mass while still allowing a mid-dodge correction to take effect. That ability to change direction is the practical threshold for responsive analogue control.

The other thing I underestimated was the small end of the range. Most of the interesting play lives in tiny inputs, barely moving the pointer to shave past something, and early builds had a deadzone that quietly ate those. Removing it made the game noticeably harder to play badly and much more satisfying to play well, which is usually the right trade.

Touch is not mouse with a finger

The port to touch broke assumptions I did not know I had.

A mouse pointer is always somewhere, and the fish can track it continuously. A finger only exists while it is down, which means the game has to decide what happens at the moment of contact. Snapping the fish to wherever you first touched is catastrophic, people put their finger down somewhere convenient, not somewhere meaningful, and instantly die.

The fix is that first contact establishes a movement reference. The fish steers based on movement relative to where you touched down, not the absolute screen position. That is invisible when it works and enraging when it does not, and it is the single change that made the game playable on a phone.

The other touch problem is that your finger covers the thing you are steering. Mouse players see the fish at all times; touch players do not. That pushed the camera framing slightly, and it is part of why threats are readable from further out than they strictly need to be, on a phone, some of that margin is being spent on the fact that you cannot see your own fish.

Achievements as a second map

The 20 achievements reward varied styles of play and serve as optional challenges alongside the high-score chase.

That was partly a design decision and partly a confession. A pure high-score chase has one strategy, and once you find it the game is over even if the number keeps going up. Achievements that reward the opposite of that strategy, deliberately slow runs, deliberately risky ones, keep pushing you back into the parts of the control model you have stopped exploring.

That’s the whole game in one idea: give you precise, expressive control, then surround you with threats and dare you to go faster. Try to stay off the menu, or read the controls guide for the player-side version of the steering model.

‹ Back to the devlog