# Pixel Broomstick Hoop Stadium

- Author: @vib3coded
- Card: Creator prompt
- Theme: 3D browser games
- Stack: Not rebuilt
- Interaction: Pointer
- Licence: Credited link (Shared publicly by the author; full text with credit, removed on request)
- Verified: not yet
- Original post: https://x.com/vib3coded/status/2118002792849723425

## Original prompt

```text
Build a single-file HTML5 game, "Skyhoop Cup": a pixel-art 3D broomstick hoop game (an original sport in the spirit of wizarding games; use no trademarked names or characters) on a magical floating voxel island. three.js r128 from cdnjs, everything inline, no assets, no build step required for the player.

LOOK
- Render to a low-res target (default 2 px art pixels, slider 1-6), then a post pass: depth-based outlines, snap to a fixed 90-colour OKLab palette, Bayer dither. Orthographic isometric camera placed 850 m from its target (far plane 1700) so the island is never clipped at low tilt. Sun shadow map. Day / dusk / night with a mystical palette (violet-blue day, pink-violet dusk, deep indigo starry night, readable silhouettes at night) and lanterns that light up after dusk.
- Island: slab of 2.4 m voxel columns, every cell included (no hole in the core), terraced rim, banded soil and slate, waterfall, floating rocks; slab material DoubleSide so no face is ever see-through from any camera angle. 2048 px painted ground: teal-emerald grass, flowers, stone plaza ring, paths, castle courtyard tiles, a moat strip in front of the castle gate, village streets, glasshouse beds, broom-works yard, observatory pad, lake with beach, stream. Glowing rune rings painted round the pitch and in the castle courtyard.
- Pitch: an oval 112 x 66 m, mowed stripes, centre circle, keeper zones, 5 turf looks (grass, meadow, sand, snow, moss). Three golden hoops on poles at each end (x = +-41 m) at heights 9, 13 and 17 m, ring radius 1.75 m; a low fence with pennants.
- Stadium: ring stands cut into 16 lift sectors, coloured seat bands, thousands of instanced spectators that cheer, sloped canopies in two colours, pennant masts; 8 stone spire towers with lanterns and flags.
- Castle (the showpiece, about 170 x 70 m, built from boxes, cylinders, cones and a custom gable prism, all merged by material after build):
  * a raised stone terrace with buttresses, blind arches, a central stair and lamp posts;
  * a great hall 76 m long with buttress piers topped by pinnacles, tall pointed stained-glass windows in six colours, a steep gabled roof with banded courses, dormers, a gold ridge crest and rose windows in the gable ends; three-bay wings on each side with their own gables in alternating roof colours;
  * a central clock tower: portal with portcullis glow, rose window, banners, three clock faces with hands that really turn, an octagonal belfry with eight lancet windows, a tall spire with lucarnes and gold bands, then a floating beacon orb with two counter-rotating rings, eight orbiting crystal shards and a tall additive light beam that pulses;
  * about 24 round towers of different heights: flared plinth, stone bands, spiralling lancet windows, balcony with battlements, a glazed lantern drum, a witch-hat roof (flared lower cone, steep upper cone, gold band, finial, flag) in purple, blue, red, teal and green; covered galleries between towers;
  * a curtain wall with battlements and buttresses, corner towers, a gatehouse with pointed portal, a stone bridge over the moat, lamp newels;
  * a courtyard with a fountain (glowing jet), flower beds, topiary and lamp posts.
  Stained glass is lit with the lights: dim by day, bright at dusk and night.
- More magic: crystals on stone plinths round the pitch that pulse and turn; ~160 floating candles bobbing in the air (a swirl above the castle spire, over the stands and lake); ~130 wandering wisps brighter after dusk; spark trails behind fast brooms; boats and floating lanterns on a lake; village, glasshouses, broom works with practice hoops, observatory dome; groves, floating islets, birds, chimney smoke.
- Doll's-house lift: every stand sector, tower, the castle and the observatory is its own lift group; groups whose bounding box the sight line from the camera target to the camera crosses below roof height rise 90 m and stop casting shadows (not when looking from the Island camera).

GAME
- Two teams of 7 (3 chasers, 2 beaters, keeper, seeker), 6 invented teams. Each flier is a box-built rider on a broom with robe, goggles and role gear (beater bat, keeper pads, seeker gold band), banking and pitching with its velocity.
- Simulation at a fixed 60 Hz in real 3D (ceiling 46 m): quaffle (held, passed, shot, loose), 2 bludgers (rogue homing balls that stun fliers and make them drop the quaffle; beaters knock them at rivals; 3 s cooldown after a hit), golden snitch (released after a delay, evasive darts and hovers; caught within 1.7 m with probability 0.1 + 0.2 x skill, 0.45 s cooldown). A goal is the quaffle crossing a ring plane inside the ring, worth 10; keeper saves by proximity and skill; tackles strip the quaffle; interceptions on passes.
- Formats: Quick (3:30 cap, snitch released at 80 s, worth 40), Standard (6:00, 150 s, 50), Long (9:00, 240 s, 60). Level at time means sudden death.
- AI per role: the chaser with the ball picks the hoop furthest from the keeper, shoots or passes under pressure; supporters spread ahead of the carrier; the nearest defender tackles; others mark. The keeper tracks the shot line between the hoops. Beaters pick the most dangerous bludger and aim at the carrier or the seeker. The seeker patrols high, hunts the snitch with prediction and dodges bludgers. Skills are randomised per flier and scaled by rival strength.
- Flow: fly-in, play, goal celebration, reset to formation with the keeper holding the quaffle, final (the snitch ends the match).
- The coach plays your chosen flier by default (autopilot on at start). Any flying key or touch takes over instantly; G or the corner button hands it back. Tab switches flier.

UI
- On the canvas: scoreboard (clock, scores, snitch status), captions, drop lines and ground rings showing the height of your flier, the quaffle and the snitch, tags, a status strip (role, speed, altitude, quaffle holder, snitch distance), a corner autopilot button.
- Panel: match length, teams, role, rival strength, new match, skip, speed, auto-next, pause; turf, weather (clear, windy with drift, rain, snow), light; coach tactic and commands (all in, fall back, hit seeker, free beaters); camera (Action, Follow, Pitch, Island), rotate, zoom, pixel size, toggles; team stats table, log. Magic purple, teal and gold UI theme.
- Keys: arrows/WASD fly relative to the screen, R climb, F dive, Shift boost, Space act, G handover, Tab switch, P pause, N new, K skip, X turf, O light, C weather, 1-4 cameras. Touch pad docked under the canvas on phones (d-pad with UP/DN, boost, action). Procedural WebAudio, no audio files.

QUALITY BAR
- Headless bot test: matches end by snitch in 80-130 s or by time, 3-7 goals per 200 s without the snitch, no stuck states, no console errors, no horizontal scroll on a phone, the camera never clips the island, no holes in the island from any camera angle.
- After the baked static merge the whole scene stays around 2,000 meshes; the castle alone about 100 meshes.
- No personal data, keys or paths in the source; the only external requests are the three.js script and Google Fonts.
```

Not rebuilt by 3dmotion yet. Credit stays with @vib3coded.

Prompt by @vib3coded (https://x.com/vib3coded/status/2118002792849723425) via 3dmotion.io/e/pixel-broomstick-hoop-stadium
