BlockForge Wiki

A complete reference for the fully on-chain voxel world. Every block, creature, control, and Bitcoin-reactive system documented.

NO MATCHES FOUND

Try a different search term or clear the search.

Overview

What is BlockForge?

BlockForge is a fully on-chain voxel world inscribed on Bitcoin. The entire game — code, textures, world generation — runs from a single HTML inscription. No servers, no CDN, no external dependencies.

The world is divided into a 32×32 grid of chunks (1000 pieces total). Each chunk is a separate inscription that can be claimed by its owner and edited. Edits become permanent when inscribed as child inscriptions of the chunk piece.

Architecture: Three.js WebGPU + TSL. World seed is fixed, so terrain is deterministic across all viewers. Edits are diffs from the procedural baseline, stored as JSON child inscriptions.

World Structure

The world spans -16 to +15 in both X and Z chunk coordinates. Each chunk is 32 blocks wide, 32 deep, and 64 tall.

A player's home chunk is determined by the inscription ID they loaded. Chunks not yet claimed show procedural terrain only.

Block coordinates: world X/Z range from -512 to +511. Y ranges 0-63. Bedrock fills y=0, terrain surface varies by biome.

Mega Chunks

8 special 2×2 chunk areas exist at biome intersections. A single inscription owns the entire 2×2 area, giving builders 4× the space for larger builds like cities or castles.

Mega chunks appear on the World Map with an orange outline and diamond marker.

Controls

Keyboard

