Controller UI
Controller UI should feel like a game controller first and a webpage second.
The main failure mode is borrowing desktop web-app patterns for active gameplay surfaces.
Gameplay Controller Rules
For active gameplay:
- use an absolute
inset-0root - avoid scroll
- disable accidental text selection
- use large touch targets
- keep controls visually obvious and single-purpose
- minimize text and dense hierarchy
Lobby Rules
Lobby screens can be slightly more flexible, but should still prefer:
- simple layout
- large controls
- minimal friction
- scroll only when it actually helps the flow
Interaction Rules
Avoid:
- tiny toggles
- multi-purpose buttons with unclear affordance
- deeply nested control groups
- layouts that assume precise pointer interaction
Visual Rules
Prefer:
- sparse game-like hierarchy
- fluid layout over hard-coded widths and heights
- obvious action grouping
- strong contrast and immediate readability
Avoid:
- card-heavy dashboard styling for active gameplay
- emoji-as-icon UI
- cluttered web-app chrome
Icon Rule
For template and starter work, a practical split is:
- a general UI and system icon pack for shell actions
- a gameplay-oriented icon set for abilities, pickups, and status effects
Keep icon usage behind local wrappers where practical so the project can curate or replace icons later.