GOSHAWK BOOKS
A secondhand bookshop you can walk into, on a street the hawks work over.
Step in through the door and the shop is a shop: ten oak cases packed with books that were placed by rule rather than by hand — a seeded run decides what stands on every shelf, so the stock is the same library every time the scene loads, and changing the number of cases or how full a shelf is reads as one edit. There is a counter with a brass till, a display table, a reading nook with a rug and a floor lamp wired warm, and a big window that looks out on the street.
Look up. Five hawks ride the air over the road — a pair sharing a thermal, one skimming the pavement, one high over the far rooftops, and one working a short circuit past the shopfront — and they beat their wings. The stroke is eight baked poses of the same bird, up through the power stroke and back, played a pose at a time while each bird banks into its turn. The circles drift, so no two circuits are the same, and the birds fly while you are still building the world.
Cross-play
Everyone arrives as themselves, on whatever they are holding — keyboard and mouse, a gamepad, or a phone. The control scheme is the engine's own, and every control on it carries all three device classes at once, so there is nothing to press first and no version of the shop that only works on a desktop. The on-screen thumbstick, drag-to-look and buttons appear for touch; the sticks and triggers read on a pad; WASD and the mouse read on a desk. Verified by driving all three from inside the running world, and in play: walking, jumping, and the on-screen stick each move the body.
What is here
scenes/main.scene | the shop, written as code in build.luau — walls, cases, stock, the street, the player, the flock |
hawkmesh.module | the hawk, built as numbers: lofts for the body and head, plates for the wings and the fanned rufous tail, blades for the five slotted primaries at each wingtip. flap swings both wings about the shoulder, and FLAP_POSES is one beat |
HawkFlight.component | the path a hawk rides — a circle, banked, drifting |
HawkFlap.component | the wing beat: its children are the pose meshes, and it shows one at a time |
bookshop/bake_hawk.luau | bakes the glide and all eight beat poses into hawk_soaring.mesh and hawk_flap_1..8 |
bookshop/vendor/eaglemesh.module | the wing/plate/blade builders, installed from the world First Light: Goura (MIT) |
bookshop/art/oak.texture | floorboard and shelf timber |
Do it differently
The shop is a rule, not a pile of placements. In
scenes/main.scene/build.luau:
shelfUnit(...)builds a case and fills it. Changeboards, the gap probability or the run lengths and every case follows.bookStack(...)is what a table, a counter or the window ledge holds.hawkSpecsis the flock: one line per bird — its circle's centre and radius, its period, its bank, and the period and phase of its beat.hawkmesh.FLAP_POSESandhawkmesh.FLAP_DEGREESare the stroke: retune them and re-run the bake to give every bird in the world a different wing.
Comments · 0
Open discussion, no rating attached. Ask questions, swap notes, follow threads.