PAC-MAN Royale — Status Board

Real-time project tracking — every task, user story, and milestone.

📊 Project Dashboard

0%
Complete
Done
In Progress
Not Started

🗺 Milestone Timeline

COMPLETE
M1: Single-Player Core
Maze, movement, ghosts, pellets, scoring — Feb 22 2026
COMPLETE
M2: Battle Royale Layer
Attack system, targeting, elimination, combo scoring — Feb 2026
COMPLETE
M3: Local Multiplayer
4-player shared maze, lobby, speed ramp, celebration music — Feb 2026
COMPLETE
M4: Online Multiplayer
FishNet + Bayou, lobby, Docker deploy — Mar 1 2026
COMPLETE
M5: Server-Authoritative Online
60Hz snapshots, dead-reckoning, full visual parity — Mar 6 2026
COMPLETE
M6: Automated Play Testing
Bot AI, headless game runner, invariant validation, CI pipeline — Mar 17 2026
COMPLETE
M7: Next-Gen UI Enhancements
Neon arcade visual fidelity — NeonAmbientBg, VictoryCelebration, GhostEyeTracker, PowerPelletGlow, M7 QA
COMPLETE
M8: Bugs & Enhancements
Pellet persistence fixes, 3 random maze layouts, 64×64 power-up icons, 30 new QA tests — 447 total

Milestone 1: Single-Player Core DONE

Unity project scaffolding
Full Stack Engineer
Done
Grid/Maze (MazeLayout, MazeRenderer, ClassicMazeData)
Full Stack Engineer
Done
GridMover (IGridMover, GridMover)
Full Stack Engineer
Done
Pac-Man controller (PacmanController)
Full Stack Engineer
Done
Pellet/power-up logic (PelletManager)
Full Stack Engineer
Done
GameContext (DI hub, bootstrap)
Full Stack Engineer
Done
Ghost AI state machine
Full Stack Engineer
Done
Ghost prefabs with GhostStateMachine, GridMover, coloured sprites
Full Stack Engineer
Done
Ghost exit-house state + staggered release delays
Full Stack Engineer
Done
Ghost / Pac-Man collision (normal + frightened)
Full Stack Engineer
Done
Lives system (PlayerState / EliminationTracker / HUD)
Full Stack Engineer
Done
Death blink animation + invincibility window
Full Stack Engineer
Done
Score display wired end-to-end
Full Stack Engineer
Done
AudioManager + AudioClipLibrary
Full Stack Engineer
Done
WebGL build pipeline
Full Stack Engineer
Done

Milestone 2: Battle Royale Layer DONE

Combo scoring system (AttackSystem, TargetingSystem, EliminationTracker)
Full Stack Engineer
Done
AttackSystem.ComboStep public property
Full Stack Engineer
Done
GameLoop wired to AttackSystem + TargetingSystem + EliminationScreenUI
Full Stack Engineer
Done
Scene wiring + QA for full battle royale layer
Full Stack Engineer + QA
Done

Milestone 3: Local Multiplayer DONE

4-player redesign — shared single maze, tabletop layout
Full Stack Engineer
Done
LobbyController — press-to-join overlay, countdown, BeginGame
UI/UX & Gameplay
Done
LocalMultiPlayerLoop — 1-4 player support, rotated input
Full Stack Engineer
Done
Game-over detection + OnGameOver event
Full Stack Engineer
Done
Winner screen — flash banner, return to lobby
UI/UX & Gameplay
Done
Pellet repopulation (power-pellets + board clear)
Full Stack Engineer
Done
Incremental speed ramp (3%/30s, capped at 150%)
Full Stack Engineer
Done
Celebration music (VictoryFanfare at game-over)
Full Stack Engineer
Done
PlayMode integration tests
QA Engineer
Done

Milestone 4: Online Multiplayer DONE

