In BroomBroom, players pilot an agile witch mounted on a broomstick thrust into perilous, unbounded airspace tracked by accelerating homing fireballs. Survival requires tight, continuous turning circles and split-second spatial judgment to weave between intersecting missile trajectories. By exploiting homing pursuit dynamics, players bait interceptors into head-on mid-air clashes while harvesting fleeting stars and potion power-ups under escalating barrage pressure.

Built as a signature showcase of CubeStaX's high-speed 2D arcade kinematics and low-overhead WebGL rendering, BroomBroom highlights responsive multi-touch controls, atomic physics collision handshakes, and resilient client-side architecture.


At accelerated flight velocities (speed boosts or tight turning loops), discrete circle colliders bypassed small potion and star triggers between physics sub-steps, causing frustrating missed pickups despite visual overlap. We engineered a dual-phase detection pipeline in PowerUpCollectible.cs combining OnTriggerEnter2D/OnTriggerStay2D physics with analytical Euclidean proximity checks (Vector2.Distance <= collectionRadius) and dynamic sprite collider normalization to 0.85 world units.
Projecting off-screen fireballs and collectibles onto screen-edge badges caused jarring visual jitter and rotational snapping near viewport borders, compounded by sub-pixel float drift. We implemented MissileIndicatorManager.cs running in LateUpdate with [DefaultExecutionOrder(100)] after CameraFollow.cs, utilizing edge-hysteresis clamping and critically damped exponential smoothing (smoothTrackingSpeed = 22f).
When two homing fireballs collided head-on, simultaneous OnTriggerEnter2D callbacks fired in the exact same physics tick, producing double-scoring race conditions or null-reference exceptions on destroyed particle hierarchies. We architected an atomic scoring handshake in MissileController.cs with a bidirectional boolean latch before dispatching to ScoreManager.cs, unparenting TrailRenderer components into autonomous lingering scene objects.
Serving Brotli-compressed WebGL builds (.br) on standard static servers caused MIME type rejections and decompression errors, while missing audio clips in development risked silent gameplay. We deployed custom server headers (.htaccess, web.config, and proxy mappings) for Brotli/WASM, and developed a procedural waveform synthesis engine inside AudioManager.cs that mathematically generates synthetic audio buffers at runtime.
Uncoupled Single-Scene Finite State Architecture: Coordinated by GameManager.cs using an explicit state machine (Ready, Playing, Paused, GameOver, Reviving), auto-resolution dependency hooks, and decoupled C# action delegates for PlayFab, Google Mobile Ads, and IAP transactions with zero scene-reload overhead.
Zero-Allocation Runtime Collection & Particle Decoupling: Memory thrashing is eliminated by pre-allocating reusable collections, caching transform lookups, and pooling UI indicator badges. The Universal Render Pipeline operates with a single unified sprite-lit batching pass, stripped mipmaps, and detached particle rendering maintaining single-digit draw calls.
Precision 2D Flight Kinematics & Evasion Loop: Engineered high-agility turning curves baiting homing missiles into mutual collisions, balanced with temporary shield absorbs, nitro star speedups, and Day/Night parallax shifts.
Lightweight URP 2D Sprite-Lit Shaders: Handcrafted Day and Night themes with multi-layered parallax backgrounds, floating castles, and luminous particle sparklers tuned for ultra-low battery consumption.


Structured milestone sprints from core game loop validation to production-ready multi-platform release.
Engineered smooth 2D aircraft turning physics, virtual joystick / touch steerer abstractions, and Euclidean proximity triggers.
Built accelerating fireball pursuit logic and atomic mutual destruction handshakes preventing double-score race conditions.
Developed jitter-free LateUpdate screen-edge indicator tracking with hysteresis, paired with dual-theme parallax sky layers.
Configured WebGL server compression headers, synthesized procedural runtime audio fallbacks, and integrated PlayFab & AdMob.
Locked 60 FPS across low-end Android hardware and WebGL browser instances with zero thermal throttling.
Completely eliminated per-frame memory allocations during evasion loops via collection pre-allocation and pooling.
Zero missed pickups during speed-boost maneuvers using dual-phase Euclidean proximity verification.
Achieved instantaneous reset cycles via single-scene finite state management.