The Trade Routes page now reads real supply and demand data off the running server. Pick your origin and every destination shows a Live Ratio badge and an Estimated Live Profit column alongside the route's max payout.
What you'll see
- Route table for any origin zone now has five columns: rank, destination, max profit, live ratio, estimated live profit.
- Live ratio is the mean across every pack hauled from your origin at that destination.
- Color codes: green for full ratio (no recent sales), gold for moderate, dim red for saturated, deep red at the floor. A small degree symbol after a percentage means "no live reading yet, showing ceiling fallback."
- Footer of every filtered view tells you how many live pairs are tracked and how recent the data is.
- Routes you have not touched stay at the ceiling. Sell ten packs at the same NPC and watch the ratio drop on the next refresh.
Data flow
1. The patched SpecialtyManager writes ratios to aaemu_game_3030.specialty_live_ratios on every consume and regen tick (15-minute default cycle, configurable in Echo).
2. A new Windows scheduled task RookeryIsles-TradeExport runs C:\Echo\scripts\trade_export.py every five minutes. The script pulls the static catalog from compact.sqlite3 and the live ratios from MariaDB, merges them, and writes E:\rookeryisles_com\data\trade.json.
3. The website's lib/trade_data.php reads that JSON and renders the page. No PHP database connections, no per-request DB load.
Result: the website is at most ~5 minutes behind the game server, in practice closer to the game's own tick rate. Players cannot tell.
Layout fix in the same drop
- Landing-page hero rebuilt so the lede, CTAs, and status badges anchor low in the viewport instead of overlapping the image wordmark on 1080p monitors. The fix was pure CSS (
position: absoluteon.hero__below-foldwith viewport-aware clamp). - Scroll hint hidden on the landing variant; the buttons are the clearer call to action.
- Fluid root font curve flattened so common desktops (1440 to 1920) sit near 16-17px root instead of 19-20. Standard 1920x1080 monitors no longer get oversized typography in the nav.
Honest caveats
- The route table aggregates live ratios across all packs from origin at destination. For pack-by-pack precision, the matrix view comes next.
- "Est. Live Profit" is
route.profit (mean_live / ceiling). The literal in-game payout per pack uses bundle math (floor(bundle.profit bundle.ratio / 1000) live_ratio / 100 1.05); we will switch the displayed numbers to the bundle math once we have NPC location data so we can pair packs with the right turn-in NPC per zone. - Live ratio table is empty until the patched game server runs through its first regen tick. Once that happens, refresh
/tradeand you will see real numbers.