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.
flight: wind the key — a held Launch, the called shot, and a wreck that waits for the city Launch is HELD now. Each Rules.LAUNCH.windSeconds of hold is one wind of the key, the last wind gets a window of its own, past it a red zone of overwindSeconds throws overwound (faster, five seconds of boost fuel, and an airframe that breaks overwindDamage times as easily), and past THAT the spring slips and the throw is a dud. The modelled key on the toy's back turns a full turn per wind, trembles in the red zone and spins back when the spring goes. Boost is what the wind bought: boostFuel is seconds of thrust, it drains only while Boost is thrusting, and an empty tank is a dead throttle. On the launcher Boost and Dive step the called shot forward and back through the landmarks City:landmarks() reports still standing, with 'no call' as one of the stops — no new control on any device. The round now ends when the airframe has settled AND City:atRest() agrees, or after a further restCityGrace; measured last-moving-to-wreck fell from ~1.8 s to 1.20 / 1.22 s on a settled city. The permanent no-op Game.tickChain call is gone, telemetry publishes elevation / winds / windCharge / winding / overwound / boostFuel / launchSpeed every frame, and onModuleReload re-subscribes the bus. Verified on keyboard, gamepad and touch: holds of 0.8 / 1.35 / 1.9 s read 1 / 2 / 3 winds and throw at 9 / 12 / 15 m/s (peaks 8.3 / 10.9 / 13.9), a 2.4 s hold releases overwound at 16 with boostFuel 5.0, a 3.5 s hold is a 6 m/s dud; the called ring reads none/tower/span/tank on all three; a called SPAN topple pays 500 x tier x 2 x 2 = 4000; Escape on the launcher pauses; boosted peak 19.11 m/s under the 20 cap with no CCD anywhere. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0139MdCaDTnP2jpG8zgk5N2N
01M1TW9SWANCXEPSWWTH6FTR5Vb1f23f4fdcBrowse filesCompare with previousCompare from herefix: the playroom keeps its paint, the wreck has something to look at, and the Kid's words fit on one card - Set re-asserts the table's painted-wood material rather than assigning it once, so a hot reload's outgoing onDestroy can no longer leave the biggest surface in the game wearing plain white plastic. - The wreck beat stages its station on the table's own footprint: a toy that goes over the edge keeps falling, and the resolution shot was framing a bare wall. It now holds the edge it went over, with the table and city behind. - The caption pill stretches its children instead of centring them, so a wrapping line has a width to measure against. It was breaking one word per line and growing down the whole screen. - Star thresholds re-cut from played sessions (20k / 55k / 100k). At the old 3k / 8k / 15k every session finished on three stars and the rating carried no signal. - Game.plane() falls back to the live player registry, so a reload that loses the entrypoint's one-time handover does not leave every reader answering nil. - Plane767 holds the builtin walking map live so its own suppression covers it: the touch overlay was drawing that map's Crouch / Jump / Sprint buttons and its look-drag zone over the table. - A player-facing README at design/README.md.
01M1SJ2B2F9268XJ8AK6WZY29836f0b4e8b8Browse filesCompare with previousCompare from hereflight: the toy 767 flies, breaks and answers every device The airframe slice, end to end. Launcher: steer x trims the heading, steer y trims the launch elevation, and Launch throws the toy along the nose it is pointing. Every sign was read back off the running airframe rather than assumed. Flight: a force-driven arcade model. The nose follows the stick, the velocity is pulled onto the nose over followTime, the wings hand back the share of gravity they carry, Boost adds speed and Dive spoils the lift. The speed the model asks for is clamped to the Rules.PHYS envelope before a Newton is spent, and anything above the cap is taken back the same frame. Bounded authority, so a block still knocks the toy off its line. Once it has been scraping the table for a moment the model stands down and lets friction end the round. Damage: contacts past impactThreshold raise impact on the bus and fill a damage pool; each whole point sheds the part the hit landed nearest, hiding the art slice's child and dropping a bounded loose copy with partLost. A missing wing costs lift, authority, and rolls the toy toward the hole; a missing engine costs half the thrust; a missing tail costs the pitch damper. Loose parts are speed- and spin-clamped every frame and culled below the playroom floor. Pause freezes this airframe where it hangs and hands its speed back on resume. Controls carry keyboard, gamepad and touch on every action: Boost moved to the right trigger, the stick got a radial deadzone and smoothing, and the touch column reads Launch (large) / Boost / Dive / Menu down the right edge. The map still suppresses the engine's walking scheme. Verified in play at 1080x1440, with each input family alone: aim, launch, climb, bank, boost, dive and pause on keyboard, on a simulated pad and on the on-screen controls; a run into the city shed a wing and an engine and the toy visibly spiralled after; Physics.bodyState never read past Rules.PHYS.planeBoostSpeed over a boosted run; every round ended in wreck with the next plane back on the launcher; 150 rigid bodies, none with ccd = true. --- playroom-set: the window is lit and the table is not in its shadow Model carries a castsShadows field. It is not in the Model component README's list of public fields, and reading the render-layer documentation - which says a layer hides an entity from a camera 'while it still exists for lighting, shadows and physics' - had settled the question the other way. So the emissive pane outside the window had been removed: it stands between the low sun and the only opening in the room, and it shadowed the whole table, opaque or transparent. With castsShadows = false on that one mesh the window is the brightest thing in the game again and the sun still rakes the full length of the table. The sky itself drops to a dim warm fill, which is what it should have been all along - its image-based light reaches an enclosed room as though the room were not there, so it was the sky's brightness, not the window's, that was flooding every painted surface. Luma spread at the launcher station goes from 75 to 113, with nothing crushed and nothing clipped. The grade still costs 0.16 ms of GPU per frame.
01M1SF9EJQTJBV4BC67JQKKFJC24e9b2ab0aBrowse filesCompare with previousCompare from hereplan: BLOCKBUSTER 767 — spec, scene, rules/game modules, slice skeletons
01M1SD2T241XY0MQ8X1EAT31877b745c69c7Browse filesCompare from here