The tank learns to behave
Most of this devlog has been about making the tank look alive. This stretch was about making it act alive — and almost none of it screenshots, because it’s all motion. You’ll have to take my word until I cut a clip.
Here’s the one I’m proudest of. When four or more fish of the same kind drift together, the boldest, most energetic one quietly appoints itself leader and takes off on a lap around the tank — and everyone else falls in behind it, single file, sprinting to close the gap. Stragglers surge to catch up, the line stretches out and reels back in. It’s a full conga line of overexcited fish, and the best part is I didn’t really script it — it falls out of the personalities the fish already had. The bold ones lead because they’re bold. After sessions of building traits as data on a card, watching that data turn into a fish deciding to go on an adventure was the most satisfying moment I’ve had on this project.
A few related fixes in the same spirit. All my guppy strains — Cobra, Japan Blue, Red Dragon, Dumbo Red Tail — now school together as one big family instead of swimming around as lonely solo colors. A guppy’s a guppy: a Dumbo doesn’t care whether it’s shoaling next to a Cobra or a Red Dragon. (My grouping logic had been quietly sorting them by strain, when it should’ve been treating them all as one species — they still keep their distinct looks, they just hang out together now.) And my bully fish finally learned some manners: a nippy fish used to hover on top of a frozen victim twitching back and forth, which looked broken. Now the target sees it coming and backs off, the aggressor darts in for a clean nip, and nobody flip-flops in place anymore.
Then there’s the new toy: a treasure chest that opens and closes on its own, burbling a stream of fat little bubbles out of the gold. Curious and energetic fish wander over to hang around it, and every time it pops open there’s a chance one of them gets visibly thrilled — a faster wiggle, a happy hop, a puff of bubbles, a scramble toward the loot. It’s a small thing that makes the tank feel like a place fish want to be, and it’s pointed me at something: decor the fish actually react to is worth more than decor that just sits there looking nice. I think that’s the direction I want to push.
On the calmer side: there’s a pirate set now (a ship and an anchor), the caves got reworked into a single cleaner piece with a cozy nook fish like to tuck into, and — my favorite for the fussy decorator in me (and my daughter) — you can now tint the sand to any color you want, with hand-drawn grain and a live picker. Dial in the exact substrate tone, save it, done.
Behind the scenes I also made my own life easier: my Asset Editor now lets me drag things into place with the mouse — anchor points, the chest’s lids, where its bubbles come from — instead of nudging with arrow keys, and I can give a single piece multiple floor lines, so an arch can have a real gap underneath that fish swim through.
I also owe last post an honest correction. That 3D-depth trick I was excited about — layering decor so a fish tucks behind the near rim of a cave instead of floating on top — I couldn’t make it work. I lost a full day throwing different fixes at it before admitting the problem wasn’t the code, it was the approach: I’d been trying to bolt depth onto art that was never drawn for depth. The fix is to author the art from a different perspective from the start. That cleaner single-piece cave up there is partly me climbing back out of that hole. No finished depth system to show yet — but realizing it’s an art-authoring problem and not an engineering one is its own kind of progress, and probably saved me a second wasted day.
More soon — hopefully with a clip of that conga line.