Controls & HUD
Monsterion runs the same gameplay through two very different input layers: desktop (keyboard + mouse, RTS-style) and mobile/web touch (a virtual joystick + on-screen buttons).
MOBA controls
| Action | Desktop | Mobile / web touch |
|---|---|---|
| Move | W A S D | Bottom-left virtual joystick |
| Attack | Space | Bottom-right circular button (red X) |
| Skill 1 — Sprint | — | Lightning button |
| Skill 2 — Battle Cry | — | Sword button |
| Skill 3 — Heal | — | Plus / star button |
| Pan camera | Click + drag | One-finger drag |
| Zoom | Mouse wheel | (locked at 3.0 on mobile MOBA) |
| Snap to hero | Release pan | Tap joystick |
| Jump to map area | — | Tap top-right minimap |
Attack picks the nearest enemy within the attack-scan radius (220 units). With no enemy in range, desktop aims at the cursor; mobile fires nothing.
MobaControl merges WASD and joystick input each frame by max-magnitude, so neither
source stomps the other when you switch between them.
Mobile MOBA HUD
When OS.has_feature("mobile_build") is true and the mode is MOBA, a touch HUD overlays
the regular UI.
Virtual joystick
A bottom-left thumb pad (radius 95, knob 38), 60px from the bottom-left corner. It captures one touch index so you can hold the stick with one finger and tap actions with another. Pressing it also recenters the camera on your leader.
Attack button
A bottom-right round button (red X). Press → fires your normal attack at the nearest enemy in range.
Three universal ability buttons
An arc above-left of the attack button: Sprint, Battle Cry, Heal — universal, so every leader has them. See Skills & Abilities.
Camera
lock_zoom_at(3.0)pins the mobile MOBA camera at a fixed character-cam zoom.- A
follow_targetlerps the camera to your hero each frame; a user pan suspends follow, and releasing resumes it. The joystick's recenter snaps it straight back.
Layout overrides
On mobile the minimap and control cluster move to the top-right (150×150), the stats panel's inner detail panel is hidden, ability/inventory bars hug the bottom edge, the player's name label is hidden (HP bar moves up to sit above the head), and a gold readout sits under the FPS counter.
Multi-touch routing
Input flows through _unhandled_input so GUI controls that consume a touch never leak
into gameplay. The joystick and attack button consume their own touches; everything else
falls through to selection, movement, and the camera. The minimap uses
MOUSE_FILTER_IGNORE so taps reach the handler and route to the minimap.
The mobile HUD is driven by raw
_inputfor multi-touch, becauseemulate_mouse_from_touchonly follows the primary finger — which would break hold-stick-and-tap-button play.