MushRog

Crisp on phones, with a joystick

October 15, 2026 arquiteturadesign

The game now draws text at the device’s resolution, uses the full screen on tall phones and respects the camera notch. It also gained an optional joystick for the room.

Why

Until now the game was drawn on a small 640 by 420 screen and then stretched. Pixel art handles that well, but the text came out blurry and small, and a 20:9 phone got black bars on the sides. It was the last thing separating the phone version from a beta.

How it works

The art stays in crisp pixels and the text is now drawn at the screen’s real resolution. On wide screens, the arena sits in the center and the sides show more scenery, with no black bars; in town, the camera uses the full width. The bottom bar, the top strip and the panels stay inside the device’s safe area, away from the notch and the rounded corners.

The interface size option, 1x, 1.25x and 1.5x, works and scales up the bar and panels without cutting anything off. It makes a difference on tall screens; in a 16:10 computer window the interface is already at the biggest size that fits.

The joystick is optional and comes on by default on touch-screen devices. Hold on the left half of the arena and drag to move; a quick tap still sends the team to that point. It never steals touches from skills, cards or the bar, and a second finger can use skills while the first one moves.

The equipment slots also got icons, from Kenney’s 1-Bit pack (public domain).

Next step

With the interface phase closed, what’s left for the closed beta is our own art.

Changes

  • Crisp mobile layout, virtual joystick and equipment slot icons

    Switch the window stretch from "viewport" to "canvas_items" + "expand" (base 640x420, nearest filter kept, clear color = game background), so text renders at device resolution and 20:9 phones get no black bars. New client/ui/screen.gd anchors everything to the visible area: the room arena is centered above the bar via the root canvas transform, the city camera uses the full width, the bottom bar sits at the bottom of the display safe area with its frame spanning edge to edge, UI layers are centered (panels never under the bar, status strip and toasts at the top) and modal dims cover the side bands. The safe area can be simulated with --safe-inset=l,t,r,b. The 1x/1.25x/1.5x interface scale is enabled again: it scales the bar and UI layers, clamped to what fits the safe area, so it never cuts the HUD (on 16:10 windows it stays 1x; on 20:9 the bar grows). Optional virtual joystick in rooms (Options toggle, on by default only on touch devices): hold on the left half of the arena and drag to move the team like WASD, release to stop; a tap without dragging is still click-to-move, and the skill row, cards and bar keep priority. It tracks the finger index, so another finger can still use skills. Equipment slots in the Character panel get Kenney 1-Bit Pack (CC0) icons, registered in CREDITS.md. tap_test now converts logical to window coordinates (works at any --resolution) and covers the joystick. Marks items 29, 31 and 35 in docs/fluxo-do-cliente.md.

← Back to the devlog