v2.0 2026-07-06

Engine: Three.js r185

  • The whole engine moved from Three.js r181 to r185 — faster TSL shader compilation, a native GodraysNode, and Forward+ clustered lighting so torch-dense builds with dozens of point lights stay smooth instead of paying for every light on every pixel.
  • The Three.js runtime now loads as five recursive onchain inscriptions (core, module, tsl, webgpu, and a combined addons bundle) — the renderer streams straight off Bitcoin with no bundled copy. The addons bundle also carries a full kit of new post-processing nodes for future updates.

Water & Weather

  • HQ water surface. Real wave motion (5-band Gerstner), depth-based color (Beer-Lambert absorption), sun specular and glint, forward scatter, and crest foam. Ripples react to the latest block's transaction count — glassy on quiet blocks, choppy when the chain is busy. Toggle HQ / STD in the postfx menu (STD is the lighter fallback).
  • Underwater caustics. Dancing light patterns play across the seabed under open water, confined to actual submerged surfaces.
  • Shoreline foam. Blocks at the water's edge grow a foam fringe that fades from the waterline into the block, only on the water-facing side.
  • Water Bucket. New item that places a 3×3 disc of water so you can flood an area or fill a pool without stacking single blocks. The placement outline is water-aware, and breaking a submerged block refills the gap with water.
  • Weather. Snow now visibly accumulates on top faces (and tree canopies) in cold biomes; rain darkens surfaces with a noisy wet sheen, adds a little reflectivity, and stipples the ground and ocean with expanding raindrop rings. Only sky-exposed top surfaces get weather — nothing tucked under a ceiling. A fee-rate override slider in Options → Game lets you force any weather to preview it.
  • Deeper oceans. Lower seabeds, sparse dark chasms, and schools of fish that drift and dart through the water.

Living World

  • Foliage wind. Leaves, tall grass, kelp, and magic leaves now sway in the breeze — plant tops move while the bases stay planted, and nearby clumps drift out of phase so it never reads as one rigid mass. Wind strength scales with the block's fee rate, so a congested chain whips the foliage harder.

Visual Overhaul

  • New tone mapping. The default is now Neutral (Khronos PBR Neutral) — it keeps BlockForge's saturated neon vivid while taming the harsh highlight clipping the old curve produced. Cycle Neutral → ACES → AgX from the postfx menu.
  • Sky gradient + aerial fog. The flat sky is now a real gradient: rich blue overhead falling to a pale warm horizon haze by day, and deep indigo with the stars finally reading at night. Distant terrain dissolves into that gradient instead of a flat colored wall.
  • Global illumination (SSGI). Neon blocks cast their color as bounce light onto nearby surfaces — the world glows onto itself, day and night. Emissive-favored so daylight terrain doesn't wash out, denoised for a clean image, and gated to the top quality tier (it's the heaviest effect). Options → Graphics → postfx → Global Illum.
  • Sun lens flare. A warm flare when you look toward the sun, masked to the sky so world neon doesn't trigger it.
  • Sharpen pass. A final crispen that keeps voxel edges sharp, especially at lower resolutions.
  • Sprint effects. Motion blur and chromatic aberration now ease in as you sprint and out when you stop. Sprint blur has two flavors — a cheap edge Smear or a native Radial speed-zoom.
  • Grounding + night pop. Deeper ambient occlusion in block seams so geometry sits in the world, plus a stronger night emissive-bloom so the neon glows harder after dark.
  • Hover-block outline. The block under your crosshair gets a clean glowing outline so you always know exactly what you're targeting. Toggle in the postfx menu.

New Post-FX Controls

  • The Options → Graphics post-processing panel gained: Tone Map (Neutral / ACES / AgX), Sharpen, Lens Flare, Global Illum (SSGI), Sprint Blur (Off / Classic / Radial), and a Water HQ / STD toggle. The heavy effects (SSGI) auto-disable below the top quality tier so lower-end machines stay smooth.
v1.9 2026-06-19

