com um clique
tinyworld-opacity-torch
// Use when changing ghost boards, multiplayer preview boards, panning, ghost visibility, jigsaw reveal, or any visibility behavior around the active Tiny World board.
// Use when changing ghost boards, multiplayer preview boards, panning, ghost visibility, jigsaw reveal, or any visibility behavior around the active Tiny World board.
Use when changing Tiny World Builder selection placement, freehand drawing, asset clipboard, cut/copy/paste/duplicate, saved templates, or Stamps panel navigation.
Use when changing Tiny World Builder renderer setup, shadows, smoke, voxel clouds, ghost board render cost, frame loop, or GPU performance.
Use when changing Tiny World Builder API, webhook, SSE, MCP, plugin, or automation examples.
Use when changing the home island layout, edge dressing, undersides, draped banners (autoincentive sponsor flag), plane/crop-duster flight paths, banner streamers, or which side of the island is "front".
Use when adding or changing persisted user state — settings defaults, audio, camera/orbit, panel positions, feature flags, and the in-app "Save Defaults" pipeline that snapshots localStorage into tinyworld-defaults.json. Also covers the inline-script regex gotcha that has burned us twice.
Use when changing Tiny World Builder Settings modal tabs, panels, controls, rendering/world/material/crowd/AI settings, or settings accessibility.
| name | tinyworld-opacity-torch |
| description | Use when changing ghost boards, multiplayer preview boards, panning, ghost visibility, jigsaw reveal, or any visibility behavior around the active Tiny World board. |
The opacity torch is gone. The home board is always fully rendered; Preview cells reveal one-by-one as the camera pans into them, and stay revealed forever after that (a breadcrumb trail behind the user).
Mental model:
GRID, default 8).GRID x GRID region is always at full opacity, full
color, full scale — never fades, never pops.target.x/z (renderVisibleSize wide). Once revealed, the cell is
sticky: root.userData.revealed = true and it stays revealed for
the rest of the session. Its final display opacity is controlled by the
user-facing Preview opacity / floors / objects sliders.Reveal rules:
opacityAtWorldPosition(x, z) returns:
1 inside the home GRID square,1 inside the visible window around the camera target,0 otherwise.revealOpacityFor(root) wraps opacityAtWorldPosition and adds
stickiness. Once it sees a positive opacity for a root it sets
userData.revealed = true and returns 1 from then on. Per-frame
update loops (updateGhostRenderBubble, updateHomeBoardFade) call
this instead of opacityAtWorldPosition directly so revealed cells
don't disappear when the camera moves away.updateHomeBoardFade short-circuits in-grid cells to opacity 1 —
they never go through the reveal path.tickOpacityTransitions(dt) eases each root's currentOpacity toward
targetOpacity at rate dt * 20 for a snappy snap-in.0.6 + 0.4 * currentOpacity, so revealed tiles grow from 60 % to
full size in <200 ms. At opacity 1 the scale is exactly 1 — static
home tiles and previously-revealed cells stay untouched.userData.landing (drop-in animator) takes priority — skip the scale
pop while landing.desaturateMaterial() is now a no-op; all Preview / out-of-bounds tiles
render in full color.Interaction rules:
pickTile.userData.gx/gz on their tile/object
roots in a way that lets them be edited.The home board has a thin dark ground-line border (see
buildHomeBorder() in the home board border section) so the user can
always see where the editable region ends, regardless of how much of
the Preview world has been revealed around it.
GRID on first load and whenever
board size changes: small boards can preview farther; large boards keep
neighbour preload distance/window tighter for performance. Users can still
override those settings from Settings → World.isLandscapeMeshActive() engine. If the user leaves terrain/landscape mode,
normal Autoexpand should immediately restore classic Preview ghost boards.renderBudgetForGrid() instead.Validation:
GRID x GRID board never fades and never scale-pops.root.visible = false.pickTile() over a Preview board should still return null.When landscapeMeshMode is active (procedural Canyon landscape style):
GRID size) to present a clean, sliced diorama look.hasUserPanned is set to true, and the landscape clipping radius expands to renderVisibleSize within the 20x20 home-board cap and centers on the camera target. This allows continuous terrain chunks to generate and "paint in" dynamically as the user explores the surrounding landscape, while the 8x8 home grid remains centered and intact.hasUserPanned is reset to false, restoring the clean sliced diorama look centered on 0, 0 until the user starts panning again.pixelState.normalMaterial.clippingPlanes to prevent out-of-bounds clipped mesh segments from rendering outline "ghosts".