Screenshots




Report
Environment
- .NET 10.0.301, build green, 360 unit tests passing,
dotnet formatclean. - Dev server started cleanly on port 5080 with zero sudo prompts (production systemd service on 5000 left untouched).
Features exercised
1. Loadout overhaul — PASS
- Stack-count badges: slots show
∞for fixed sidearms (Pistol, Rocket) and the owned count (e.g.1) for loadout items. Empty slots show no badge. - Drag-and-drop reorder: dragged slot 3 (Shotgun) onto slot 5 — order updated correctly (Ninja Rope → slot 3, Teleport → slot 4, Shotgun → slot 5).
- Click-to-sell: clicked the Ninja Rope slot (count 1) — it sold one unit, refunded the credits, and the slot was removed at count 0 (loadout auto-compacted). Selling a stacked item decrements without removing the slot.
- Screenshot:
01-loadout.png.
2. Pixel-art textures — PASS
- Generated via Seedream (
doubao-seedream-5.0-lite): tileable dirt terrain + cloudy sky (2048×2048 JPEGs). - Verified in the live game by sampling canvas pixels:
- sky top
[83,189,249](blue), sky mid[189,234,255](cloud), ground[162,89,34](brown dirt) — textured, not flat fills.
- sky top
- Screenshot:
02-game-start.png.
3. Ninja Rope — PASS (attach); release inconclusive live
- Selected Ninja Rope, aimed toward terrain, pressed Enter.
- The client raycast found an attach point and the rope attached — verified by scanning the canvas for the rope-line colour (
#c9a86a): 165 rope pixels appeared after firing (vs 0 before). - A/D pumps the swing (sim
StepRopeconsumes movement; unit-test covered). - Release: pressing Enter again to release could not be visually confirmed because the turn advanced (unit 3/3 → unit 1/3) and the sync-mode live canvas goes stale between turns (see Known issue #1). Release is covered by the
MobilitySystemTests.Rope_Release_Detachesunit test. - Screenshot:
03-ninja-rope.png.
4. Turn flow / AI — PASS
- After the player's turn, the AI took its turn and control returned to the player (status progressed
unit 3/3→unit 1/3). - Screenshot:
04-game-turn.png.
Known issues found
1. Sync-mode live canvas goes stale between turns.
When the game is idle (player's turn, no projectile in flight) or during the AI turn/replay, the client Tick() returns early and drawFrame is not called, so the canvas shows the last drawn frame. This made live verification of the rope release (and other mid-turn state) unreliable. Aim/status text still update via throttled Razor renders, but the canvas does not redraw continuously. This is a pre-existing sync-mode rendering behaviour, not introduced by the ninja-rope change.
Unit-test coverage (relevant)
PlayerEconomyTests— Sell refunds + last-unit-removes-slot + rejects sidearms.GameSessionTests.SellItem— server-side sell end-to-end.GameInputMapperTests— teleport/rope routing, fire-vs-release toggle.BatchInputExtensionsTests— ToTickInput teleport/rope target mapping.MobilitySystemTests— teleport + rope throughGameSimulator.Step, rope swing within rope length, rope release detaches.
Conclusion
The PvE loop works: loadout editing (drag-drop / sell / count badges), textured terrain + sky, ninja-rope attach, and AI turn progression all function. The main follow-up is the sync-mode canvas-redraw quirk (Known issue #1), which affects live visual feedback between turns.