Functional Blocks

  • New block: Ladder. Place against any wall and climb in Minecraft style — hold W (or any forward input) to ascend, hold Shift to cling in place, release for a slow controlled descent. Walking off the top of a ladder auto-latches you for the fall down.
  • New block: Door. Two cells tall, placed atomically. Right-click breaks; E with crosshair on either half toggles open and closed. Crosshair shows "[E] OPEN" or "[E] CLOSE" so you know what's about to happen. Mobile and gamepad get the same interaction via the contextual button.
  • New block: Beacon Pillar. E toggles it on and shoots a tall gold light pillar visible across the map. Stays on through chunk reloads — leave it active to brand your home.
  • New block: Geyser. E toggles a 16-block steam column above the vent. Standing in the column pushes the player upward at a steady 6 b/s. Hold Shift to cap the push so you can land on platforms partway up.
  • New block: Boost Pad. Glowing chevron tile that pushes the player horizontally when standing on it. E cycles facing (N → E → S → W). Chain them for racing tracks, escape routes, conveyor walkways.
  • New block: Wind Vent. Lateral version of the geyser. E cycles through 5 states (off + 4 directions). The horizontal jet pushes the player along any cardinal direction whether they're on the ground or mid-jump — perfect for obstacle courses.
  • New block: Painting. Place one block, choose an image inscription IID + size (2×2 / 3×3 / 4×4 / 5×5 / 7×7 / 9×9) in the popup, and an N×N wood-frame painting appears with the image stretched across it. Crisp pixel-art rendering matches the block atlas. Only image inscriptions are accepted — HTML inscriptions are rejected at preview time. Breaking any cell takes down the whole painting cleanly.

New Creatures

  • Vulture (Desert): a soaring carrion bird, BlockForge's first natural flier. Circles slowly overhead 14–20 blocks above the surface, banking on the turns. The orbit centre drifts every ~25 seconds so it isn't on the same fixed loop forever.
  • Glitch Hound (Cyberpunk): wolf-sized cyber-canine with neon spine accent and a single magenta forehead LED. Stalking state machine — long idle pose, occasional brisk straight-line walks, and signature "glitch" teleports where the model strobes through cyberpunk neons and snaps to a new position. Sometimes fires the Cyberpunk biome glitch emote in place.

World Map Overhaul

  • Inscribed-chunks default display. The "BUILDS" overlay now shows every chunk on the world that has any inscribed edits, not just chunks you happen to have loaded this session. The relay maintains a hourly-refreshed global list.
  • OWNED filter button. Toggle to highlight every chunk owned by your connected wallet in gold across the entire map.

Multiplayer + Mounts

  • Mount state now broadcasts over the relay. Peers see you in the riding pose with a ghost mount underneath (sheep / scorpion / mammoth, others), instead of seeing you walk-cycle in midair.
  • Dragon and Blimp riders now broadcast the actual seat world position derived from the avatar's parented transform — fixes the "rider trailing behind the blimp" / "jittering peer" bug.

QoL + Fixes

  • Sprint key swap. New Options → Controls setting toggles Sprint between Ctrl (default) and Shift. Ctrl+W closes the browser tab on most platforms; swap to Shift if that bites.
  • Stair teleport fix. _unstuckIfNeeded no longer treats brief vertical-motion overlaps as "stuck" — climbing 2–3 block stairs no longer flings you to the top. The push limit is also capped much more conservatively.
  • Long-block twilight fix. Daytime blocks running past 10 minutes used to park the sun on the horizon (zero direct light + max sunset tint = the world reads as gloomy twilight). Sun stays slightly above horizon now and the max sunset blend is gentler.
  • Pedestal iframe perf. Distant pedestal frames now lazy-mount their iframe only when the player enters the same chunk, instead of executing JS / running animations / holding WebGL contexts permanently. Big perf reclaim on chunks crossed by lots of pedestal builds.
  • Contextual interact button. E (keyboard), Y (gamepad), and the mobile INV button all run the same priority chain now: dismount, mount, sign, door, beacon, geyser, boost pad, wind vent, painting → otherwise inventory. Mobile button label updates per-frame to whatever the action will do (MOUNT / OPEN / CLOSE / ACTIVATE / OFF / ROTATE / READ / INV).
  • Clear creatures button. Chunk Options → "Clear Creatures (local)" despawns creatures in the chunk you're standing in for the current session. Useful when you're building and don't want a mammoth wandering through your scaffolding. They respawn deterministically on chunk reload.

Inventory Categories

  • Beacon, Geyser, Boost Pad, Wind Vent, and Painting all live in the Special category — kept separate from the standard Building blocks so the curated section doesn't bury them.
  • Ladder and Door stay in Building since they're "construction primitives," not interactive specials.
v1.8 2026-06-04

