Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
An old-school adventure starring the Rare Friend you own: twenty-one skills, twenty quests, a continent of a world with the original Realm at its heart, and a Hollow King to end. Winner of the Rare Friends Vibeathon.
An old-school adventure starring the Rare Friend you own: twenty-one skills, twenty quests, a continent of a world with the original Realm at its heart, and a Hollow King to end. Winner of the Rare Friends Vibeathon.
East of the old coast, where the sun comes up first, lie the Mizukai Isles: Hinode, the Isle of Sunrise, and thirteen
islands round it. Kurohama's black-sand harbour, the castle town of Takamori, the Thousand Steps up Mount Kumo to its
shrine, Tanabe's rice terraces, the Yumoto springs, the Whispering Bamboo; the fox gates of Morishima, the Lantern Isle,
the burned fortress of Josaki, the ogres of Ashigane and the white island, Hakkotsu. Boats run between every landing
for coins: you see the fare before you board and pay once, in the same step that carries you. Mizukai Faith and Magic
(vows, blessings, purification, spirit wards and rites; seals, bindings, barriers and crossings) can be kept in place of
the Realm's from the top of the prayer or spell book, anywhere, and set down again, like Raria's Law. Sixteen quests,
three dungeons, twenty-three original spirit creatures, katana, naginata and the tall Mizukai bow forged from tamahagane,
five new herbs, and ten new pieces of music for koto, shamisen, shakuhachi, sho, temple bell and taiko.
Dawn over Kurohama
The Hall of Takamori
The Thousand Steps
The fox gates of Morishima
The Lantern Isle at night
The ogres of Ashigane
New: real lighting, the Order of the Dawn, and a Realm that dresses up
The Realm is lit for real now. The sun crosses the sky and everything casts a shadow that follows it: buildings,
walls, trees, rocks, characters and mounts, long and golden at dusk, short at noon, faint under the moon. Lamps,
torches, fires, forges and spells light the ground and whatever stands near them (walls and trees block their light),
light bounces softly round corners in the ground's colour, alleys and forest floors sit in soft ambient shade, lava glows,
dungeons are truly dark, and the distance haze follows the land. The Faith update brings the Order of the Dawn, five
quests, faith weapons and Dawnplate, gold armour you can see on your Friend; and the townsfolk dress up.
Your Friend is the hero. The Friend you select walks the Realm in its canonical on-chain sprite, and its Generations family gives a perk (Hoverers run longer, Skeletons pray better, Colossi hit harder, and so on).
Real lighting. The sun crosses the sky and everything casts a shadow that follows it: buildings, walls, trees, rocks, characters and mounts, long and golden at dusk, short at noon, faint under the moon. Lamps, torches, fires, forges and spells light the ground and whatever stands near them, walls and trees block their light, and it bounces softly round corners in the ground's colour. Ambient occlusion darkens alleys and forest floors, lava glows, and dungeons are truly dark.
The Wider World. The mainland is now the heart of a continent four times its size, untouched itself: the Deadwood to the north (with Gravesend, the graveyard settlement), Westmarch and the Drakespine peninsula to the west with Ashfall, the dragons' country, at its end, Southshore and the Thistle Vale to the south, the Ironreach mountains and The Wilds to the east, the Pale Isles at sea. Seven villages with their own trades, people in regional clothing, shops and quests (Gravesend, Saltmarrow, Hollyhock, Dyemoor, Tallgrass, Cragmaw, Quillhaven); four underground dungeons reached only by their surface entrances; twenty new tracks.
Apothecary. A new skill: herbs by ecosystem (forest, swamp, mountain, Deadwood, Ashfall, coast, desert), cleaned, ground, distilled and brewed into tonics, boost potions, antidotes, antifire, stealth draughts and weapon poisons that matter (soft creatures feel them more, the undead only wraith poison; adders and cave spiders poison you back), and nine rare Friend mixtures, one per family, each with that family's own nature.
Presence, names and fellowships. A new skill shown as a character profile: name your Friend (the token id never changes, and sits small under the name), found a fellowship with a tag, earn titles by level and deed, and watch reputation grow with every settlement. Presence comes from discovering, questing, bosses, rare finds, people met, emotes, clothes worn and time with your Friend.
The Heartguard, Dawnhold Keep and the Old Friend. Red-and-white Heartguard armour from Mender Hale at the chapel, a piece every ten Hitpoints levels to the blade at 90: each adds a hitpoint and quickens healing, the full set makes food heal more, and the blade heals as it cuts. Dawnhold has a two-storey keep with corner towers joining its chapel and hall, and a taller chapel with a bell tower. Every altar has a statue of the bearded Old Friend behind it.
The Wayfaring update and the Warden's creatures. Agility is now Wayfaring: run energy comes back faster and drains slower as you level, hard obstacles can be slipped on, and there are three courses (Friendhollow, the Oasis dunes at 30, Frostpeak ice at 55). Laps pay Wayfarer's marks that Coach Skip trades for the Wayfarer's outfit (each piece with its own knack) and waybread. Five new Slayer-only creatures each drop their own armour set with a set effect: Bramble thorns, Wightbone faith, Stalker's stealth, Cindershell fire-proofing and Hollowthread sigil-saving; the Warden sells bracers and longer tasks.
Simulated. Caskets use the SDK's preview RF ledger; no contracts or transactions.
Wallet / network
Browser wallet on Robinhood mainnet (chain 4663) holding a hardwired Generations NFT (generation ≥ 1)
More screenshots
(From before the new lighting.)
Title screen
Right-click menus
Talking to the Realm Guide
Woodcutting
Fighting Grumblins
Skills
Emberforge
Frostpeak
Glass Lake
Market Street
Night in Friendhollow
A mastery cape (and a bow)
The Rare Market
The Wizards' Tower
Wyrmreach and Old Cinder
Playing together
Right-click another player
Trading
Fighting the same cow
A skill guide
The recipe book
Every item, redrawn
Pixel-art buildings
Right-click in every interface
Friendhollow Castle
King Hollis's throne room
On the castle roof
The Oasis
Murkmire Crypt
The Hollow King
Bank
World map
Rare Caskets
Smelting at Emberforge
Level up!
The adventurer card, ready to post on X:
How it plays
Connect, pick your Friend, press Begin. The main theme plays over a flight across Friendhollow; your saved adventure is listed if you have one.
Click to act. The top-left text shows what a left-click does. Right-click (or long-press) anything for every option. WASD walks; ← → turn the camera and ↑ ↓ tilt it (or hold the scroll wheel and drag); click the compass to face north. R toggles run; M opens the world map.
Gather and make. Chop trees and light the logs, fish at Glass Lake and cook on a range or your own fire, mine in the Ashen Hills and smith at Emberforge, tan hides and craft armour, cut gems.
Fight. Pick a style (Accurate, Aggressive, Defensive, Controlled), eat when you're hurt, pray at altars. Monsters retaliate, some attack on sight, and all drop loot. Magic uses sigils, and staffs autocast.
Quest. Yellow markers float over quest givers. The quest journal tracks every step.
Train your Friends. Owned Friends can follow you from the Friends tab. The Relic keeper in the castle's great hall sells Rare Caskets. King Hollis receives visitors upstairs.
Share. The adventurer card (Worn equipment tab) shows your Friend, levels and quest points. Post to X, copy or save it.
Character Spotlight. The verified Generations NFT is the star: it's the hero on screen, drawn from its
canonical on-chain sprite with walk cycles in four directions, and in dialogue, the title screen and the adventurer card.
Its family sets a perk that changes how you play. The SDK's sample Friends appear as characters too: Old Glimmer
(#7730) and Brother Ossic (#3412) give two of the quests. Owning more Friends matters: each one can follow you,
drawn with its own canonical art, and adds XP by generation (Gen 1 +5% … Gen 5+ +1%).
Token Activity / Economy Potential. Every RF action goes through the SDK's reviewed chance-game client, simulated and clearly labelled:
RF sink: a Rare Casket costs 1 RF and returns 0.88 RF in expected value; 12% of each purchase stays with the game as prize stake. Buying ×5 is supported.
Keep or redeem: relics keep a fixed RF value with no expiry, but only boost you while kept (+2% XP, +10% coins, 10% faster gathering, or +10% XP with a golden aura). Each casket reserves 5 RF, so redemptions stay funded.
Wardrobe: each casket also grants one of 12 RF-exclusive pieces (capes, crowns, a hood, a halo, a bow, wings, auras and a lantern familiar), painted into your Friend's own sprite so they sit exactly on its head, shoulders and neck. They carry no RF value, so they need no prize reserve. Duplicates become coins.
Two currencies: coins are earned in the world and never convert to RF, so the game is complete without spending. RF gives bonuses and looks. It's a boost, not a paywall.
Future integrations (not in the SDK v0.1.4 API):
Idea
Needs
Trading between holders (a Grand Exchange for Friends)
Cross-player actions and transfers
RF-priced cosmetic wardrobe with part burned
A cosmetic purchase action with RF burn
Live caskets with Dice RNG
The existing live chance-game contract flow, after Rare Friends review
Boss kill leaderboards and seasonal events
A shared score service
Run it
Needs Node.js 22+, npm and Git. On Windows, use WSL2 Ubuntu, as the FriendSDK README describes.
git clone https://github.com/M4S4T0-V01D/rarefriends-realm.git
cd rarefriends-realm
npm ci
npm run dev # http://localhost:4173 · npm run dev:lan to play from a phone on the same Wi-Fi
npm run build # static site → games/rarefriends-realm/.friendsdk/
On a phone, open the Pages link in a wallet app's in-app browser (for example MetaMask Mobile) and play in landscape:
tap to act, long-press for the options menu. FriendSDK is vendored as vendor/rarefriends-friendsdk-0.1.4.tgz, the
official v0.1.4 release archive (see NOTICE.md). .github/workflows/pages.yml runs every check below and
deploys to GitHub Pages on each push to main.
Checks
npm run typecheck # tsc strict (game, host and preview page)
npm test # engine tests: XP curve, world generation and reachability of every landmark, pathfinding,
# WASD, right-click menus, woodcutting/firemaking/cooking, fishing, mining/smelting/smithing,
# combat and loot, aggression and safe death, two quests end to end, thieving, a Wayfaring lap,
# magic (combat, curses, Rootsnare, Gilded Touch, Forgeheart, enchanting, Far Reach, Bonebloom, glides),
# prayer, shops and the bank, saves (round trip, tampering, pre-rename ids), caskets, a follower walking your trail,
# music unlocks, the castle stairs up to King Hollis and the roof, Ranged (bows, arrows, range), Slayer
# (tasks, XP, points, Slayer-only creatures), mastery capes (99s, trims), Rare Market bundles, tablets and lamps,
# Fletching (shafts, headless arrows, arrowheads from the anvil, arrows), Sigilcraft (endless sigil stone,
# altars, levels), dragonfire and the Wyrmward shield, merchants' prices, the Archmage's starter kit,
# Faith (offerings, faith weapons' Faith XP and the undead bonus) and all five Order of the Dawn quests;
# and the preview build (runtime.js, game.js) carries no transaction-capable code
npm run check # friendsdk check
npm run test:browser # SDK mock-wallet browser runs of the custom host (a two-Friend wallet):
# • title screen, real mouse clicks (chop a tree), right-click menu, dialogue, WASD walking, chat over your head
# • camera: arrow keys turn and tilt, middle-drag turns, WASD follows the angle, the compass turns north to the top
# • a level-up, smelting at the furnace, a shop, finishing A Friend's Feast (quest-complete scroll)
# • combat by right-click, bank deposit/withdraw, world map, 5 caskets via the runtime's confirmations
# • real clicks up the castle's spiral stairs to the throne room and the roof
# • a Rare Market bundle bought from a trader through the runtime's confirmation; Market Street, a mastery cape, nightfall
# • adventurer card → Post to X (prefilled post + picture copied), a follower, a 14-region tour
# • save written for the wallet and Friend, reload → "Continue your adventure"
# • a phone in landscape (844 × 390, touch): tap to walk
# • two players in two tabs: they see each other walk, right-click menu, Add-friend, the party bonus,
# public chat and bubbles, whispers with links stripped, an emote, a dropped item taken,
# a full trade by clicks (offer, accept, confirm), a shared fight on one cow, a referral code, going offline
# • the skill guide (click a skill) and the recipe book; the website's skill guides page
# • preview page: the main theme and a jukebox track play audibly on desktop and phone; the video
# carousel (newest update first, the reel of what's next, sound kept from one video to the next)
# and the picture galleries (every picture in a filmstrip, wrapping round)
node scripts/preview-backdrops.mjs # repaint the preview page's parallax backdrops (castle, sky, street, forest, dungeon,
# torches) from the game's own pixel art into site/preview/media/bg
The mock wallet exists only in tests. dev and public builds always use the real ownership gate.
How the host extends the SDK
The runtime page is the SDK's own GameHost: wallet connection, owned-Friend picker, fresh
readGenerationEligibility check, simulated ledger, confirmations and the allow-scripts sandbox.
host/runtime.tsx adds five things the SDK doesn't supply:
Owned-Friend roster. A read-only watcher (eth_accounts only) runs the SDK's account-filtered readOwnedFriends (with retries for public-RPC rate limits). It never scans the collection.
Per-wallet saves in the trusted page's localStorage (the sandbox has no storage), keyed by wallet address and Friend, so each of your Friends has its own adventure.
Cloud saves (host/cloud.ts, the cloud/ Worker). Verify your wallet once and the browser save is mirrored to the Realm's save service, so the adventure follows the wallet to any device. It is versioned (an older save never overwrites a newer one; two diverged copies are put to the player), imports existing adventures once, and falls back to the browser save when offline. It is not a game server: multiplayer stays peer to peer. See cloud/README.md for auth, ownership, the NFT-transfer policy, what the server can and can't check, and backups.
Playing together (host/net.ts), below.
Sharing the adventurer card. On your click, the page uses the share sheet (phones) or copies the picture and opens a prefilled X post (desktop). Nothing posts without you pressing Post.
The game receives the roster and save only over postMessage from its parent window, and uses them only if the
roster contains the Friend the runtime just verified. Saves are validated on load. There are no transactions or
approvals; the one wallet prompt is the optional cloud sign-in, a plain message the page checks word for word before
the wallet sees it (tests/preview-bundle.test.mjs keeps the published build to that). Under the plain SDK CLI (npx friendsdk dev / test), the game runs without these extras.
Rendering modes: Normal and WebGL
There is one game with two ways of drawing it. The choice is in Settings → Rendering mode:
Normal is the default. It is the canvas renderer the Realm has always had.
WebGL draws the same world on the graphics card (gl.ts): blended ground, shingled roofs, and every sprite lit where it stands.
Everything else is shared, untouched by the choice:
the game state and rules (engine.ts, state.ts, the content files)
the character, saves (browser and cloud) and imports
multiplayer (host/net.ts), settings, input, audio and translations
How the renderers fit together. The renderer only reads the game state.
render.tsrenderScene draws a frame.
With a RealmGL passed in, it sends the ground, walls, roofs and sprites to the GPU, and draws everything else on a transparent layer over the GPU's picture.
Without one, it is the canvas renderer, unchanged.
Normal mode never creates a WebGL context. A frozen-clock pixel comparison of eight scenes against the build before the merge (tests/parity-browser.mjs) shows Normal unchanged. The only differences are those a build has with itself from run to run: people walking, and the Friend's random remarks.
Switching is a change of view, never of game.
The save is written first.
The draw loop is torn down.
The canvases are made anew. A 2D canvas can't change its transparency, and WebGL needs its own canvas.
In Normal, the old GPU context is released (RealmGL.dispose). In WebGL, a new GPU renderer is made.
The game object itself is never touched. If WebGL2 isn't available, or its context is lost mid-game, the Realm says so and carries on in Normal.
Settings are kept by the host page. The sandbox has no storage of its own, so the host keeps them per browser (rarefriends-realm:settings:v1; SETTINGS_WRITE / SETTINGS_STATE in roster.ts). Before this, settings started afresh every visit. The rendering mode is a per-device choice, because a phone without WebGL2 shouldn't inherit a desktop's.
Addresses.
The plain address opens the Realm in the player's chosen mode (Normal by default).
?renderer=webgl or ?renderer=normal chooses for that visit only.
The old WebGL address (m4s4t0-v01d.github.io/realm-gl/) forwards here with ?renderer=webgl, keeping any invitation in its address. Both are on the same origin, so saves and cloud sign-ins are already shared.
Tests.
tests/renderer-browser.mjs:
switching both ways and ten times quickly (one draw loop, the same character)
WebGL play, and the choice remembered across a reload
a lost GPU, a device without WebGL, and the address
npm run test:browser:webgl runs the whole game tour, multiplayer and cloud saves in WebGL mode.
Playing together
The game frame keeps the SDK's restrictive CSP and never touches the network. The trusted host page connects players
with Trystero: browsers talk directly over WebRTC data channels, introduced to
each other through public Nostr relays, so the static GitHub Pages site needs no server. The host relays to the game
over postMessage, the same way it relays saves.
What's shared: your Friend ID and family, where your Friend stands, what it wears (wardrobe, cape, weapon),
what it's doing, combat and total level, region, and your chat. Never your wallet address.
What's checked: everything from other players is untrusted. The host validates every field (games/rarefriends-realm/net.ts),
limits each player to five updates a second and three chat lines per five seconds, strips links from chat
(anti-scam), and drops anyone you ignore. The game validates again.
Your lists: friends and ignored players are kept per wallet in the host page. Settings → Online turns it off.
Shared fights: every game builds the same world from the same seed, so a monster has the same id everywhere. Each player shares the monster they're fighting (id, HP, position); a game gives its copy the lower HP of the two and walks it to the fight, so both players' hits count and it dies for both. The loot goes to whoever lands the last hit in their own game.
Trades and drops: each game keeps its own inventory. A trade swaps only when both games hold both second-screen accepts for the same offers, and an accept is re-sent for a few seconds so a lost message can't leave half a trade. Dropped (tradeable) items are listed in your presence; another player's Take asks your game, which hands the item over to the first asker and removes it.
What isn't shared: each player's world still runs on their own machine. You see each other and talk, but
monsters, trees and drops are your own. Identities are self-reported Friend IDs (proving them would need a wallet
signature, which this game never asks for).
Tests meet over a same-origin BroadcastChannel instead of the public relays; REAL_RELAYS=1 node tests/multiplayer-browser.mjs
checks two browsers meeting over the real ones.
Known issues and limitations
Saves live in this browser, keyed by wallet address and Friend, and (once the wallet is verified) in the cloud. The game is client-side, so a determined player could still edit their own (simulated) progress: the cloud refuses impossible or implausible saves but can't make that impossible (see cloud/README.md).
Caskets' RF balance and kept relics live in the SDK's session ledger and reset on reload; wardrobe pieces are saved.
Multiplayer shares players, chat, trades, dropped items and the HP of monsters being fought, not the whole world simulation: monsters nobody is fighting wander differently in each game, and each player gets their own loot. Trades have no server referee, so a player who edits their own game could cheat a trade; the protocol only guarantees honest games agree. Friend IDs are self-reported. Peers behind very strict networks may not connect (no TURN relay).
Audio is synthesized in the browser and starts on your first tap. On iPhones before iOS 17, silent mode may keep it quiet.
Wallet support is the SDK's (injected / EIP-6963; no WalletConnect). Phones need a wallet with an in-app browser.
The browser tests use the SDK's mocked wallet. A real-wallet playtest on Robinhood mainnet is still needed; the build environment can't reach mainnet.
Credits
Built for the Rare Friends Vibeathon, where it took 1st place, by M4S4T0 (@M4S4T0-V01D) with an AI coding agent.
FriendSDK and the Rare Friends artwork are by Rare Friends; see NOTICE.md. The world, creatures,
townsfolk, item art, music and sound effects are original procedural code. Gameplay inspired by classic browser RPGs such
as Old School RuneScape; the Realm's places, metals, gems, sigils, spells, prayers and items all have their own names, and
no assets or code from it are used.
Heavy weapons, the ossuary bag and a better quest journal. Greatswords, battleaxes and war hammers take Strength to wield (pewter at 3, 5 and 7, each tier the metal's level more) and swing harder the stronger you are (heft: +1% of the weapon's strength bonus for every two Strength levels). The quest journal groups quests by In progress, Not started and Complete with a quest point bar, steps and rewards. Bones used on an altar keep being offered until you have none left, and the Dawn Vigil's ossuary bag holds 60 bones, catches the ones you pick up and offers them all at once.
The Faith update: the Order of the Dawn. Prayer is now Faith. Knights in white and gold keep Dawnhold, east of Highcairn: keep the Dawn Vigil (offer bones on their chapel altar) and bring back their broken relic from the golems of the Greyhorn mine to earn the Cape of the Dawn. Faith weapons (Dawnsteel sword, Vigil spear, Radiant greatsword, Sunforged warhammer and three chaplains' staffs) need Faith to wield, train it a little with every hit, and hurt the undead harder. Offer bones on any altar for twice the XP of burying.
Dawnplate and the Order's quests. Three more quests for the Order of the Dawn (a pilgrimage to the Realm's old altars, laying the crypt's dead to rest with a faith weapon, and sealing the Hollow's gate) award Dawnplate, gold armour with white trim. Armour now shows on your Friend: breastplates with shoulder plates, vests, robes and greaves, and helms closed at the back.
Capes, hats and amulets. Threadneedle Tailors on Market Street sells capes in ten colours and seven patterns, wizard hats in six colours, feathered caps and traveller's hats. Amulets hang round your Friend's neck, weapons are held beside your cape from behind, and the castle guards wear helms and red capes and carry battleaxes.
Real clothes, boots and gauntlets. Ribbon & Rye Clothiers on Market Street sells shirts, belted tunics, dresses, trousers and skirts; boots and gauntlets come in every metal and in Dawnplate; everything you wear is drawn on your Friend, with helms fitted to its head and barding for four-legged Friends.
Townsfolk who dress up. Villagers wear their own hats, capes and amulets and some carry axes or pickaxes; tradesfolk dress for their trades, and the castle guards wear helms, breastplates and red capes. Health bars only show in a fight.
Twenty-one skills on the classic curve. Attack, Strength, Defence, Ranged, Hitpoints, Magic, Faith, Sigilcraft, Woodcutting, Fletching, Fishing, Cooking, Firemaking, Mining, Smithing, Crafting, Stealth, Wayfaring, Slayer, Apothecary and Presence, from level 1 to 99. Bows fire the arrows in your pack; Fletching makes shafts and bows from logs and finishes arrows with heads smithed at the anvil; Sigilcraft presses sigil stones into the sigils magic runs on, at eleven altars across the Realm; the Slayer Warden hands out tasks and some creatures only a Slayer can wound; Stealth lets you sneak past aggressive monsters on your run energy (XP for slipping by unseen, a hit if you're spotted), strike from the shadows, pick pockets and rob stalls, and one day find the Veilweave hood that fades you almost to nothing when you stand still. Reach 99 and buy that skill's mastery cape from the Keeper of Capes (trimmed once you've mastered two), worn on your Friend with its skill's emblem on the back.
Referral codes. Your code is RF-<your Friend #> (Friends tab). A new friend who enters it and you each get 250 coins, the Friendship cape (with its own Friendship emote: hearts and a pink sunburst) and +15% XP for an hour of play; you get yours the next time you're online together, for every friend you bring (up to five a day; any more are credited on a later day).
Skill guides and a recipe book. Click any skill for everything it unlocks, level by level, with your progress ticked off; the recipe book lists every recipe with its ingredients and a "can make now" filter. The same guides are on the website.
Old-school controls. Left-click does the first option; right-click lists them all (Chop down Tree, Attack Grumblin (level-5), Talk-to, Pickpocket, Examine), in the world and in every interface: inventory, bank (Withdraw-1/5/10/All), shops (Value, Buy-50, Sell-10), equipment, spells (Cast, Autocast), prayers, production (Make-All), the compass (Look North/East/South/West) and the minimap. WASD walks; the arrow keys (or a scroll-wheel drag) turn the camera and tilt it from overhead down to almost ground level, scroll zooms in close to your Friend, and the compass turns north to the top of the screen. Use items on things. Minimap, run orb, world map. Health bars show only while fighting.
A large, living world. A 350 × 200 tile island (it swells east into mountains, with a ragged coast) with 17 regions and 2 dungeons: towns, a mountain town, farms, forests, a woodcutters' village, a mine, a forge, snowy peaks, a lake with a pier, dunes and an oasis, a swamp, ruins, the Wizards' Tower, the ash fields and lava of Wyrmreach, a crypt and the Hollow Depths. The land rolls in walkable hills (lit by slope, with ink contour lines) and you can see a long way across it before the haze, and it's alive: cloud shadows, birds, butterflies, falling leaves, snow, blowing dust, fireflies, jumping fish and forge smoke.
Real buildings, in pixel art. Walls and roofs are textured in the same chunky pixels as the trees and rocks: half-timbered plaster houses with oak beams, stone keeps in brick courses, leaded windows, scalloped shingle roofs and smoking chimneys. The ground matches: grassy tufts, pebbled paths, cobbled streets and flagstones, and furnaces are brick kilns with fire in the mouth. Roofs lift away as you walk in, walls in front of you drop to a cutaway, and a roof fades whenever it would hide you.
A bigger Friendhollow. Market Street with an armoury, a weaponsmith, a bowyer and the Slayer lodge, an inn, and the Rare Market.
Day and night. A 24-minute day: a sun that rises in the east and sets in the west, golden dusks and blue nights lit by lamps, torches, fires and your own small light. A clearer minimap in stronger colours.
Weather. Rain, storms with lightning and thunder, and morning ground fog, from the real clock, so every player shares the same sky.
The Wizards' Tower. East of the river: mine sigil stones on the ground floor, a Rare trader in the library, and Archmage Solenne at the top, who starts every new Friend in magic with robes, a staff and a pouch of sigils. Sigils are cheap now, and elemental staffs stand in for them.
Dragons. Wyrmreach, north-west past the deep woods: ash drakes, cinder drakes and Old Cinder (level 148) asleep in a lava crater. A third of a dragon's attacks are fire; ask King Hollis for a Wyrmward shield. Drake bones are the best to bury, and drakehide makes archer's armour. Three more kinds live further out, each with a wyrm at its heart: frost drakes and the Iron Wyrm on the Cragmaw Heights, bone drakes and the Bone Wyrm in the Deadwood's Bonefield, and dune drakes over Qeshet, a ruined city half under the Sea of Dunes, with the Sand Mother in the Sunken Halls beneath it. Ysolde's quest Scale and Fire opens her wyrmwright trade: Drakeward shields no breath gets through, and Wyrmbane arms that hit dragons a third harder.
Gold to be made. Merchants pay well for their trade: Pike for fish, Axel for logs, Emberforge for ore, bars and arms, Runa and the Tower for sigils, Tessa and the bone collector for hides and bones, the Oasis for gems, and Wren for bows and arrows.
Friendhollow Castle. A three-storey keep with four spired towers north of the square. Click the spiral stairs to climb, old-school style: the kitchen and great hall below, King Hollis's throne room, the royal library, his bedchamber and a tower bank on the first floor, and battlements on the roof with a view over the whole town. Each storey is drawn on top of the one below, and the storeys above you lift away.
Sound everywhere. Weapon swings, a voice for every creature, axes and picks on the beat, NPC speech blips, footsteps by ground, crackling fires, the forge, water, and regional wildlife.
Your headgear shows. Whatever helm, hood, hat or crown you wear is drawn on your Friend (and seen by other players), so everyone has a look even without RF cosmetics; a wardrobe hat goes on top.
Pixel art in the Rare Friends style. Trees, rocks, decor, buildings, and every item (shaded on one light, with metal glints and gem facets), weapon, skill, spell and prayer icon are pixel art with an ink edge (and the white halo of the canonical sprites), drawn procedurally. Skills animate: axes swing and chips fly, pickaxes spark, lines are cast, anvils ring, fires crackle, agility hops.
Magic that looks like magic. Spells fly as their element: a licking flame bolt, a curling wave, a spinning whirlwind, a tumbling boulder, a curse's eyed smoke, trailing embers, droplets and grit and bursting on impact; fires and torches burn in a flickering pixel fire drawn after a community artist's sprite; staffs are held upright and raised as you cast. At night and in dungeons (now truly dark) spells, arrows, dragonfire, torches, fires and your own light all light the ground.
A real spellbook. Darts, Lances and Bursts in four elements; curses (Muddle, Wilt, Brittle) and Rootsnare; Gilded and Golden Touch, Forgeheart, Far Reach, Bonebloom, two enchantments and six ways to travel, paid in sigils.
Twelve quests from baking for the Realm Feast and winning back Hazel's quiver to keeping the Dawn Vigil and defeating the Hollow King (level 92) in his throne room.
A soundtrack for every region. Twenty-one procedural tracks in an old-school MIDI style (recorder, oboe, harp, pizzicato strings, glockenspiel, timpani), including a hand-written main theme, plus level-up and quest fanfares, synthesized live in WebAudio. Entering an area unlocks its track ("You have unlocked a new music track"), and the music player replays any you've found.
Play together. Everyone playing right now shares the Realm: you see other players' Friends walk around in their wardrobes and capes, chat in public (bubbles over their heads) or whisper (@1234 hello), and right-click a player to Follow, Trade with, Add-friend, Message, Wave, Ignore or Examine. Fight the same monster together (both players' hits count, and you see each other's health bars), trade items old-school style (an offer screen, then an "are you sure?" screen), pick up what other players drop, and perform 14 emotes they can see (dance, cheer, cry, jump for joy, the Skillcape emote…). A friends list shows who's online and where, and friends near you add +5% XP. Peer to peer, no server: see Playing together.
A guided start and a graphics setting. New Friends get seven quick first steps with a gold arrow showing the way (a tree, a fire, a fish, the horses, the King, the Realm Daily) and a reward at the end. Settings → Graphics (High, the default, or Low): Low keeps High's textures and lighting (without the cast silhouettes and far haze) and stays well under High's cost. Graphics never change by themselves.
A world boss. The Ashen Colossus (level 210) rises in Wyrmreach every two hours, on the even UTC hours, and stays twenty minutes, so everyone online meets it at once. Its HP is shared, and everyone who wounds it gets the loot, whoever lands the last blow. The Realm Daily shows when it's next due.
Duels in the Sparring Ring. A fenced sand ring east of Market Street: step inside and right-click another player to Fight. Duels are safe (the loser is back on their feet at full health and nothing is lost), and your wins and losses are counted.
Pets, achievements and hiscores. Six pets turn up by chance while you train (Stumpy from woodcutting, Pebble from mining, Bubbles from fishing, Mote from Sigilcraft, Emberling from dragons, Cinderkin from the Colossus) and follow you like an old-school pet. 32 achievements (skills, combat, quests, collecting, together, daily) are on their own tab and on your adventurer card. Hiscores in the Friends tab rank you against every player you've met.
The Realm Daily. A login streak with rewards on a seven-day cycle (up to a Lamp of insight and 5,000 coins on day 7), three daily challenges shared by everyone with a chest for all three, and an update log that pops up after each update. The 🔥 button by the minimap reopens it.
The Friendhollow stables. Six horses and two unicorns (rainbow-maned and moonlit) for RF. Ride faster than you can run, with hoofbeats and dust, and each mount has a gift: XP, healing, loot, Defence or faster gathering.
Little things. Level-up fireworks that everyone nearby sees; footprints in snow and sand and splashes in the bog; rare drops shine with a beam of light and a chime; when a friend near you emotes, your Friend joins in. Helms, hats, shields and weapons are painted into your Friend's own pixels and move with it.
Fernwick, crossbows and war bows. A woodcutters' village in the heart of Whisperwood with Hazel's War Bows (the only place selling war bows), a timber yard that pays the best price for logs, a bank, a willow pond and archery butts. Crossbows come in six tiers: metal limbs from the anvil fitted with Crafting to a stock carved from logs (pewter on a plain stock, blackiron and ashsteel on oak, moonsilver on willow, glimmer on maple, rarite on yew). They fire bolts, shoot slower and hit harder than bows, and leave a hand free for a shield. War bows are a heavier bow for every wood (two logs): slower, harder hitting, a tile more reach; the plain one needs Ranged 5. The quest Hazel's Quiver rewards a quiver worn on your back that calls four in five arrows and bolts straight back to your pack.
Forged gear, levels 50 to 90. Six metals above rarite (Frostsilver, Gloomsteel, Wyrmscale, Hollowsteel, Cindersteel, Ashenheart), smelted from what the strongest creatures drop (frost shards, gloom shards, wyrm scales, Hollow essence, cinder cores, Colossus embers) and smithed at Smithing 86–99 into full sets of weapons, armour, axes and pickaxes, staffs, crossbows, arrows and bolts, each glowing in its metal's light.
Bank tabs, a coal satchel and a Grumblin head. Drag bank items to rearrange them or file them into up to nine tabs. The inkcoal satchel, worn on your back, holds 120 inkcoal, fills as you mine and feeds the furnace. Grumblins very rarely drop a Grumblin head you can wear. New Friends can fish at the Millpond by the windmill, and cooking burns far less while you learn.
Two-handed weapons and new creatures. Greatswords, battleaxes and war hammers in every metal (slower, harder hitting, no shield), smithed or bought at Heft & Haft. Forest spiders, wild boars, sand scorpions, highland goats and stone golems, each with a drop only it gives (a spider-fang dagger, Tusker axe, Horned helm, Stinger sabre, Golem maul), plus Grumblin spears and moss colossi's Mossy staffs and Mossblades.
Highcairn and the Greyhorn Highlands. East of the Pale Dunes the island climbs into snowy, walkable mountains around Highcairn, a stone town with a bank, stores, an inn, a forge, a shrine and a Rare Market trader, and the Greyhorn mine above it.
Sheep, wool and string. Shear the sheep in the pen by the farm, spin the wool into string at a spinning wheel (Crafting 1), and use it to string bows (cut unstrung from logs) and gems into amulets.
The sigil stone box. Carry it and mined sigil stones go into it (up to 120); an altar presses them all. At the bank, right-click it (or the inkcoal satchel) to fill it straight from the bank.
Ruins in the wild. Crumbling old houses, broken round towers and runs of ancient wall across nine regions: mossy in the woods, sun-bleached in the dunes, snow-capped below Frostpeak. The Wizards' Tower now rises high under an eight-sided spire.
Pixel-sprite spells. Fire flies as a little torch flame, water as a teardrop, wind as a spinning whirl, earth as a tumbling boulder, curses as a knot of smoke with eyes.
Trade and sell. General stores in four towns buy almost anything, every trader buys back what it sells, and what you sell sits on the shelf to buy back.
Your other Friends follow you, walking the tiles you leave behind like an old-school pet and adding XP by generation. Rare Caskets (simulated $RAREFRIENDS) hold relics and wardrobe pieces, and Rare Market traders in seven places sell nine bundles (tablets, food, XP lamps, Slayer points, a bow and arrows, a sigil sack, a fletcher's crate, a dragonslayer's kit, a wardrobe piece of your choice) on top of the caskets. Progress saves per wallet, and a save code (Settings) keeps your whole adventure in one line of text you can restore on any browser. Your adventurer card shows your Friend exactly as in the Realm, and posts to X.