init.luau
Versions
Every version of this package its world published, newest first by when it first appeared. A version published again later keeps its place.
the-garden: the garden takes light, and there are six of them lib.hedge_leaf writes a real PBR G-buffer, so pass:albedo and pass:final differ completely on every hedge, topiary, orchard and treeline surface and pass:roughness reports a value instead of magenta. Every foliage material is authored against a lit surface rather than an emitter, and the same hedge run with the sun behind it is visibly darker than with the sun on it. lib.garden_turf is new: the lawn is a lit surface whose mown bands wander instead of meeting along a ruler, with a clump register for the sward, a blade register so it does not go flat close up, and a wear register for the ground either side of the piste. Ten lawn materials moved onto it, each carrying its own roller width - 1.65m and almost no wander for the Major's parade ground, 7.5m and 3m of wander for a field mown twice a year. The stripe slabs and the stripe style fields are gone with it. Three more grounds and three more turnouts: Sixpenny Nursery, the Old Rectory and Gallows Piece, with Mr Quilty, the Revd. Brasenose and Young Tibb. Mrs Pettifer is a bottle-green bell under a wide pale brim now, because straw over straw against a player in whites is one figure and not two. The counter-fill is removed. A second directional light contributes nothing to the shaded result - the same frame at fill 0.0 and fill 8.0 is pixel-identical, filed as #8139 - so the shade side was always ambient alone, and the rig says so now: one key and one hemisphere, five moods re-solved on it, and the shadow re-arm hack that existed only to survive the second light went with it. The treeline stands at 44m instead of 31m in eleven irregular crowns, because a 9m crown at 31m is twenty degrees of backdrop before anything in the game is drawn. GardenDressing's repair loop runs twice a second instead of five times: 0.07ms a frame against 0.52ms.
01KZ372NV7K3SCZQYRDG91ZSWR46ea9ea9ddBrowse filesCompare with previousCompare from hereplaytest r2: close the triangle, de-fizz the garden, make the neighbours' grounds reachable
01KZ26GP45D1BW7W7Y4SR1HKF45f0d6bdbc5Browse filesCompare with previousCompare from herecard-and-ceremony: edge-anchored shell, a verdict that shows the board, and the docket --- the-fight: the guard answers from its first frame, and a post is worth what the ground is The lunge stops being the one button that solves the game, and the bout gets a length that was chosen rather than inherited. - resolveTouch treats a parry in windup exactly as one in active. A guard that only worked once it had finished rising lost to any attack thrown from further out than the wind-up is long, so a correct read lost to a committed attack - the one outcome the triangle exists to prevent. - The lunge is marked recoil: whatever of its 1.30 m advance it covered, it gives back over its own recovery, travelling backwards and unable to answer. It buys reach; it no longer buys position. - whiff and parried debts are per commitment rather than one constant, so the price scales with what was bought: a lunge turned aside costs 1.20 s. A guard that turned nothing aside is an opening of its own, at 0.30 s. - postDrive replaces the flat POST_STEP. Fresh lawn gives, the rooted feet by a hedge do not, ground already conceded holds somebody else's posts, and every post driven breaks the ground further. Rooted ground stops a garden falling to a short run of luck; conceded ground stops two even fencers walking the line back and forth all afternoon. - duel.STYLES gives the three neighbours three manners of fencing rather than one difficulty float: Mrs Pettifer stands off and waits, Major Wickham plays the triangle's answer to a repeated stroke before it is thrown, Lady Ashcombe fences hardest with her own hedge behind her. - A neighbour waits for the invitation. An opponent who offers nothing is indulged for as long as that neighbour's form requires, so passivity is still punished but no longer instantly.
01KZ21RF98DFWZPY6AK6V0FZB8adffdc9f52Browse filesCompare with previousCompare from herethe-fight: ship fxQueue, matchClock, neighbour, neighbourKey The four fields the other sections are blocked on, ahead of the tuning. - fxQueue is the lossless read of the frozen event vocabulary: DuelMatch empties it at the top of its own update, before anything that reads it, so a frame's whole list survives. The touch and the post it fires in the same frame both arrive, which is what the one-slot bus drops. - matchClock runs from the bout's first allez and stops at the verdict. - neighbour / neighbourKey / FencerAI.style are one identity written three ways. Writing any of index, slug or skill settles the other two off the roster in duel.module, so a garden, a turnout and a verdict can name the same person without guessing.
01KZ20353S4W4FRGVY9FXEE2NX82609e7f7eBrowse filesCompare with previousCompare from hereduel-depth: four commitments with measure bands, a lunge, a riposte worth two posts, whiff punish, clash, and a rival that keeps a book
01KZ1S6THDWYMMR8GJSXN9FSSA7c7758c3ebBrowse filesCompare with previousCompare from herebase: playable loop — the Hedgerow Assizes fence duel end to end Scene, both fencers, controls, camera, core loop and win/lose. Placeholder primitives and untuned numbers throughout. - duel.module — the rules in one file: ground plan, frame data for thrust / sweep / parry, the triangle (resolveTouch), and the placeholder palette. - Fencer.component — one combatant: builds its own primitive body, footwork locked to the piste, windup/active/recover state machine. The panel's pose per phase is the tell. role=player reads input; role=rival is driven by FencerAI through the same methods. - FencerAI.component — the neighbour: closes the measure, reads a wind-up after a reaction delay it cannot beat on a thrust, holds guard, takes its riposte. - DuelMatch.component — the umpire: builds the garden and the boundary fence, spawns the rival, resolves exchanges, plants a post, drives the line into the loser's garden, runs the salute, calls the match at either hedge. - DuelHud.component — the umpire's card. - PisteCamera.component — the locked side-on broadcast view, on the PlayerPrototype's CameraRig. - fencing_controls.inputMap — A/D footwork on the canonical move axis, J thrust, K sweep, L/Space parry, with touch buttons synthesised. The fence runs ALONG the piste and its leading post IS the property line, so the health bar is a physical fence growing across the lawn and the won ground brightens behind it. Validated in a running engine: two full matches to a player win driven with synthetic input, both terminal branches (player and rival) reached, parry into riposte into touch observed in play, clear-and-reload rebuilds the whole arena, scene.json holds exactly 11 entities, zero component errors. --- docs: describe the fencing_controls input map so the world is publishable
01KZ1K4VMB9V8B59ABE4M9XW0Zeb84fe3bdcBrowse filesCompare from here