BlockForge Identities

  • The full 100-Identity collection is now resolved live from the master manifest at sat 453604845960285. Each skin loads its own onchain manifest recursively, so the engine never depends on a bundled skin list.
  • Wallet ownership detection runs through the relay's identitiesOwnership path with a per-IID inscription fallback. When the connected wallet owns any of the 100 you get an "✦ IDENTITIES FOUND" toast on entry and the owned skins light up in the picker.
  • Equipped skin auto-validates against ownership on world entry. If you no longer hold the Identity you were last wearing, the avatar clears back to default instead of silently impersonating.

Display Pedestal + Frame Gallery

  • New block: Display Pedestal. Place it like any other block, right-click to open the gallery modal, paste any inscription IID, pick 1×1, 3×3, or 5×5, and a CSS3D frame spawns on top of the pedestal facing whichever way you were looking.
  • Frames are shared in realtime over the relay (frame_add / frame_rm), so other players in the chunk see your gallery appear without reloading.
  • Up to 6 frames per chunk so a single owner can't tank perf for visitors who stop by.
  • Frames persist on the chunk inscription so they replay correctly when the chunk is inscribed onchain.

Flying Mode (Aether Skins)

  • Equip an Aether Identity (skins 97 to 100) and press F in midair to begin gliding. Pitch your camera to dive for speed and pull up to climb.
  • Pressing F from creative-fly drops creative mode and starts a glide in a single keypress, so Aether owners can transition straight from build mode into flight without falling first.
  • Tap Space while gliding for a height boost that decays over a couple of seconds. Stack two or three for big altitude swings off a single dive.
  • Hard banking turns shed a little speed; gentle arcs hold momentum, so leaning into a long curve feels right instead of dumping every bit of forward velocity.
  • Drop below stall speed and you sink — pitch back down to recover and you're flying again.
  • Wing meshes attach to the avatar's torso for the duration of the glide so other players can tell you're airborne.

Ownership-Gated Blocks + Biome Emotes

  • Nine new biome-themed blocks (IDs 95 to 103) unlock based on which Identity you're wearing: Cyberpunk, Alien, Tundra, Ruins, Enchanted, Plains, Desert, Ocean, and Aether. Inventory automatically hides any gated block you can't currently equip, so the hotbar stays clean.
  • Each biome ships a signature emote on G: glitch (Cyberpunk), abduct (Alien), freeze (Tundra), petrify (Ruins), polymorph (Enchanted), bloom (Plains), djinn (Desert), geyser (Ocean), and reforge (Aether).
  • Emotes are full WebGPU shader sequences (stone-wash crackle for petrify, tractor-beam cone for abduct, ice icosahedron for freeze) and play for both the local player and every peer in the chunk.

Build Pipeline + Auto-Forward

  • Older inscribed engine builds now auto-forward to the latest onchain engine via the recursive sat path. Players who bookmarked an older URL get the new build without needing to re-grab a link.
  • Comment-stripping pass in the build script (JS only; live DOM in the YOUR SKINS block stays intact) cuts roughly 35% off post-brotli size, keeping inscription fees down on every engine push.

