# BOOKQUOY — a brisbane sesh Late nights in the park in Moorooka, someone yells **"BOOKQUOY!"** into the dark. Friend or foe? A friend calls back **"BOOKQUOYORK!"** — and everything's sweet. That's the game. Skate the parks of Brisbane, land tricks, hit the gaps, and collect **B·O·O·K·Q·U·O·Y** — light all eight letters and the game calls back. ## Level 01: PADDO Paddington Skatepark, 113 Caxton St (Neal Macrossan Park, opposite Suncorp) — Brisbane's premier street park, stylised from the council upgrade plan and local park guides: the looping island layout around the Moreton Bay figs, the fast **green concrete**, the 5ft square bowl in the west, the 6ft lumpy quarter at the south end, escalating transitions on the walls, and the street plaza — funbox with rail combo, tiered down-ledges, stairset with hubbas, long metal-capped ledge, P-rail, moguls with a rainbow rail, and the spine. Every surface rides on **one function** — `heightAt(x,z)` in `js/level.js` is the single source of truth for the visual mesh *and* the collision, so what you see is what you skate. ## Three disciplines | | | |---|---| | **1 SKATE** | full trick bank: flips, varials, tre/laser, grinds on every rail and ledge | | **2 BMX** | bunnyhop, barspin, double barspin, tailwhip, X-up | | **3 BLADES** | same park, one catch: **locals throw rubbish at you.** Tradition. Dodge the cans or eat pavement to a chorus of "FRUIT BOOTS!!" | ## Controls ``` W / ↑ push SPACE ollie / bunnyhop / hop off a grind A D / ← → steer S / ↓ brake J kickflip | barspin K heelflip | tailwhip L pop shove | x-up (hold ↑ or ↓ with J/K/L for varials + specials) T tre flip Y laser H hardflip N impossible F fs shove R reset to the tennis-court entrance ENTER start / run it back ``` Land on rails and ledges to grind. Chain tricks before the wheels settle to multiply. 2:00 on the clock. Named gaps (THE STAIR GAP, CAXTON CARVE, BOWL HIP…) pay 300 a pop. ## Run it ```bash python3 serve.py 8141 # no-cache dev server open http://localhost:8141 ``` ## How it's built - **three.js**, no engine, no bundler — plain ES modules. - Characters + animation from the GODVERSE `character_kit`: the two-rig system (rider rig + independently-animated board/bike rig), contact-solved with IK so feet sit on the deck and hands hold the grips. Tricks are **data** (`js/tricks.js`) — clip name + score — the design lesson taken from decompiling THUG's QB script tables. - Physics owns the root; clips are cosmetic and in-place (the other THPS lesson). - Trick clips carry their own pop, so the controller treats clip-time as air-time and hands over to projectile physics only for drops. Assets are original, license-clean, generated by the character_kit authoring tools. Character: "raver" (Mixamo base, converted + normalized on m3ultra). ## Testing hooks `window.__step(seconds)` advances the sim deterministically (the embedded browser pane throttles rAF when hidden); `window.__tp(x, z, heading)` places the player; both exist for headless verification and are harmless in play. ## Roadmap - More Brisbane parks: Fairfield bowl? Bracken Ridge? Mt Gravatt snake run? - Manuals + lip tricks, bail balance meter, session goals ("50-50 the Long Metal Ledge") - BOOKQUOYORK multiplayer call-and-response (two players, one park?)