XRP Battlefield · system map
XRP Battlefield, under the hood
Explore how a live trade becomes soldiers, and what takes over when a host refuses, the stream goes quiet or the 3D scene won’t load. The upper half of the map is the live path; the lower half holds every fallback, under the part it protects. Play the tour, pick one of the 10 journeys, or select any part to see what it does.
Verified against the code, 12 October 2026
Journeys10 journeys through the system
Every trade on the exchange becomes soldiers. Follow one from the stream to the balance bar through 30 parts and 36 connections.
By the numbers
- exchange hosts, tried in order
- 3
- streams per pair on one socket
- 3
- of silence ends Live
- 5 s
- to a labelled demo if nothing connects
- 4.2 s
- rounds, with a $1,500 draw floor
- 60 s
- soldiers per side at most
- 250
- interface tests, at 12 screen sizes
- 28
- characters per chat message
- 280
Checked against the code at commit c81e652 on 12 October 2026.
How each number was counted
- 3 exchange hosts, tried in order
- src/core/config.ts and src/core/feed.ts, 12 October 2026.
- 3 streams per pair on one socket
- Trades, top 20 book levels and the ticker, in src/core/feed.ts, 12 October 2026.
- 5 s of silence ends Live
- src/core/feed.ts: a 1-second watchdog, then 3 reconnects at 0.8, 1.6 and 2.4 s, 12 October 2026.
- 4.2 s to a labelled demo if nothing connects
- src/core/feed.ts, 12 October 2026.
- 60 s rounds, with a $1,500 draw floor
- src/core/config.ts, 12 October 2026.
- 250 soldiers per side at most
- src/core/config.ts: 40 at least, and at most 60 from one trade, 12 October 2026.
- 28 interface tests, at 12 screen sizes
- tests/hud-ui.spec.ts: 16 test blocks, two repeated per viewport, from 320 to 1,440 px, 12 October 2026.
- 280 characters per chat message
- worker/index.ts: 1 message per 30 s, 50 messages of history, 3 sockets per address, 12 October 2026.
The journeys, step by step
The same 10 journeys the map plays, written out. Each step names the parts it connects.
01A trade becomes soldiersSimulation · 5 steps
- 1A trade arrives on the trades stream and is parsed. The maker flag says whether it was a buy or a sell.Trades → Combined socket
- 21 to 60 soldiers join the side that traded. While the feed is Waiting, trades are dropped.Combined socket → Trade call-ups
- 3Its dollars push momentum toward that side.Trade call-ups → Momentum
- 4The balance bar slides toward that side.Momentum → Balance bar
- 5Meanwhile the order book sets each army’s standing size: one soldier per $3,800, 40 to 250 a side.Book depth → Army sizing
02A whale tradeSimulation · 3 steps
- 1A trade of $60,000 or more fires a whale. Back-to-back whales escalate, up to x3.Trade call-ups → Whales and volleys
- 2The other side takes casualties, and this side raises a champion.Whales and volleys → 3D battlefield
- 3A banner appears, and the event feed records it.Whales and volleys → Live HUD
03A 60-second round is decidedSimulation · 2 steps
- 1At the end of the round, a net flow under $1,500 is a draw. Otherwise the side with more dollars wins.Round engine → Draw margin
- 2The result card and the round history update, and the next round starts.Round engine → Live HUD
04One host refusesExchanges · 4 steps
- 1The socket tries the first host, and it closes before opening.Combined socket → Binance main
- 2The next host is tried at once.Combined socket → Binance Vision
- 3Then the last one.Combined socket → Binance US
- 4If all three fail, the labelled demo takes over.Binance US → Demo generator
05The stream goes quietFeed · 4 steps
- 1A required stream has been silent for 5 seconds, so the watchdog closes the socket.Stream watchdog → Combined socket
- 2The badge shows Waiting. Rounds and combat freeze.Combined socket → Waiting, Live, Demo
- 3It reconnects after 0.8, then 1.6, then 2.4 seconds.Combined socket → Binance main
- 4On the fourth silent attempt, it switches to Demo.Combined socket → Demo generator
06Nothing connectsFeed · 4 steps
- 1Live needs book depth and a ticker from every pair. A handshake alone is not enough.Book depth → Readiness gate; Ticker → Readiness gate
- 2After 4.2 seconds there is still no complete data.Combined socket → Readiness gate
- 3The demo starts.Readiness gate → Demo generator
- 4The badge says Demo, so nobody mistakes it for the market.Demo generator → Waiting, Live, Demo
07The 3D scene fails to loadRendering · 3 steps
- 1An import or start-up error, or the 30-second time limit, counts as a load failure.Load gate → 3D battlefield
- 2A dialog opens and keeps focus: Retry, Reload or Continue.Load gate → Recovery dialog
- 3“Continue with HUD” keeps the live data running without 3D.Recovery dialog → Live HUD
08Switching marketInterface · 5 steps
- 1The visitor picks XRP/BTC, XRP or BTC, and the market’s own thresholds load.Pair selector → Market config
- 2The simulation resets.Pair selector → Round engine
- 3The socket reconnects to the new pairs.Pair selector → Combined socket
- 4The HUD and the chat labels change.Pair selector → Live HUD
- 5The armies are recoloured.Pair selector → 3D battlefield
09A chat messageChat and hosting · 3 steps
- 1The chat opens a socket on the site’s own API path.Warzone chat → Cloudflare Worker
- 2The chat room checks size, joining and rate limits: 280 characters, 1 message per 30 seconds, 3 sockets per address.Cloudflare Worker → Chat room
- 3The message is stored, the last 50 are kept, and it is broadcast to everyone in the room.Chat room → Warzone chat
10A releaseChat and hosting · 3 steps
- 1The feed tests run on a fake clock, then the seeded simulation checks.Feed tests → Seeded sim checks
- 2Then the 28 Playwright interface tests, including axe and overflow at 12 screen sizes.Seeded sim checks → Interface tests
- 3A type check and a build, then Cloudflare deploys. The order comes from the npm scripts; there is no CI workflow.Interface tests → Cloudflare Worker
Have a live data source nobody can read at a glance?
Tell us about the stream and who needs to act on it. We'll reply within two business days with a first view of what we'd build.