Polish + Fixes

  • Frost Heart Identity (#97) no longer z-fights on the top of the head. Fix is engine-side, so older inscribed engines may still show the flicker until they auto-forward.
  • Third-person avatar reference is now exposed for console debugging so the in-engine inspector keeps working through skin swaps.
  • Inventory filter for ownership-gated blocks (carryover from the post-v1.6 work) now ships alongside the unlock blocks themselves.
v1.6 2026-05-21

Race Courses

  • Place a START and FINISH flag (plus up to 4 optional checkpoints) on your own chunk to publish a course. Visible to every other player as soon as it saves.
  • Walk near a course start to get a prompt. Press R to begin, hit each checkpoint in order, cross the finish line for a time. Live timer + checkpoint splits shown while you run.
  • Finish screen shows your time, whether it's a personal best, and your rank on the global leaderboard for that course. Press R to race again, Q to quit.
  • Leaderboards persist on the relay. Daily-best aggregation per course.
  • The chunk owner can delete any course on their chunk with Q from the proximity prompt.
  • On mobile: race START, Race Again, Quit, and Abandon buttons all respond to tap. Course creation stays desktop-only for now (flag placement uses the look-and-click flow).

New Creature: Mammoth

  • Big shaggy tundra dweller with ivory tusks, curled ram horns, long tapered tail, and a brown arrow stripe down the spine. Roughly 4x the height of a sheep — tall enough to feel like an event when you spot one. Spawns at ~30% per tundra chunk alongside the existing penguins.
  • Mountable. Walk up, look at it, press E to ride. Slower than a sheep, faster than walking — built for crossing the snow plains in style, not speed.
  • Idle behavior: slow plodding wander with the occasional head-toss skyward.

Build Kudos

  • Stand on any chunk you don't own and press K (or tap the ★ button on mobile) to give that build a kudos. The count is visible to everyone in the chunk-info HUD.
  • Rate-limited to one kudos per build per IP per day, so the counter is a real signal — not a spam target.
  • Counter resets if the owner re-inscribes the chunk (the build changed, the kudos vote was for the old version).
  • Works on the pre-launch builds that ship with the engine too — every chunk with a build has its own counter.

Third-Person Camera

  • Camera is now over-the-shoulder so the block you're targeting isn't hidden behind your avatar.
  • Walking past a wall or into a tight spot no longer causes the camera to jerk in toward your head when the raycast catches a block edge.
  • Camera holds steady for 3s after entering a world, so the first frames aren't a jitter storm while chunks finish loading.

Wallet + Explorer Compatibility

  • BlockForge now loads from Unisat's static.unisat.space preview viewer. Previously this path 403'd because the delegator redirected to /content/, which Unisat's static host doesn't expose. The delegator now preserves whichever route prefix served it.
  • Connecting a wallet from inside Unisat's preview viewer pops a friendly explainer (with a link to ordinals.com/content/) — wallet signing isn't available on that origin, but viewing works fine.

Polish + Fixes

  • Color grading is now damped at night so the world is no longer harshly oversaturated under low light.
  • Block-info HUD shows the owner's display name (when set) instead of a truncated BTC address, and short names are no longer ellipsized.
  • Race proximity prompt no longer overlaps the main menu when you Esc out mid-prompt.
  • Tour / first-time-help popup no longer appears when opening the menu in gallery mode.
  • Kudos count loads correctly when you spawn directly into a chunk with kudos (previously took a chunk-cross to refresh).
  • Removed the redundant "AUTO-JUMP ON [j]" indicator from the block-info sheet.
v1.5 2026-05-13

New Blocks

  • 8 Wool colors: White, Black, Red, Orange, Yellow, Green, Blue, Purple
  • Hay Bale
  • Pumpkin
  • Jack-O-Lantern
  • Aurora (emissive glow block)

New Creatures

  • Cats spawn in plains and enchanted biomes. Follow you when you get close, but roll aloof 25% of the time and refuse to follow for a few seconds. They stop at chunk boundaries, but step back in and they pick the follow back up.
  • Frogs spawn along shorelines at water level. They hop with their back legs only, front legs barely twitch. More common in enchanted biomes.

Chunk Tools

  • Strip Decorations: keep the natural terrain heightmap but clear trees, grass, water, and buildings on top. Quick prep before placing a build.
  • Restore to Inscribed State: discard all multiplayer and local edits, re-fetch the chunk from chain. Wipes the relay's 72h history for that chunk too.

Sky

  • Sunset gradient: sky and fog warm to orange as the sun approaches the horizon. Subtle when the sun is high, ramps quickly in the last few degrees before sunset.

In-world Marketplace

  • Stationary billboards near origin showing recent BlockForge chunk sales and active listings.
  • Three blimps drifting in circles overhead, each carrying a billboard. Live data, pulled through the relay.

Fee Estimator

  • Now accounts for brotli compression. Estimates match actual on-chain cost (was off by ~25x before).

Guest Mode

  • Load the world without owning a chunk. See everything, build temporarily, but changes won't save. Linked from the landing page so anyone can drop in and explore.

Wallet + Multiplayer

  • Wallet now connects in solo mode. Build in peace with your wallet attached, no relay required.
  • Multiplayer toggle now reloads the page (with a warning) instead of toggling in-place, so you keep a clean session.
  • Block-height-aware replay: relay edits older than the latest inscription no longer overwrite inscribed state on rejoin.
  • Custom block textures resolve by inscription iid across tabs and across chunks, so two creators using the same texture name on different inscriptions no longer collide.

Polish + Fixes

  • Reset / Strip / Erase + Floor exports are now compact diffs against the op's base state, not bloated full snapshots. Reset went from 224 KB to ~50 bytes.
  • floorY persists correctly across page reloads.
  • Strip op now applies on inscription load (previously was a no-op for inscribed chunks).
  • Wiki controls reference updated to match the actual in-game bindings (Shift to descend, I for controls panel, mobile DESCEND button).
  • Various relay stability and edge-case fixes.