mat.yaml
Versions
Every version of this package its world published, newest first by when it first appeared. A version published again later keeps its place.
Comparing from 01M1TWF5YGJWP4HVAHF1D8AVKP. Pick the version to compare it with. Cancel
set: the room is lit, the blocks are wood, and every hit throws dust Grade off the UI. The playroom_grade PostProcess declares layer = "scene", so the pass runs before the interface is composited. Its twelve-tap bloom was printing a displaced copy of every cream glyph over the 0.90 threshold, which read as a second misregistered heading on every card, and its tilt-shift band was defocusing the top and bottom of each one. The scene is still graded. The sun comes over the player's shoulder. It travelled -Z, towards the camera, so every block face the player saw was backlit and the fill did the lighting on its own; that is what read as pale plastic. It now travels (-0.78, -0.42, 0.46) and rakes the camera-facing faces, with the fill warmed to room bounce and lifted to 0.28, the key dropped from 3.7 to 2.6 (at 3.7 the newly-lit faces sat at 0.85 luminance and had no colour left in them), the sky IBL down to 0.20 and the grade's saturation from 0.26 to 0.15 now the colour comes from the light. The window opening runs from z = -40 rather than -22 to fit the new angle: the key crosses the +X wall 14.7 m before the point it lands on, and at the old opening the whole launcher end of the table stood in the wall's shadow. The ten block materials move to playroom_paint, the shader the table already wears, at grain_scale 3.2 / grain_strength 0.42 / wear 0.32 / clearcoat 0.22 and reflectance down from 0.35 to 0.12. The painted_wood texture they used to bind is white to within four code values, so the albedo pass showed ten flat colours; it now shows grain and edge wear (albedo spread 115 -> 125). impacts.module is new: one subscriber on the game's bus that plays the wood impact effect on impact and blockDisplaced, a bigger burst plus a shockwave ring on towerToppled, and a puff where a block leaves the table. Plays are rate-limited by a token bucket, and a burst the bucket refuses is folded into the next play's count rather than dropped, so a collapsing tower is a handful of large clouds and not fifty small ones. The lamp shade and the window get playroom_glow, a new surface with a gradient down world Y and a fresnel term, so the shade reads as lit paper rather than a flat white triangle and the window as sky rather than a hole. The four picture frames get playroom_crayon, also new: a child's drawing of the aeroplane and a child's tower of blocks, in wax crayon on sugar paper. box() is now shape() with the cube already chosen. Model.mobility = "static" was tried on the 58 props and taken back out: three 20-second windows read mesh_transform_compose at 0.82 ms with no flag, 0.80 on auto and 0.83 on static. Set gains onModuleReload so a sibling's edit to game.game does not leave the effects silently unsubscribed.
01M1TWF5YGJWP4HVAHF1D8AVKPc28394b1fdBrowse filesPickedcity: six block archetypes, joints sized from the load they carry, and the score for knocking them down The skyline is a plan before it is bodies. game.city.blocks lays out six archetypes - a tapering skyscraper, a banded office slab, a water tower on four legs, a thin antenna mast, a three-span bridge and a gate with a lintel - across four streets from a seed, and hands back block specs and joint edges. It spawns nothing and reads no entity, so a layout can be counted and validated without a simulation. Sites are shares of the table's own half-width, and the far street keeps clear of the table edge so a toppled block has somewhere to fall. Every structure is a TREE of fixed joints in which each block holds at most one. An entity carries one Joint component and a second silently replaces the first, so that rule is what makes Physics.jointReaction(blockId) answer for a known joint - which is what lets the thresholds be measured. Blocks.validate checks it and the component refuses to build a structure that fails. Joints are created with no threshold. The city then stands on its own until every few blocks read below Rules.PHYS.settleSpeed, the resting load is sampled over 15 frames, and each joint is armed at breakForce = measured force x Rules.PHYS.jointBreakMargin breakTorque = measured torque x Rules.PHYS.jointBreakMargin floored so a joint under nothing is not released by its own settling. Nothing is guessed. Sizing the ANGULAR threshold from the measured torque rather than from the linear one is what stopped the bridge and the gate collapsing on their own: a cantilevered deck rests under 180 Nm of angular reaction and almost no force, so a threshold derived from the force alone released on the first step. Home is re-read at arming, so settling is never scored as damage, and a structure that failed to stand up is reported instead of counted as the player's work. Every frame a block that moved is clamped to Rules.PHYS.debrisMaxSpeed and debrisMaxSpin - the governor that stands in for CCD, which is off on every body here - and scored: displaced by mass, off the table, and a structure past toppleFraction going through Game.recordTopple for the chain. A block reaching the playroom floor is despawned a couple per frame so a wave of debris does not rebuild the solver's islands at once. Painted wood: ten materials over one generated grain texture, each structure turned off the grid and each free-standing stack given a per-block twist, so a tower reads hand-stacked. A block's yaw is why the joint anchors are rotated into each body's own frame before they are handed over. Verified in play at 1080x1440: 17 structures, 143 blocks, 126 joints, all standing and nothing displaced after a rebuild. A boosted launch down the middle lane toppled 8 towers with the chain reaching 8 and the multiplier 4.5, for 35220. A repeatable 40 kg strike topples 2-4 and the census reads back the standing count the capture shows. The antenna mast clipped at 12.6 m keeps blocks 1-8 within 0.02 m of where they were built and loses only the top four; the same mass into a skyscraper's base shoves its bottom four storeys 4.8 m along the table still stacked at their own heights. Physics step median 0.16 ms across every run, 0.53 ms peak over a full collapse on a quiet engine, ccdMs 0 throughout, and no loose body above the debris clamp once everything rests.
01M1SFEZ6311A3A6Q6D6EM69F661d1de18e8Browse filesCompare with this version