FishNet networking (Broadcast API rewrite)
Full Stack Engineer
Done
Online lobby UI (OnlineLobbyScreen)
UI/UX & Gameplay
Done
Online player names + roster broadcast
Full Stack Engineer + UI/UX
Done
Deploy pipeline: Docker / TrueNAS
Full Stack Engineer
Done
Bug fix: game.html WebGL loader filenames (WebGL.* not PACMAN Royale.*)
Full Stack Engineer
Done
Bug fix: Build-ServerImage copy order (static files before Unity index.html rename)
Full Stack Engineer
Done
Bug fix: Deploy-TrueNAS.ps1 standalone failure (remove app before file upload)
Full Stack Engineer
Done
WSS TLS configuration (NPM + Let's Encrypt)
Full Stack Engineer
Done

Milestone 5: Server-Authoritative Online DONE

OnlineServerGameLoop — full server-authoritative simulation
Full Stack Engineer
Done
OnlineClientRenderer — snapshot interpolation + dead-reckoning
Full Stack Engineer
Done
GameStateBroadcast — 60Hz snapshots
Full Stack Engineer
Done
Slot assignment + HUD/camera config
Full Stack Engineer
Done
Velocity-based dead-reckoning extrapolation
Full Stack Engineer
Done
Board repopulation relay
Full Stack Engineer
Done
Full power-up visual effects on clients
Full Stack Engineer + UI/UX
Done
Speed multiplier HUD + screen shake
Full Stack Engineer + UI/UX
Done
Auto-start countdown (10s when 2+ players)
Full Stack Engineer
Done
Game reset fix — pellet event leak
Full Stack Engineer
Done

Milestone 6: Automated Play Testing DONE

US-6.01: Bot Input Controller — BotPacmanController (BFS, 3 aggression levels)
Full Stack Engineer
Done
US-6.02: Headless Game Session Runner — PlayTestRunner + JSON output
Full Stack Engineer
Done
US-6.03: Play Test Assertions — 6 invariants, PlayTestInvariantValidator
QA Engineer
Done
US-6.04: CI Play Test Integration — Run-PlayTests.ps1 gates deploy
Full Stack Engineer
Done
BotPacmanControllerTests.cs — 14 EditMode tests
QA Engineer
Done
PlayTestInvariantTests.cs — 18 EditMode tests
QA Engineer
Done
PlayTestRunnerTests.cs — 7 PlayMode tests
QA Engineer
Done

Milestone 7: Next-Gen UI Enhancements DONE

Based on analysis of the PAC-MAN BATTLE ROYALE CHOMPIONSHIP arcade cabinet. These user stories close the visual gap between our WebGL version and the arcade original.

US-7.01
3D-Effect Neon Maze Walls
As a player, I want the maze walls to have a 3D beveled neon glow effect (like the arcade cabinet) so the playfield looks polished and premium. Acceptance: walls render with inner/outer edge highlights, glow bloom shader, and depth illusion.
MUST Done
US-7.02
High-Resolution Character Sprites
As a player, I want Pac-Man and ghosts to have smooth, high-resolution sprites (128px+) with anti-aliased edges matching the arcade's crisp character rendering. Acceptance: each character has idle, moving, frightened, and dead sprite sets at 128px minimum.
MUST Done
US-7.03
Arcade-Style HUD Chrome
As a player, I want the HUD to feature arcade-cabinet-style score displays with pixel fonts, neon outlines, and animated score counters that roll up on change, matching the arcade aesthetic.
MUST Done
US-7.04
Attract Mode / Demo Screen
As a visitor, I want an attract mode that plays automatically before anyone joins — showing AI-controlled Pac-Men playing the game with "INSERT COIN" style prompts, just like the real arcade cabinet.
SHOULD Done
US-7.05
Cabinet-Style Border Chrome
As a player, I want a decorative border around the play area that mimics the physical arcade cabinet's marquee and control panel art, giving the WebGL version a "virtual cabinet" feel.
SHOULD Done
US-7.06
Enhanced Ghost Animations
As a player, I want ghosts to have animated eye tracking (eyes follow nearest Pac-Man), body wobble/bob while moving, and a "poof" disappear effect when eaten — matching the arcade's fluid ghost animations.
MUST Done
US-7.07
Particle System Overhaul
As a player, I want pellet collection to produce bright spark showers, power pellets to create screen-wide pulse waves, and ghost eating to produce dramatic explosion effects with lingering particles.
SHOULD Done
US-7.08
Dynamic Maze Colour Cycling
As a player, I want the maze walls to gradually cycle through different neon colours as the match progresses (blue / purple / pink / red as speed increases), creating visual urgency like the arcade version.
SHOULD Done
US-7.09
Victory Celebration Animation
As a winner, I want a dramatic victory sequence: winner's Pac-Man grows large and does a victory dance, firework particles explode across the screen, and a "CHAMPION!" banner slams in with the celebration fanfare.
MUST Done
US-7.10
Smooth Power-Up Transition Effects
As a player, I want the transition into powered state to feel impactful: screen flash, Pac-Man grows slightly with a glow aura, and the maze briefly pulses — more dramatic than the current implementation, matching the arcade's "supercharged" feel.
COULD Done
US-7.11
Unique Power-Up Types
As a player, I want new power-up types beyond the classic power pellet (speed boost, ghost freeze, score multiplier) that the arcade CHOMPIONSHIP edition introduced, adding strategic depth to matches.
COULD Done
US-7.12
Animated Game Logo & Splash
As a player, I want an animated PAC-MAN Royale logo on the title screen that assembles piece-by-piece with neon glow trails, matching the energy and polish of the arcade cabinet's marquee display.
COULD Done
US-7.13
Power Pellet Visual Overhaul — Larger & Throbbing
As a player, I want power pellets to be noticeably larger than regular pellets (2–3× diameter) with a pulsating throb animation — a smooth scale oscillation combined with a bright glow aura that intensifies and fades rhythmically. The throb should convey "eat me for a power-up" at a glance, making power pellets impossible to miss even in a frantic 4-player match. Acceptance: power pellets render at ≥2× base pellet size, throb cycle 0.6–1.0s, glow radius pulses in sync, clearly distinguishable from normal pellets at all zoom levels.
MUST Done
US-7.14
Speed Boost Pellet — Winged Sneaker Icon
As a player, I want speed boost pellets to have a unique, eye-catching procedurally-generated icon — a stylised winged sneaker (a shoe silhouette with small feathered wings extending from the heel) rendered in electric-blue with a white speed-streak trail. The icon should bob gently and emit a faint particle sparkle trail so it reads instantly as "speed power-up." The design should be distinct from power pellets and regular pellets, making its purpose obvious without a tutorial. Acceptance: procedural sprite generated at runtime (no external assets), clearly reads as a winged shoe at 64–128px, animated bob + sparkle, colour palette distinct from power pellets.
MUST Done
US-7.15
Online Lobby Screen Overhaul — Hype & Clarity
As a player entering the online lobby, I want an exciting, polished UI that immediately tells me I'm about to enter a high-stakes PAC-MAN BATTLE. The current lobby has overlapping text boxes, no field labels, and a flat, lifeless layout. The redesign must: (1) Fix all overlapping/misaligned input fields — player name and server address inputs must be clearly separated with distinct placeholder labels (e.g. “ENTER YOUR NAME”, “SERVER ADDRESS”). (2) Add a bold, arcade-style lobby header with animated glow or neon treatment (e.g. “BATTLE LOBBY” or “ENTER THE ARENA”). (3) Add hype elements: pulsing background, animated Pac-Man or ghost silhouettes, dramatic colour palette (dark bg with neon accents). (4) HOST and JOIN buttons should be large, satisfying, and clearly convey their purpose with hover/press feedback. (5) Connection status should be prominent and colour-coded (red = disconnected, green = connected). (6) Overall feel: arcade cabinet attract-mode energy — the player should feel the adrenaline before the game even starts. Acceptance: no overlapping UI elements, all fields labelled, lobby reads as exciting/high-stakes, passes visual QA on 1080p and 720p, HOST/JOIN buttons have hover + press states.
MUST Done
US-7.16
Full Menu Suite Visual Overhaul — Neon Arcade Theme
As a player, I want every screen — from the initial loading splash through the main menu, game mode selection, and local lobby — to share a cohesive neon arcade aesthetic matching the M7 visual overhaul, so the entire journey from first load to first move feels premium and on-theme.

(1) Loading / splash screen — Animated PAC-MAN BATTLE ROYALE logo assembles with neon glow trails; progress bar styled as a pellet trail eaten by Pac-Man; animated maze silhouette with wandering ghost and Pac-Man silhouettes in the background.
(2) Main menu — Dark background (#0a0a0f) with dynamic neon grid or animated maze silhouette; oversized branded header with pulsing glow; PLAY LOCAL and PLAY ONLINE rendered as arcade-button cards with distinct hover (scale + brightness) and press (sink + flash) animations; version and status-page link present but not dominant.
(3) Mode selection / local lobby — Player-slot cards tinted in canonical slot colours (P1 yellow, P2 cyan, P3 pink, P4 orange) with join animations; countdown as an oversized neon digit with punch-scale keyframe; ambient ghost and Pac-Man silhouettes wander behind the UI.
(4) Unified design system — Arcade/pixel typeface, dark neon palette, consistent glow/bloom on all interactive elements, animated ambient background on every screen. No screen resembles a Unity default layout.
(5) Screen transitions — Brief animated wipe (neon chomp or black flash) on all scene changes; no bare instant cuts.
(6) Visual QA — Zero overflow, clipping, or z-fighting at 1920×1080 and 1280×720; all text legible at both resolutions.
MUST Done

Milestone 8: Bugs & Enhancements DONE

Bug fixes for pellet persistence across games (local + online), random maze layouts for variety, and power-up icon overhaul for visibility.

US-8.01
BUG: Local Play — Pellets Don’t Disappear in Game 2+
PelletTwinkleEffect.OnDestroy() only unsubscribes events but does NOT destroy its overlay GameObjects. When the component is destroyed between games, orphaned SpriteRenderer children persist and render on top of the tilemap. Same issue in PowerPelletGlowEffect. Fix: explicit child GO cleanup in OnDestroy().
MUST
US-8.02
BUG: Online Play — Fake Power Pellets in Game 2+
Same orphaned-GO root cause as US-8.01, plus ClearClientPowerPellets() does not rebuild twinkle/glow effects after downgrading PPs, leaving power-pellet-styled overlays at wrong positions. Fix: OnDestroy() cleanup + rebuilt effects after PP clear.
MUST
US-8.03
Random Maze Layouts
Only the classic 28×31 maze exists (US-17, never implemented). Create 3+ additional maze layouts, random selection at game start, updated Reinitialise(). All layouts must pass dead-end validation and have ghost house + tunnels.
SHOULD
US-8.04
Power-Up Icons — Larger with Fast Strobe
Power-ups render at ~60% cell size with 32×32 sprites and 1.5 Hz pulse — easily mistaken for pellets. Fix: 64×64+ sprites, 1.5× cell scale, 6 Hz strobe, coloured glow ring, sorting order ≥14.
MUST
US-8.05
QA: Pellet Cleanup Regression Tests
Tests for US-8.01/8.02: OnDestroy() destroys overlay GOs; no orphans after ResetForNewGame() + BeginGame(); overlay count matches layout after Reinitialise().
MUST
US-8.06
QA: Random Maze Layout Tests
Tests for US-8.03: no dead ends per layout, ghost house exists, tunnels exist, ≥100 pellet tiles, random selection variation, Reinitialise() correct pellet count.
MUST
US-8.07
QA: Power-Up Visibility Tests
Tests for US-8.04: textures ≥64×64, scale ≥1.2× cell, sorting order >12, 3 distinct sprites, strobe ≥4 Hz.
MUST

🐛 Bug Fixes

Ghosts freeze after being eaten
Full Stack Engineer
Done
Wave timer fires mid-exit-house
Full Stack Engineer
Done
Pellet eaten ahead of sprite
Full Stack Engineer
Done
Maze dead ends (stale .asset + cell size)
Full Stack Engineer
Done
LobbyController coroutine crash
Full Stack Engineer
Done
Yellow blob in single-player
Full Stack Engineer
Done
DRAW! in single-player
Full Stack Engineer + UI/UX
Done
Join prompts misaligned
Full Stack Engineer
Done
HUD visible for inactive players
Full Stack Engineer + UI/UX
Done
Wrong spawn positions
Full Stack Engineer
Done
Pellets not edible after second game
Full Stack Engineer
Done
HUD labels x-shift
Full Stack Engineer
Done
P3/P4 HUD and join-prompt orientation
Full Stack Engineer + QA
Done
Blinky spawns outside ghost house
Full Stack Engineer
Done
Ghosts 2-4 stuck in house on game 2+
Full Stack Engineer
Done
NetworkObject on NetworkManager blocks clients
Full Stack Engineer
Done
TLS conflict on port 443
Full Stack Engineer
Done
HOST connects wrong endpoint + JOIN never works
Full Stack Engineer
Done
ObserversRpc timing race — Broadcast API rewrite
Full Stack Engineer
Done
Online movement jitter
Full Stack Engineer
Done
Pac-Man facing direction (network)
Full Stack Engineer
Done
Pellets not disappearing on client (v1-v3)
Full Stack Engineer
Done
Lobby sticks after game over
Full Stack Engineer
Done
All Pac-Men same color
Full Stack Engineer
Done
Ghosts turn transparent blue
Full Stack Engineer
Done
Tunnel pass-through slide
Full Stack Engineer
Done
Remote input lag
Full Stack Engineer
Done
Powered Pac-Man always yellow
Full Stack Engineer
Done
Fake power pellet (client PP desync)
Full Stack Engineer
Done
Player names not displayed
Full Stack Engineer + UI/UX
Done
Lobby shows "Slot X Player X"
UI/UX & Gameplay
Done
Wrong player names after reconnect
Full Stack Engineer + UI/UX
Done
Stale lobby after game ends
Full Stack Engineer
Done
Pellet event leak between online games
Full Stack Engineer
Done
Power pellet glow at wrong position (online PP desync)
Full Stack Engineer
Done
Phantom power pellet — glow rings mismatch with layout
Full Stack Engineer
Done
PowerPelletGlowEffect scale drift (.normalized bug)
Full Stack Engineer
Done
Ghost one-frame wrong direction on house exit
Full Stack Engineer
Done
US-7.01: Neon wall edge glow layer (visible 3D-depth)
UI/UX & Gameplay
Done
Ghosts jump to exit then snap back (Unity Start() ordering race) — DeferredGhostUnfreeze 2-frame fix
Full Stack Engineer
Done
Music repeats same track every game — no-repeat shuffle + always-restart PlayBGM
Full Stack Engineer
Done

🧪 QA & Test Coverage

EditMode: MazeLayout, ClassicMazeData, PelletManager, GhostNavigation, PlayerState, EliminationTracker, TargetingSystem, AttackSystem, AudioManager
QA Engineer
Done
PlayMode: GridMover, GhostStateMachine, PolishSystems, AudioManager, HudAndShake
QA Engineer
Done
LocalMultiPlayerLoopTests.cs — 14 EditMode tests
QA Engineer
Done
VisualEffectsTests.cs — 7 PlayMode
QA Engineer
Done
VisualPolishTests.cs — 11 PlayMode
QA Engineer
Done
VisualFeaturesTests.cs — 30 EditMode
QA Engineer
Done
GhostReleaseConfigTests.cs — 6 EditMode
QA Engineer
Done
GhostStateMachineTests.cs — 14 PlayMode
QA Engineer
Done
OnlineLobbyDefaultsTests.cs — 11 EditMode
QA Engineer
Done
OnlineMultiplayerTests.cs — 20 EditMode
QA Engineer
Done
PowerPelletEffectsTests.cs — 7 PlayMode
QA Engineer
Done
PacmanControllerTests.cs — 4 PlayMode
QA Engineer
Done

✨ Visual Polish & Effects

PacmanDeathEffect — procedural wedge shards
UI/UX & Gameplay
Done
PelletEatEffect — filled-disc pop / ring burst
UI/UX & Gameplay
Done
PowerActivateEffect — two-ring + 8 radial shards
UI/UX & Gameplay
Done
MazeGlowController — wall pulse + vignettes + dominant colour
UI/UX & Gameplay
Done
PlayerBorderFX — L-shaped corner brackets
UI/UX & Gameplay
Done
ComboScorePopup + ring shockwave
UI/UX & Gameplay
Done
GhostTrailEffect — 16-clone afterimage pool
UI/UX & Gameplay
Done
PelletTwinkleEffect — oscillation + orbit
UI/UX & Gameplay
Done
LeaderDisplay — crown + threat aura
UI/UX & Gameplay
Done
Flashy lobby text animations
UI/UX & Gameplay
Done
Pac-Man chomp animation + directional rotation
UI/UX & Gameplay
Done
Procedural Audio — SFX + 10 Music Tracks
Full Stack Engineer
Done
Victory Fanfare — celebration music at game-over
Full Stack Engineer
Done

⚡ Performance Optimizations

Performance pass v1 — zero-alloc trails, cached renderers, sqrMagnitude, precomputed trig
Full Stack Engineer
Done
Performance pass v2 — CachedMover, CachedSpriteRenderer, _lastAppliedFacing
Full Stack Engineer
Done