WASD / ArrowsMove
SpaceJump (hold to re-jump on land)
Double-tap SpaceToggle Creative mode
CtrlSprint
ShiftFly down (Creative) / swim down (in water)
Left clickPlace block
Right clickBreak block (or open sign/chest)
Scroll / 1-9Hotbar selection
EOpen inventory, mount creature, edit sign
QToggle third-person view
JToggle auto-jump
TSend chat
HSay Hi (wave emote, broadcast to peers)
GBiome emote — the signature gesture of your equipped Identity (Manifest skin only; falls back to wave)
KGive a kudo to the build on the chunk you're standing in (1 per build per day per IP)
IToggle Controls panel
MWorld map
PPhoto mode (orbit camera)
CEyedropper (copy block you're looking at)
RStart/stop video recording
VTake screenshot
ZToggle performance stats
XToggle all post-processing
FToggle fog
LToggle local chunk coordinates in HUD
BOpen the ord.net listing for your current chunk (if listed)
EscRelease pointer / close menus

Mobile

Left joystickMove
Double-tap joystickToggle Sprint
Swipe right sideLook around
PLACE / BREAKPlace / break at crosshair
JUMPJump; double-tap for Creative
▼ DESCENDFly down (Creative mode only)
INV / COPYOpen inventory / eyedropper
◀ ▶Cycle hotbar page
Tap minimapOpen world map
Pause / menu

Gamepad

Left stickMove
Right stickLook
L3 clickToggle sprint
AJump (double-tap for Creative)
RT / LTFly up / down (Creative)
X / BPlace / break
LB / RBCycle hotbar
YInventory
StartPause / menu

Gamepad auto-activates on first input. D-pad and sticks navigate menus. A = select, B = back.

Creative Mode

Double-tap Space to toggle. In Creative mode:

  • No gravity or collision checks from ceiling
  • Space = fly up, Shift = fly down
  • Can fly through water, clouds, anywhere

Creative mode is local only. Your movement/position still syncs to multiplayer as normal.

Biomes

The world has 8 biomes, determined by large-scale noise. Each biome has unique terrain, blocks, structures, and creatures.

Plains GREEN

Rolling green hills with scattered trees, tall grass, flowers, and fireflies. The "home" biome.

Rare features: boulders, fallen logs, firefly jars. Blocks: grass, dirt, stone, sand near water.

Creatures: Sheep (common), Monkey (40% of chunks).

Desert YELLOW

Sandy dunes with saguaro cacti, mud huts, and walled compounds. Three variants of structures: small hut, medium house, walled compound with corner towers.

Blocks: sand surface, stone underneath, sandstone and clay in structures, desert lamps for light.

Creatures: Desert Sheep, Scorpion (30% of chunks).

Tundra WHITE

Snow-covered landscape with conifer trees, ice spikes, ice crystals, and rare igloos with domed roofs and entrance tunnels.

Water freezes to ice at this latitude. Igloos are built from pure snow with ice crystal centerpieces.

Creatures: Penguin.

Enchanted Forest PURPLE

Indigo ground with giant mushroom trees (5 cap shapes), magic logs, glowing magic leaves, hanging vines, and witch huts on stilts with thatch roofs.

Mushroom tree caps have 3 shape variants: dome, flat disc, drooping. Caps spawn leaves with occasional hanging vine droops.

Creatures: Fox, Wizard (50% of chunks).

Alien Planet TEAL

Vivid acid-teal ground with magenta rocks, orange spires, bioluminescent flora, and rare crashed ships with exposed engine cores. Occasional portals stand as obsidian frames with portal block fill.

Crashed ships include cockpits with cyber-window glass and energy-core exhaust.

Creatures: Alien Jellyfish (floating), Tripod (50% of chunks).

Ruins TAN

Cracked concrete ground with collapsed archways, partial stone rooms, rusted metal frames, and crumbling pillars.

Creatures: Sentinel (stone head, stares at you), Wraith (40% of chunks, translucent ghost).

Cyberpunk CYAN

Dark asphalt with glowing cyan grid lines, neon roads, and randomly generated skyscrapers with windows, energy cores, and crystal spires. Three skyscraper variants: slim (3×3), wide (5×3), L-shaped (5×5).

Creatures: Drones (patrol pattern with scan beams).

Ocean BLUE

Submerged biome below water level. Features coral clusters, kelp forests, shipwrecks with broken masts, underwater stone ruins, and sand mounds.

Shipwrecks are L-shaped plank structures on their sides. Underwater ruins are 3×3 brick/stone with some collapsed walls.

Creatures: Blue Jellyfish, Anglerfish (50% of chunks, glowing lure).

Terrain Features

Floating Islands

Rare (~3% of chunks) sky islands with a top surface, conical underside, biome-matched blocks, occasional trees, and 60% chance of waterfalls streaming down to the ground. Some hang a lantern from the underside for a floating lamp effect.

Underground Caverns

About 15% of chunks contain 1-2 hidden spherical cave rooms underground, buried at least 4 blocks below the surface. Each cave contains biome-themed emissive loot scattered on the floor.

Cave loot tables: Plains=fireflies, Desert=lamps, Tundra=ice crystals, Enchanted=magic leaves+crystals, Alien=spires+cores, Ruins=warning lights+lanterns, Cyberpunk=neon+cores, Ocean=coral+lanterns.

Water Level

Sea level is at Y=10. Any terrain below this floods with water in Plains and Ocean biomes, or ice in Tundra biomes.

Sand appears on beaches where plains terrain meets water. Plains/tundra chunks with low terrain (h < 10) fill with water/ice up to level 10.

Procedural Signs

Hidden signs containing Bitcoin and cypherpunk quotes are seeded inside enclosed structures throughout the world — ~2% chance per eligible column. 25+ different quotes from Satoshi, Hal Finney, and others.

Signs are placed only in structure interiors (floor + walls on 2+ sides, non-natural blocks).

Creatures

Each biome spawns 1-3 creatures per chunk. Creature behavior is seeded by the Bitcoin block nonce — new block = new movement patterns.

Sheep MOUNTABLE

Wanders plains in wool colors, occasionally hops happily. Mount with E to ride.

Body made of textured wool material. 10 color variants.

Monkey

OCM-style monkey with expressive face and swinging arms. Scratches head when idle.

Scorpion MOUNTABLE

Giant desert arachnid with curling tail and pincer claws. Tail wags ambiently and rattles violently every 6-16 seconds. Mount with E.

8-legged with 2-pair walking animation. Tail is a hierarchical chain of 5+ segments.

Penguin

Small waddling bird with orange beak and feet. Occasionally throws snowballs that arc with gravity.

Snowballs have realistic gravity + rotation and despawn after falling far enough.

Fox

Slender creature with white tail-tip. When player approaches, 60% flees, 40% stays brave (ignores player for 3 seconds).

Wizard

Purple-robed figure with pointed hat, beard, and glowing staff. Periodically emits magic sparkles from the staff orb.

Magic bursts spawn 3-5 colored particles with physics-based fall and fade.

Alien Jellyfish

Translucent glowing dome with trailing tentacles. Floats above terrain with a gentle bobbing motion.

Tripod

3-legged alien walker with a single large glowing eye. Legs move in offset rhythm creating an eerie wobble.

Drone

Cyberpunk flying machine with spinning rotors and red eye. Patrols in straight lines with 90° turns. Periodically emits a cone-shaped scan beam below.

5 color variants. Scan beam fades in/out over ~2-4 seconds with pulsing opacity.

Sentinel

Large stone head with glowing orange eye sockets. Slowly rotates to face the player when within 16 blocks. Does not move.

Wraith

Translucent cloaked figure with glowing white eyes. Pulses opacity and sways like a ghost. Drifts freely across terrain.

Anglerfish

Bulbous fish with jagged teeth and a glowing yellow lure dangling from its head. Lure sways and tail wags as it swims.

Blue Jellyfish

Ocean-colored translucent jellyfish. Drifts slowly, tentacles sway.

Cat

Compact four-legged creature with triangular ears and an upright tail. Spawns in plains and enchanted chunks (45% / 40% chance per chunk). When the player walks within ~12 blocks the cat tends to trail along about 2 blocks behind — the inverse of the fox's flee instinct. Occasionally rolls aloof and ignores the player for a few seconds before re-rolling. Sits still and tilts its head when idle.

75% follow chance on detection; 4-8 s aloof cooldown otherwise. Cat is bound to its spawn chunk, so following stops at chunk boundaries — walk back in to pick it back up. Six palette entries in plains (black, orange tabby, white, gray, dusty brown, fawn), five in enchanted (black, two purples, lavender, white). Belly fur auto-lightens by +30 in each channel for a free two-tone look.

Frog HOPS

Wide, low-slung body with bulging eyes on top of the head and a permanent grin. Spawns on shoreline tiles — surface just at or above the waterline — in ocean chunks (60% per chunk) and occasionally in plains chunks with a nearby pond (18%). Hops in clean arcs when moving; back legs do the work, front legs barely move.

Pepe-coded green palette. Spawn picks up to 8 random local positions per chunk and keeps the first whose surface Y falls in [WATER_LEVEL, WATER_LEVEL + 3]. Frogs stand on regular ground (no water-surface levitation). Hop arc is a positive half-sine layered on top of the ground-tracked Y.

Vulture FLIES

BlockForge's first natural-flier creature. Dark feathered body, bald pink-skinned head with hooked beak, two amber eyes, wide spread wings. Circles slowly 14–20 blocks above the desert surface on a banking turn. The orbit's centre drifts every ~25 seconds so it never traces exactly the same loop. Spawns in desert chunks with 35% probability.

Circle radius 6–10 blocks, angular speed 0.35–0.55 rad/sec. Wings flap on a slow sin cycle even mid-glide. The body banks ±0.22 rad (~13°) into the turn direction so the silhouette reads as a soaring bird rather than a hovering drone. Floater AI path, no per-tile collision check.

Glitch Hound CYBERPUNK

Wolf-sized cyber-canine with sleek black plating, neon spine accent, and a single magenta forehead LED. Walks in a predator's brisk straight-line stalk, then signature "glitches" — body flickers through cyberpunk neons + horizontal jitter as it teleports 3–6 blocks to a new spot. Sometimes fires the Cyberpunk biome glitch emote in place. Spawns in cyberpunk chunks with 40% probability.

3-state machine (idle 3–8s, walk 1.8–3.2s, glitch 180ms, ~15% chance to instead fire a 1.6s emote in place). Walk SPEED 3.2 b/s. Teleport mid-phase snaps position + facing; accent emissive material strobes through the same neon palette as the Cyberpunk Identity glitch emote so they share a visual beat.

Blocks

90+ block types across every biome. Badges indicate special properties.

Natural Terrain

Grass ID 1

Green surface block for plains. Dirt underneath.

Dirt ID 2

Brown soil found under grass and snow.

Stone ID 3

Deep gray block below all surface terrain.

Sand ID 4

Desert surface and beaches along water.

Gravel ID 5

Loose stone texture.

Wood ID 6

Tree trunk block. Dark grain on sides, rings on top.

Bedrock ID 45

Near-black unbreakable block at Y=0.

Snow ID 12

Snowy surface, jagged edge where it meets dirt.

Water ID 13 TRANSPARENT

Animated flowing water. Horizontal streaks on top, vertical on sides. The HQ water surface adds Gerstner waves, depth color, caustics, and shoreline foam (toggle HQ/STD in the postfx menu).

Water Bucket ID 124

Placement tool that lays down a 3×3 disc of water in one go — flood an area or fill a pool without stacking single blocks. The placement outline previews the disc, and breaking a submerged block refills the gap with water.

Ice ID 27 TRANSPARENT SLIPPERY

Frozen water. Walking on ice preserves momentum — you slide.

Building

Planks ID 7

Smooth wooden planks, good for floors.

Cobblestone ID 8

Irregular stone blocks with visible edges.

Brick ID 9

Classic red brick, staggered rows.

Glass ID 10 TRANSPARENT

Clear glass with subtle blue tint.

Leaves ID 11 TRANSPARENT

Green tree canopy with small gaps.

Red Glass ID 65 TRANSPARENT

Red stained glass with cross pattern.

Blue Glass ID 66 TRANSPARENT

Blue glass with diamond pattern.

Green Glass ID 67 TRANSPARENT

Green with diagonal stripes.

Yellow Glass ID 68 TRANSPARENT

Yellow with star pattern.

Purple Glass ID 69 TRANSPARENT

Purple arch pattern.

Orange Glass ID 70 TRANSPARENT

Orange with flame pattern.

Dark Wood ID 54

Very dark wood with purple accent flecks.

Thatch ID 55 EMISSIVE

Woven straw, faint magical glow.

Obsidian ID 19

Black glassy volcanic block with speckles.

Dark Metal ID 17

Industrial metal with corner rivets.

Clay ID 43

Warm brown terracotta. Used in desert structures.

Sandstone ID 44

Compacted sand with ornate borders.

Hay Bale ID 91

Banded straw with binding cords on the sides and a radial cross-section on the top — stacks read as proper bales.

Wool

Eight solid-colour fabric blocks for decorative builds. Each shares the same diagonal weave + sparse knot pattern; only the base colour changes.

White Wool ID 83

Clean off-white cloth.

Black Wool ID 84

Near-black fabric, good for outlines.

Red Wool ID 85

Muted brick-red fabric.

Orange Wool ID 86

Warm pumpkin orange.

Yellow Wool ID 87

Saturated mustard yellow.

Green Wool ID 88

Mid-green, leafy.

Blue Wool ID 89

Deep cobalt blue.

Purple Wool ID 90

Royal purple.

The pixel-art generator at /generate_pixel_art_json auto-picks wool for saturated mid-tone source pixels (the eight tuples cover the colour wheel cleanly).

Light & Emissive

Lantern ID 50 EMISSIVE

Warm amber lantern. Casts real light on nearby blocks (max 6 in world at once).

Neon Panel ID 14 EMISSIVE

Cyan neon with glowing edge border.

Energy Core ID 18 EMISSIVE

Orange radiant sphere.

Firefly Jar ID 61 EMISSIVE TRANSPARENT

Glass jar with warm firefly glow. Plains biome.

Desert Lamp ID 62 EMISSIVE

Ornate clay oil lamp with flame. Desert biome.

Ice Crystal ID 63 EMISSIVE TRANSPARENT

Glowing ice shard. Tundra biome.

Warning Light ID 64 EMISSIVE

Flashing red/yellow beacon. Ruins biome.

Crystal ID 16 EMISSIVE TRANSPARENT

Purple gradient crystal with white sparkles.

Magic Leaves ID 32 EMISSIVE TRANSPARENT

Pink/purple glowing foliage from mushroom trees.

Alien Spire ID 35 EMISSIVE TRANSPARENT

Amber translucent crystal.

Alien Flora ID 36 EMISSIVE TRANSPARENT

Magenta organic blob with glowing spots.

Lava ID 72 EMISSIVE

Animated flowing lava, scrolls upward.

Aurora ID 94 EMISSIVE

Sky-curtain block. Three vertical colour bands (cyan, pale green, purple) warped by a sine wave so a wall of these reads as northern lights.

Physics Blocks

Bounce Pad ID 76 BOUNCY

Green spring-coil pad. Every face bounces: top launches you up, sides fling you away, bottom pushes you down. Great for obstacle courses.

Grip Pad ID 77 STICKY

Red rubber pad. Instantly kills all momentum on contact. Standing on it blocks sliding from ice or bounce impulses. Walls of grip pad stop you dead.

Ice ID 27 SLIPPERY

Walking on ice preserves momentum. Releasing WASD glides to a slow stop instead of instant halt.

Portals

Portal Block ID 56 EMISSIVE TRANSPARENT

Deep purple portal ring. Standing inside for 3 seconds teleports you to a paired portal elsewhere in the world. Triggers hue-rotate effect that persists until you return.

Bitcoin-Themed

Bitcoin ID 57 EMISSIVE

Orange block with ₿ symbol.

Satoshi ID 58 EMISSIVE

Dark block with S and strike pattern.

Chart ID 59 EMISSIVE

Green ascending line chart on grid background.

Ordinals ID 60 EMISSIVE

Black block with ◎ ordinals symbol.

Fee Rate ID 73 EMISSIVE

Live-updating display of current Bitcoin fee rate in sat/vb. Text changes when the fee rate changes.

Interactive

Sign ID 46

Parchment-faced sign block. Right-click to read. Chunk owners can edit. Supports up to 120 characters.

Seed ID 71

Grows into a tree based on Bitcoin block age. 5 growth stages cycle every 100 blocks: seed → sprout → young → adult → withering → repeat.

Cloud ID 20 TRANSPARENT

White puffy cloud block. Clouds are also auto-generated overhead in the sky layer.

Pumpkin ID 92

Vertical-ridge sides with a brown stem on top and an 8-segment radial pattern around it.

Jack-O-Lantern ID 93 EMISSIVE

Pumpkin with eyes and a toothy grin carved into every side, glowing yellow at night. The whole block radiates a warm orange.

Identity Blocks SKIN-GATED

Nine animated emissive blocks — one per biome family of the BlockForge Identities collection. Each block appears in your inventory ONLY while you have an Identity from its matching biome equipped, and is prepended to the first hotbar page so it's discoverable the moment you unlock it. Unequip the skin and the block disappears from the inventory; placed copies stay in the world either way.

Glitch Cube ID 95 EMISSIVE

Cyberpunk · Magenta + cyan signal bars over deep purple with glitch-static pixels. Bars scroll horizontally; bright white pixels flicker randomly as a CRT-style glitch flash.

Bio Pulse ID 96 EMISSIVE

Alien · Bioluminescent organ: yellow core, lime halo, organic veins on dark tissue. The radial pattern expands and contracts on a slow sine pulse so the core appears to breathe.

Frost Heart ID 97 EMISSIVE TRANSPARENT

Tundra · Diamond-shaped frozen geometry, white core fading through pale blue to deep navy. Core scales gently in and out — looks like a crystalline heartbeat.

Forge Ember ID 98 EMISSIVE

Ruins · Cracked molten stone — diagonal lava cracks scroll across the face, intensity flickers per crack like uneven embers in a forge.

Wisp Lantern ID 99 EMISSIVE

Enchanted · Soft purple magic wisp with a bright pink core. Pulses on a slow sine; five scattered sparkles independently twinkle on/off as the wisp breathes.

Honeycomb Core ID 100 EMISSIVE

Plains · Hexagonal honeycomb grid. Cells flash in a moving diagonal sweep, and the gold rim thickness oscillates so the whole comb visually buzzes rather than just glowing.

Sun Stone ID 101 EMISSIVE

Desert · Radiant sun glyph carved into sandstone. The eight-spoked sunburst rotates slowly around the white-hot core.

Abyssal Coral ID 102 EMISSIVE

Ocean · Branching cyan coral against deep navy water. Branches sway side-to-side on a slow sine; bioluminescent white dots scintillate across the structure.

Cosmos Shard ID 103 EMISSIVE

Aether · Cosmic starfield on a slowly-drifting purple/blue gradient. Seven colored stars twinkle independently on a phase offset so the field never feels static. Worn by the 4 Aether identities (skin #97–100).

Mapping is by skin biome group: skins 1–12 (Cyberpunk) → Glitch Cube, 13–24 (Alien) → Bio Pulse, 25–36 (Tundra) → Frost Heart, 37–48 (Ruins) → Forge Ember, 49–60 (Enchanted) → Wisp Lantern, 61–72 (Plains) → Honeycomb Core, 73–84 (Desert) → Sun Stone, 85–96 (Ocean) → Abyssal Coral, 97–100 (Aether) → Cosmos Shard.

Interactive Blocks

State-toggleable + reactive blocks added in v1.9. Most use E for the action verb (or the mobile INV button / gamepad Y); right-click still breaks. The crosshair hint above the reticle shows the action that will fire on press.

Ladder ID 105 CLIMB

Hold forward (W / left-stick up) to climb; hold Shift to cling in place; otherwise the ladder catches you in a slow controlled descent. Walk off the top of a stack and the ladder auto-grabs you on the way down. Place against any wall to build climb shafts.

Door ID 106 TOGGLE

2-cells-tall block placed atomically (needs 2 blocks of clearance). Right-click breaks the whole pair; E with crosshair on either half toggles open and closed. Open variant is no-collide so you walk through.

Beacon Pillar ID 110 TOGGLE

Off: dark metal column. E turns it on: a tall vertical gold beam shoots straight up, visible from across the map. Persistent through reloads — inscribe a chunk with it active and it'll keep beaming.

Geyser ID 112 TOGGLE

Off: cracked vent. E ignites a 16-block steam column above the vent. Standing in the column pushes the player upward at 6 b/s (a soft elevator). Hold Shift to cap the push so you can step off onto platforms partway up.

Steam plume is a TSL-driven scrolling noise column. Shared material across every geyser so all columns animate in lockstep.

Boost Pad ID 114 PHYSICS

Floor tile with cyan chevrons pointing in the boost direction. Standing on it pushes the player horizontally at 14 b/s in the arrow direction. E cycles facing N → E → S → W. Chain them along a path for racing tracks, conveyor walkways, escape routes. WASD still steers — you can curve onto and off the pad.

Wind Vent ID 118 TOGGLE

Lateral version of the geyser. Industrial grate vent with a centred aperture. E cycles through 5 states (off + 4 cardinals). A horizontal jet extends from the active face up to 16 blocks. Walking or jumping through the jet pushes the player at 10 b/s in the jet direction — works mid-air too, so obstacle courses can use crosswinds to redirect jumps.

Jet shares the same TSL steam material as the geyser, just oriented horizontally. Path cuts off at the first solid block in the wind direction. Player physics scan looks 16 blocks outward from the player in all 4 cardinals each frame.

Painting Cell ID 123

Wood-frame block that hosts a multi-cell painting. Placement opens a popup: paste an image inscription IID (only image inscriptions accepted — HTML is rejected at preview), pick a size (2×2, 3×3, 4×4, 5×5, 7×7 feature, 9×9 façade), and the painting spawns facing you with the image rendered crisply across the area. Pixel-art ordinals stay sharp because the painting texture uses NearestFilter, same as the block atlas. Breaking any cell takes the whole painting down atomically.

Odd sizes (3, 5, 7, 9) place the bottom-MIDDLE cell at the click location. Even sizes (2, 4) place the bottom-LEFT. Image plane is a flat mesh sized at 0.92× the painting area, positioned 0.51 blocks in front of the wall, leaving the wood frame visible around the edges as the rim.

Bitcoin-Reactive World

The world responds to live Bitcoin blockchain data. Polled every 30 seconds from the inscription host.

Day/Night Cycle — Block Parity

Even-numbered Bitcoin blocks = night, odd-numbered blocks = day. The sun and moon arc across the sky over the ~10-minute block window, with smooth dawn/dusk transitions.

Block height drives dayNightTarget (0 or 1). Camera sky color, fog, ambient light, and sun/moon positions interpolate smoothly. Block height is displayed on the sun/moon face.

Weather — Average Fee Rate

The current block's average_fee_rate drives weather intensity:

< 1 sat/vbClear skies
1-3 sat/vbLight rain (150 particles)
3-6 sat/vbModerate rain (350 particles)
6-10 sat/vbHeavy rain (600 particles)
> 10 sat/vbThunderstorm (900 particles, lightning flashes)

Tundra biome always shows snow instead of rain. Desert/ocean never show precipitation.

Weather now leaves a mark on the world: snow visibly accumulates on top faces and tree canopies in cold biomes, and rain darkens surfaces with a wet sheen, adds a little reflectivity, and stipples the ground and ocean with expanding raindrop rings. Only sky-exposed top surfaces are affected — nothing tucked under a ceiling gets wet or snowed on.

Force any weather to preview it with the Fee Rate Override slider in Options → Game (or the ?FEERATE=N URL param).

Cloud Density — Transaction Count

The current block's transaction_count maps to cloud coverage. Empty blocks give sparse clouds, full blocks give overcast skies.

Maps 1000-10000 txs to noise threshold 0.80 → 0.25. Cloud mesh rebuilds when threshold changes by more than 4%.

Creature Behavior — Block Nonce

Each Bitcoin block's 32-bit nonce re-seeds creature RNG. On a new block, every creature picks different walk targets, flee decisions, beam timers, magic cast intervals, etc.

Shooting Stars — New Blocks

When a new Bitcoin block arrives, the sky flashes and 20-50 shooting stars streak across. Hard-capped at 60 simultaneous stars to prevent lag spikes (e.g., from tabs refocusing after many blocks elapsed).

Seasons — 100-Block Cycle

Every 100 Bitcoin blocks, biomes shift through a subtle color cycle:

  • Ruins darken and gain more cracks
  • Magic leaves shift pink → deep purple
  • Cyberpunk neon shifts cyan → magenta
  • Alien flora pulses green → violet
  • Tundra snow shifts white → blue
  • Desert sand shifts warm → cool
  • Sky background warms slightly at peak season

Override with the Season Cycle slider in Options.

Live Fee Rate Display

The Fee Rate block (ID 73) renders the current Bitcoin fee rate as text on all faces. Updates whenever the fee rate changes.

Identities

BlockForge Identities is a 100-piece on-chain PFP collection that doubles as a playable avatar set inside the world. Each Identity is a manifest-rig skin with its own biome, signature emote, and unlocked block.

The Collection

100 unique manifest-rig skins, split into 9 biome groups. The first 8 biomes have 12 skins each; Aether is the rare top-tier with only 4.

1–12Cyberpunk — neon panels, chrome plating, hacker silhouettes
13–24Alien — antennae, segmented limbs, bio-glow accents
25–36Tundra — bundled-fur shapes, frost rims, breath fog
37–48Ruins — weathered metal, sun-baked greys, gladiator silhouettes
49–60Enchanted — wizards, sprites, mushroom-folk with magical accents
61–72Plains — pastoral palettes, leaf crowns, woven cloth
73–84Desert — wraps, jewellery, sand-warmed metals
85–96Ocean — diver / merfolk silhouettes, coral accents
97–100Aether — cosmic, ethereal, the 4 rarest pieces

The 100 Identities were inscribed sequentially under a single reveal — the IIDs are 9b44…0c59i0 through 9b44…0c59i99, in the same order as the master manifest JSON (skin #1 = i0, skin #100 = i99).

Owning & Equipping

The Skins picker (Main Menu → Skins) reads on-chain ownership directly. Steps:

  1. Connect your wallet (Xverse, MetaMask via Nexus, or Unisat if enabled).
  2. The engine fetches /r/inscription/<iid> for all 100 Identities in parallel and filters to the inscriptions held by your connected ordinals address.
  3. The picker lists every Identity you own with its render preview, name, and number. Click one to equip.
  4. Equipped Identity persists in localStorage, so re-launches boot you back into the same avatar without re-querying the chain.

Ownership is cached by address for ten minutes so the picker reopens instantly. If you just transferred or bought an Identity and don't see it, disconnect and reconnect your wallet to refresh.

Address comparison is exact-string against the wallet's ordinals (taproot) address. The reveal-base IID prefix is hardcoded in the engine; the master manifest JSON is resolved via the sat-pointer pattern (/r/sat/<sat>/at/-1), so re-inscriptions to fix a render bug propagate to every running engine without a re-inscription of the engine itself.

What Happens When You Equip

Equipping an Identity triggers four side-effects at once:

  1. Avatar swap. The third-person avatar is rebuilt from the manifest. Aux meshes for every emote (ice cube, tractor beam, geyser + surfboard, ~60 flowers, smoke wisp, butterflies, ~120 stone particles) are pre-built and pre-compiled at the same time, so the first emote fires without a frame hitch.
  2. Hotbar gating. The skin-gated block matching your Identity's biome (see Identity Blocks) is prepended to the first hotbar page. Inventory filters all 9 biome blocks down to just yours so unequipped blocks aren't visible/clickable.
  3. Biome-specific emote. Pressing G now plays your biome's signature gesture (glitch, abduct, freeze, petrify, polymorph, bloom, djinn, geyser, or reforge).
  4. Multiplayer broadcast. A skin-swap message goes out on the global room so connected peers' copies of your avatar swap in real time — no rejoin needed.

Unequipping (clearing in the picker, or equipping a different Identity) reverses 1–4: avatar rebuilds with the new manifest, the previously-gated block disappears from the hotbar, G retargets to the new biome emote, and the swap re-broadcasts.

Manifest Architecture

Each of the 100 Identities is a delegate inscription that resolves to a shared viewer engine + a shared master manifest JSON. Both shared layers live on their own Bitcoin sats:

  • Master manifest — one JSON containing all 100 skin part-lists, indexed by skin number. Anchored on sat 453604845960285. Re-inscribe to fix a part definition (color, shape, anchor) across every skin in one shot.
  • Viewer engine — the standalone PFP renderer used by the delegate HTML for fullscreen viewing. Anchored on sat 453604845956389. Re-inscribe to fix the renderer / shaders / emotes for all 100 PFP pages.
  • Delegate HTML — one per Identity, lightweight, never re-inscribed. Reads its own skin number from CBOR metadata, then resolves manifest + viewer via /r/sat/<sat>/at/-1.

The voxel world engine also uses the same master manifest (via the sat pointer) — so a single re-inscription on the manifest sat updates every Identity preview in the PFP delegate AND every Identity that anyone is wearing in the world.

Multiplayer

How It Works

Multiplayer runs over WebRTC through an server-hosted relay. Every client opens one WebRTC datachannel to the same relay box and joins rooms there.

Relay address (IP, port, ICE creds, DTLS fingerprint) is anchored on a Bitcoin sat (25483050881520); clients fetch the latest config from /r/sat/<sat>/at/-1/content, so the relay can be rotated without touching the piece. Server is Pion (Go) on a Hetzner box.

What Syncs

  • Player position and yaw + pitch (10 Hz) — peers see your head tilt when you look up or down
  • Player name, color, and skin texture
  • Block placements and breaks (broadcast through the relay)
  • Chunk operations (reset/erase/erase-floor — owner only)
  • Chat messages and emotes

Each loaded chunk subscribes to its own relay room (mp:chunk:cx,cz). Edits are buffered server-side for ~72 hours; players who join a chunk room receive the buffered history as replay events so late-joiners see existing builds.

Emotes

Two emote keys, both one-shot and both broadcast to peers so what you see on your own avatar matches what everyone else sees.

HWave. Right arm raises and wags for ~2 seconds. Works on every avatar type (Manifest, legacy PNG, color-only).

GBiome emote. Plays the signature gesture of the currently-equipped Identity's biome. Only fires on Manifest-rig avatars; without an Identity equipped, G falls back to wave so the key is never a dead press. Each biome has its own animation, duration, and visual effects:

Glitch CYBERPUNK

1.6s. Digital signal-tear shake — head, arms, and torso jitter on multiple high-frequency sines. Random body parts emissive-flash hot-neon colors (magenta, cyan, lime, yellow) for a CRT-glitch feel.

Abduct ALIEN

3.6s. Tractor beam scales down from the sky, character lifts up into the column, body goes limp / dangle, then beam retracts and the character drops back to ground with a recovery ease.

Freeze TUNDRA

2.2s. Character snaps into a scared flinch + ice crystal encases them. Vibration ramps up quadratically (the character straining), then the ice cracks off and the pose eases back.

Petrify RUINS

3.7s. Stone color washes up the body from the feet (TSL shader), Voronoi cellular cracks bloom across the surface as tremor builds, then ~120 jagged stone-chunk particles crumble off and fall.

Polymorph ENCHANTED

3.4s. Magical flash + body parts snap into a wrong configuration (head where torso was, legs up at shoulders, hands at feet). Holds the bizarre silhouette for ~2s, then flashes again as parts snap back.

Bloom PLAINS

3.6s. Character eases into a serene arms-wide stance; ~60 daisies pop into existence on the body in randomized order; 4 butterflies orbit the head at unique radii/heights/speeds. Smooth sway during the hold, then flowers and butterflies fade away together.

Djinn DESERT

3.6s. Body dissolves to a tiny scared figure (0.2× scale); a vertex-morphed smoke wisp rises around them with glowing eyes; wisp drifts and pulses, then fades and the character reforms.

Geyser OCEAN

4.0s. Water column shoots up and lifts the character; a surfboard materializes under their feet; they surf the wave with a tide-sway motion; geyser collapses and the character drops.

Reforge AETHER

4.0s. Body parts explode outward into two concentric orbital rings, spin around the center, each piece self-tumbles on a unique axis, then magnet back to bind pose. Warm aether-gold pulse glow per anchor, out of phase.

Wire format is { t: 'em', kind: 'wave' | 'biome:<name>' }. Receiver dispatches via a per-emote pose function and per-avatar uniforms for shader-driven emotes (petrify). Aux meshes (ice, beam, wisp, geyser, surfboard, flowers, butterflies, stone particles) are built once at avatar mount and toggled visibility on the corresponding emote — they live on the avatar's outer group so they follow peers through world space. Emote messages aren't persisted, so reconnects don't re-trigger stale animations on chunks you visited before.

Chat Bubbles

When a player sends chat, the most recent message floats over their head for 5 seconds. Latest message replaces the prior one; the bubble fades on its own.

Your own messages also show above your third-person avatar so what you say matches what others see.

Offline Fallback

If the relay is unreachable, your edits save to browser localStorage instead. They still appear locally across reloads, just not to other players.

The true "source of truth" for all changes is always the child chunk inscriptions. Multiplayer is a quality of life addition on top of this, but the core world will always remain on-chain via parent-child.

Marketplace

Live ord.net listing and recent-sale data is pulled through the relay at boot and surfaced in three places: two sky billboards in chunk (0,0), the cyberpunk ad blimps drifting overhead, and the chunk-info HUD when you walk into a listed chunk.

Listings & Sales Endpoint

The engine calls two relay actions at boot:

  • bf-listings — current live listings: floor price, total listed count, plus each entry's inscription ID, chunk name, price in sats, and listing URL on ord.net.
  • bf-recent-sales — last 10 ord.net sales: inscription ID, sale price (sats + USD), buyer, seller, and timestamp.

Both relay actions are server-side GETs against blockforgebtc.com/api/blockforge/{listings,recent-sales}; the relay proxies the JSON over the data channel because ordinals.com's CSP blocks the in-game client from calling our backend directly. Boot fetch is best-effort — if either call fails, the corresponding billboard/blimp stays hidden but the rest of the world is unaffected.

Chunk (0,0) Billboards

Two canvas-textured sky panels mounted below the floating "BLOCKFORGE" energy-core text in the welcome chunk:

  • RECENT SALES — 10 most recent sales with chunk tag, age (e.g. "5h ago"), and sat price.
  • LOWEST LISTINGS — 10 cheapest live listings with chunk tag and sat price, plus floor + total listed in the subtitle.

Each panel is double-sided (two coplanar planes facing opposite ways) so the text is readable from either approach.

Cyberpunk Ad Blimps

Three slow-drifting blimps circle the world at varied altitudes, each carrying a side-mounted screen that reuses the same billboard textures (one upload to the GPU; multiple meshes reference it).

  • Sleek dirigible (cyan trim, low altitude) — tapered cigar hull with a gondola, vertical antenna, red blinking beacon. Carries listings.
  • Industrial freighter (magenta trim, mid altitude) — boxy stepped hull, magenta engine thrust pods, yellow caution lights. Carries sales.
  • Drone scout (cyan trim, high altitude, counter-rotating) — compact hull with four corner ducted-fan housings, green nose sensor. Carries listings.

Aesthetics chase the cyberpunk biome palette (dark metal hull, neon road / neon panel / energy core accent colours). Beacons blink on per-blimp phases so the trio doesn't strobe in sync.

In-World Buy Hint

When you walk into a chunk that has a live listing, the chunk-info HUD adds a line:

◆ Listed on ord.net: 41,000 sats (Press B to Buy)

Press B to open that chunk's ord.net inscription page in a new tab. The hint and keybind are no-ops on chunks that aren't listed.

The chunk lookup is built from the listings response by parsing chunk coordinates out of each listing's name field ("BlockForge #N - Chunk (cx, cz)"). Lookup is O(1) per HUD refresh.

Technical

Inscription Structure

The parent inscription contains the full game HTML. 1000 child inscriptions represent the individual chunks (some are mega-chunks spanning 2×2 sub-chunks).

When a player edits their chunk, they inscribe a JSON diff as a child of their chunk piece. On page load, all recent child inscriptions are fetched and applied as world edits.

Chunk JSON Format

Edit format for inscriptions:

{
  "t": "edit",
  "cx": 3, "cz": -2,
  "a": [[x, y, z, "blockname"], ...],
  "r": [[x, y, z], ...],
  "tx": [{"iid": "abc...i0", "name": "myblock"}],
  "signs": {"x,y,z": "sign text"},
  "bh": 945000,
  "author": "MDV"
}

See /blockforge/spec for the full AI-ready build spec.

Deterministic World Gen

Every aspect of the base world (terrain, biomes, structures, caves, chest contents) is deterministic from the fixed WORLD_SEED. This means every player loading the game sees the exact same procedural world, so builds can only deviate from a shared baseline.

Note on Inscriptions #1–100 Biome Traits

The first 100 BlockForge inscriptions (the initial airdrop batch) were generated using an older biome-calculation script that didn't match the final engine. As a result, ~78 of those 100 carry a Primary Biome trait that doesn't match what the engine actually renders for that chunk.

The engine's in-world rendering is canonical truth. If you stand in a chunk and see Cyberpunk, that chunk is Cyberpunk regardless of the listed trait. Inscriptions #101–#1000 use the corrected biomes that match the engine exactly.

We considered fixing this with a re-derived seed or per-chunk overrides, but both approaches would have either changed the world for everyone (breaking existing builds and the visual continuity of the map) or made the HUD lie about the actual environment. Trait noise on 7.8% of the first batch was the smaller cost. Going forward, every new piece is self-consistent: the trait you see on the marketplace matches the biome you'll see when you walk into that chunk.

Rendering

Three.js r185 WebGPU renderer with TSL (Three.js Shader Language). Uses MRT (Multiple Render Targets) to render scene color, normals, and emissive separately for post-processing, and Forward+ clustered lighting so torch-dense builds stay performant. The renderer + a full kit of post-processing nodes load as recursive onchain inscriptions.

Chunk mesh uses 4 buckets: opaque, alpha (cutout), emissive, and water. Face culling skips faces touching identical or solid neighbors. Emissive bucket has depth-write enabled so depth tests work correctly.

Texture Atlas

All block textures pack into a single 1024×1024 canvas in a 16×16 grid of 64×64 slots. Supports up to 256 blocks.

Skin Format

Standard Minecraft 64×64 skin layout. UV regions for head, body, arms, legs, and overlay layers.

URL Parameters

Append these to the URL for debugging or special modes:

Query Flags

?TIME=hourFixed time of day (0-24 or name like "noon", "dusk")
?TIMELAPSE=NAdvance time N× faster
?FORCE_DAYNIGHT=0/1Force night (0) or day (1)
?FEERATE=NOverride fee rate for weather testing
?FLYOVER=trueAutomated cinematic camera path, no UI
?gallery=trueGallery mode — auto-orbit, no pointer lock
?AUTOSTART=NAuto-enter game after N seconds
?NO_CREATURES=trueDisable creature spawning
?MP=falseDisable multiplayer
?stats=trueShow FPS/performance stats
?perf=1Enable longtask + LoAF observers and per-frame timing logs
?NOCURSORHide the mouse cursor

Credits

Built by MDV

BlockForge is a fully on-chain voxel world inscribed on Bitcoin. Permanent, unstoppable, editable by you.

BlockForge  ·  Build Spec

Technical Consulting

  • Switch_900 — Nexus and NexusWalletConnect, WebRTC and relay expertise.
  • Ob1-Wan Satoshi — WebRTC, networking and relay experience, Kenobi Stack.