bookquoy/README.md
jing 53ad2030af BOOKQUOY v0.1 — Paddo, three disciplines, letters, gaps, 2:00 sesh
Level 01: Paddington Skatepark from the council plan + park guides —
heightAt(x,z) single-source terrain, grindable rails/ledges, named gaps,
B-O-O-K-Q-U-O-Y letters with the BOOKQUOYORK callback.

SKATE / BMX / BLADES (blades cop thrown rubbish, as is tradition).
character_kit two-rig banks: physics owns the root, clips are cosmetic.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 19:13:13 +10:00

3.3 KiB

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 functionheightAt(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

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?)