docs(ui): define web application visual style requirements
This commit is contained in:
@@ -215,7 +215,34 @@ Browser controls must support:
|
||||
- If the player does not reconnect within 60 seconds, the match ends in a draw.
|
||||
- Reloading a page is treated as a reconnect, not as leaving the match.
|
||||
|
||||
## 11. Technical constraints
|
||||
## 11. Browser presentation
|
||||
|
||||
- The browser UI uses one dark, humorous retro arcade visual language across
|
||||
provisioning, lobby, player, and observer modes, as defined in
|
||||
`docs/UI_STYLE.md`.
|
||||
- All player-facing UI copy, game messages, and browser errors are in Russian.
|
||||
- The UI uses a near-black background, purple panels, turquoise interactive
|
||||
accents, blue for Player 1, pink for Player 2, and plant-like green maze
|
||||
walls. Important state is distinguished by icons, labels, outlines, or
|
||||
shapes in addition to color.
|
||||
- The player map consumes all space not required by fixed status and control
|
||||
panels. The player view supports a minimum `412 x 916` CSS-pixel viewport
|
||||
without page scrolling.
|
||||
- Computers support keyboard movement and on-screen arcade controls. Tablets
|
||||
support swipes and on-screen controls. Phones use directional swipes without
|
||||
on-screen directional buttons.
|
||||
- An always-visible `OK` control with a key icon drops the carried key without
|
||||
confirmation and exposes the Russian accessible label `Сбросить ключ`.
|
||||
- Observer mode requires at least a `1024 x 768` CSS-pixel viewport, initially
|
||||
fits the complete map, and supports zoom and pan. Smaller viewports show a
|
||||
Russian large-screen requirement message.
|
||||
- Sound and vibration are enabled by default after the first user interaction
|
||||
when the browser and device support them.
|
||||
- The application has no runtime internet dependency. It uses local assets,
|
||||
locally authored SVG icons, plain CSS, and a system monospace font styled to
|
||||
resemble a pixel font.
|
||||
|
||||
## 12. Technical constraints
|
||||
|
||||
- Target: ESP32-C6FH4, 4 MB Flash, no required PSRAM.
|
||||
- Build: PlatformIO, `espressif32@7.0.1`, ESP-IDF, compatible
|
||||
@@ -224,6 +251,8 @@ Browser controls must support:
|
||||
MVP.
|
||||
- Static browser assets reside in LittleFS and should be compressed for the
|
||||
production image.
|
||||
- The complete compressed web payload must not exceed 1.5 MiB and must fit the
|
||||
unchanged 1,984 KiB LittleFS partition.
|
||||
- HTTP serves the application and provisioning pages; WebSocket carries live
|
||||
lobby, control, and match messages.
|
||||
- The initial LwIP socket limit is 16.
|
||||
@@ -232,7 +261,7 @@ Browser controls must support:
|
||||
- Active lobby and match state may live in RAM and need not survive an ESP
|
||||
reboot. Wi-Fi settings must survive reboot.
|
||||
|
||||
## 12. MVP acceptance criteria
|
||||
## 13. MVP acceptance criteria
|
||||
|
||||
The MVP is accepted when all of the following are demonstrated on the target
|
||||
board:
|
||||
@@ -263,8 +292,12 @@ board:
|
||||
60-second reconnect timeout ends it as a draw.
|
||||
12. A representative match normally completes in approximately five minutes
|
||||
after balance tuning, without imposing a hard match timer.
|
||||
13. The Russian retro arcade UI follows `docs/UI_STYLE.md`, works at the
|
||||
required player and observer viewport sizes in the current stable Chrome,
|
||||
Safari, Firefox, and Edge releases, requires no runtime internet access,
|
||||
and stays within the 1.5 MiB compressed web-asset budget.
|
||||
|
||||
## 13. Explicitly outside MVP
|
||||
## 14. Explicitly outside MVP
|
||||
|
||||
- More than two active players or more than one concurrent match.
|
||||
- More than four observers.
|
||||
@@ -277,4 +310,3 @@ board:
|
||||
- Persistent match recovery after ESP reboot.
|
||||
- OTA firmware partitions and OTA update flow.
|
||||
- Dependence on PSRAM, an unverified LED, or an assumed board pinout.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user