Wall paintings you can put a sofa in front of, and the app finally explains itself
Big week in three acts, all deployed to Render today.
Art. The pet finally has its full sprite set — 11 poses (idle, happy, sad, sleeping, crystallized…) plus the legacy statues that dead pets leave behind in the room. Best lesson of the batch: two of the three things that “looked wrong” with the new art were the renderer’s fault, not the artist’s. The sunset tint was multiplying over every sprite and drowning the palette, and furniture was drawing at nearly double the intended scale. Fixed the renderer and the exact same PNGs suddenly looked right.
Room editing rework. Decorating used to be “buy it and it lands somewhere”. Now there’s a real edit mode: visible grid, ghost preview anchored to the piece’s front corner, tap the destination cell to move it, red flash if it doesn’t fit. Every catalog item now declares its footprint in its info.json — beds and sofas are proper 2×1 rectangles instead of fat squares, and rotating a piece swaps its footprint. The fun part: wall items. Paintings, windows and clocks now hang on dedicated rails along the two back walls and don’t occupy floor cells, so you can put a sofa in front of a painting like a normal human. Their height on the wall is auto-calibrated per sprite, because a fixed offset that looked fine for a clock launched a bookshelf out through the top of the wall.
The app explains itself now. Fresh-install testing showed the game was unreadable to anyone who isn’t me: what’s “Growth”? why ×1.2? what’s gold even for? Shipped a one-time intro card per screen (replayable from Settings), tap-anything explanations for every stat and mechanic, and a full animation pass — bars tween, gold counts up, +XP/+Gold float off the pet, evolutions flash, and the tic-tac-toe ritual celebrates a line only when you complete one, not when the page loads. Two rules kept it cheap: counters animate the viewmodel value (never the label text), and the Frenzy pulse rides the diorama’s existing frame tick instead of adding another timer.
The autonomous review loop also kept paying rent: it caught the “Level 3” chip contradicting the “Baby” stage shown two lines below it (two different formulas for the same concept), group member statuses hardcoded in Spanish while their English translations sat orphaned in the localization table, cancelling Google login being reported as a login failure, an entire welcome screen nothing navigates to anymore (deleted), and my favorite — when your pet is dead and your task isn’t hard enough to revive it, the client was string-matching a phrase the server never actually sends, so instead of “still crystallized” you got the full confetti celebration with “+0 XP · +0 Gold”.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.