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.
contact-and-ceremony: one frame of a touch says who struck whom, and the umpire stops repeating himself The broadcast holds its side-on framing for every frame the two are fencing - contactPct is 0 through all of state == fence and fencerFramePct never leaves 39.28781 there - and takes the umpire's own stop to make contact readable. For the length of that stop the station swings 19 deg off the piste axis toward the fencer who took the touch, cranes 0.22 m, closes to a distance solved from the pair's own span, and holds 0.42 s past the stop. Every dial is a fraction or an offset of the shot's own dials, because scene.json carries an authored PisteCamera prop block and a station fixed in metres is a different shot in every scene that loads. Over 120 samples of live play: fencerFramePct mean 40.575 (min 39.288) and lawnBelowPct mean 14.685, against 39.29 / 15.80. A landed stroke leaves the panel's whitewash in the air for the length of the hold, and the shape it leaves is which stroke it was: a thrust one level line, a lunge a long low one off the back foot, a sweep a falling quarter circle, a riposte the crossed guard and the answer out of it. It runs from the striker to the struck, so which way the blow went is in the picture. Beside it, contactHold pins recoil, spin, lean, overreach and jam at the values the blow gave them, because a reaction that decays in 0.3 s is gone inside one frame of this build. The post is driven rather than moved: the surveyor's cord walks from where the line stood to where it now runs, carrying a post held clear of the turf, and three mallet blows seat it flush with the boundary's own post. Fifteen new umpire calls through a new Fx.call, which writes a call as a list of syllables rather than a stack of primitives. Each ceremony beat draws from its own bag, narrowed by the bout: the score only when it is level, the last post only when one post ends the assize, arret and touche only on a ground that stands on form. Over one full bout of 67 lines the largest share is 13.4 %. The bell counts one strike to open and three to close, both men breathe in the pause, and each of the six neighbours has their own throat. Measured: two KeyR-driven bouts to a verdict, engine.timeScale sampled 891 and 101 times, badRecovery 0 in both and max 1.0; busProduced - busTaken 0 on the second. DuelFx 0.60 -> 0.91 ms and PisteCamera 0.23 -> 0.30 ms, medians of eight samples each under the same load.
01KZ376G8BDW7Z2DC89DMEKXCG65f522211cBrowse filesCompare with previousCompare from hereimpact-and-audio: four commitments that land differently, a lossless bus, and a lawn with places in it The outline flash drew as an orange rectangle in the grass because a fencer is eighteen separate boxes and every one of them was rimmed. A per-model rim on a part that stands ON the lawn draws its rim IN the lawn, and the fence panel drew a rectangle in the air beside the man. The flash marks the body now, skipping what a fencer stands on and what they are holding, by name - a rig part's position and scale are rewritten every frame by fencer_body.pose, so a geometric gate answers differently depending on which frame you ask it. Over 12 seconds and five touches the only models that ever carried a rim were the eleven body parts; panel, shoes, stockings and legs never once. One PROFILE row per commitment drives recoil, spin, shove, hitstop, camera, dust and sound. Only a sweep turns the struck fencer off the line and lands on panel_crunch; only a lunge gives up three times the ground and tears a grit trail from the back foot to the contact; a thrust is a narrow plume and is over; a riposte rings. Which one landed is parsed out of lastExchange, so a fifth commitment gets the default weight and says so rather than being mis-sold. SHORT and CROWDED never reach the bus - the umpire writes their record and returns - so fx derives both. Their feedback is built from the opposite parts of the vocabulary from a touch on purpose: the reaction is on the attacker, there is no hitstop, no flash and no rim, and the shape left behind is a flat scuff disc lying on the piste. The reader drains fxQueue and counts fxSeq against what it took, so the difference is exactly what never arrived: 990 missed before this round, 0 over two clean bouts driven by real key presses. Twelve new synthesised clips give the lawn places. The player's orchard at the west end and the neighbour's walled end at the east crossfade on where the fight has got to; the bell hangs on the garden wall and the wall gives it back 0.40 s later; the umpire walks the piste and has a voice, built from a new formant primitive. Footfall knows the raked gravel of the piste from the spoil thrown out around a driven post. probe_tone is gone. Everything was tuned at a measured 104 ms frame, 9.6 fps, and every window is in real seconds so it survives the frame rate coming up. DuelFx costs 0.48 ms under driven play against 1.56 ms at the start of the round.
01KZ237JMT1NXMXDT8MKW7G1REc26f4de9e0Browse filesCompare with previousCompare from herefeel-and-sound: impact, camera reactions, and a synthesised sound bed DuelFx turns the umpire's verdicts into something you feel: recoil, shove and an outline flash on the struck fencer, follow-through on the striker, a contact bloom, a turf puff when the post goes in, and a hitstop that always releases. PisteCamera now frames by extent rather than by separation, so both fencers and the boundary post stay in shot at the nearest distance that covers them. A fencer reads 38% of frame height at measure, up from 31%, and 22% in the worst case, up from 18%. fx.module carries the event source over the umpire's bus (with a derivation that recovers the events its one slot coalesces), the shared easing, and an offline synthesiser. Twelve soundClips under /source/audio are rendered by it from sines, noise and envelopes: the assize bell, panel on panel, the touch, gravel underfoot, a tell for each of the four commitments, the riposte ring, the post going in, a whiff, and the garden's own nine-second loop.
01KZ1QGA2Y8NEEY4ZSQ3H2MPAD38bd3231a1Browse filesCompare from here