askbot auth
in Factorio chat (or /spectator-chat askbot auth during captain games) to get a token,
then paste it on BB Bets to unlock trading, coins, profile, tournament, etc.
Everything the website does, how the in-game askbot fits in, and how to log in. Click any section to expand.
askbot authMost website features (BB Bets trading, BB Coins transfers, admin actions on markets, future features) require being logged in as your in-game player. There are no passwords on the website β auth happens through the in-game chat bot.
Steps:
askbot auth (or /spectator-chat askbot auth during a captain game).Requires 1+ day of total playtime. The token is one-shot and expires fast β get a fresh one if you take too long.
BB Coins are a soft currency earned passively for time spent on the winning team. They power the BB Bets prediction markets and can be tipped peer-to-peer.
askbot coins β your balance.askbot coins tip <player> <amount> (alias: send) β peer-to-peer tip, no fee, min 0.1c.askbot data <player> β public profile (PnL, last 10 transactions, win/loss bets).Polymarket-style binary & multi-outcome markets paying 1c per winning share. Mid-price = market-implied probability. Fully on-chain (BB Coins).
askbot auth can resolve / cancel any market directly from its page.askbot market list Β· info <mid> Β· orders <mid> Β· shares Β· myorders Β· burnedaskbot market preview buy|sell <mid> <opt> <amt> β fee breakdownaskbot market create winner|duration|custom β¦ Β· cancel <mid>askbot market lp add|remove <mid> <amt|all>askbot auth first, then trade with fee preview.askbot market help trade|lp|fees|create|info|admin β section-specific help.Organised PvP: two volunteer captains pick teams one by one, fixed rosters, larger coin bonus rates. Most Saturdays at 1700 CET. Streamed weekly with Ghostie on twitch.tv/og_gh0stie. Captains have ultimate authority on team strategy β listen to them or get booted.
captain_win_bonus.php, ~30sβ2 min after game-end.@name.To register, watch the captain-game lobby in-game / on Discord. Community-picks games happen when no one volunteers β every non-spectator ranks every player and teams are auto-balanced.
The Draft analytics section on the captain page surfaces who is over- or under-drafted relative to their actual win contribution. Three numbers do the work:
DRAFT_MIN_PICKS picks are scored.Tiers T1βT5 are pure APP quintiles over the qualifying pool β nothing to do with win rate, skill, or PVAP. Computation:
floor(NΓ1/5), floor(NΓ2/5), floor(NΓ3/5), floor(NΓ4/5).Tiers are then mapped onto every player (including small-sample ones) using the same cutoffs, so the broader table uses the same buckets. Sleepers are flagged when tier β {4, 5} (picked late) and PVAP > 0; reaches when tier β {1, 2} (picked early) and PVAP < 0.
Captain Draft IQ = per-captain average of the PVAP of every player they ever picked. Positive β consistently spots sleepers; negative β consistent reaches. Independent of which side of the draft was theirs β it's measured against the league slot baseline.
The most-trafficked pages on the site β over 200k hits per category every 100 days.
askbot science topscore Β· science <player> Β· challenge Β· challenge topThe "online" count is the canonical source: refreshed every 60s via RCON, stored in the po table. Used by the homepage counter and by the status page.
Status page β auto-refreshes every 30s.
Visible only when logged in via askbot auth as a player in the Factorio admin list:
The flagship competitive event. Organisation, brackets, schedule and replays live on the dedicated site:
Past BB Champions tournament site (bbchampions.org) is now offline.
REST + WebSocket access to the BB Bets engine for scripts and bots. Same fees, slippage caps and balance checks as the web UI β no parallel implementation.
Visit /science/api-tokens (after askbot auth) and click "Generate". Token shown once; cap 10 active per player.
Authorization: Bearer bb_<64-hex>
Default scopes: read,trade. No admin scope yet (resolve/cancel stay web-only).
Uniform envelope:
{"error": {"code": "INSUFFICIENT_BALANCE", "message": "..."}}
Codes: UNAUTHENTICATED, FORBIDDEN, INVALID_ARGUMENT, INSUFFICIENT_BALANCE, INSUFFICIENT_SHARES, NOT_FOUND, MARKET_CLOSED, SLIPPAGE_EXCEEDED, OUT_OF_RANGE, COOLDOWN, RATE_LIMITED, CANCEL_FORBIDDEN, METHOD_NOT_ALLOWED, TRADE_REJECTED, INTERNAL.
/api/v1/me β auth check + balance./api/v1/balance β earned/lost/locked breakdown./api/v1/markets β list. Query: status, category, limit, cursor./api/v1/markets/{id} β full detail (pools, prices, k, fees, my_shares, my_orders, my_lp)./api/v1/markets/{id}/orders β public order book (no player names)./api/v1/orders β your orders./api/v1/transactions β your tx history./api/v1/pnl β per-market PnL Β· /api/v1/pnl/summary β aggregate./api/v1/game-state β live round snapshot: running, started_at, age, difficulty, players (online/active with freshness), open_winner_market./api/v1/buy β {market_id, option_index, coins, max_slippage_pct?}/api/v1/sell β {market_id, option_index, shares, max_slippage_pct?}/api/v1/orders/place β {market_id, side, option_index, price, amount}/api/v1/orders/cancel β {order_id}/api/v1/markets/create β {category, lp, options?, initial_prices?, title?, duration_minutes?, production_meta?} Β· 1 market / 15 min cooldownOptional Idempotency-Key header (any string β€128 chars) β replays within 24h return the cached response with the original status code. Rate limit: 60 req / 60 s per token (HTTP 429 + Retry-After).
wss://biterbattles.org/bb-events
Token is sent as the first text message after connect (never appears in proxy logs):
ws.send("auth bb_<your_token>");
// β {"kind":"auth_ok","player":"...","scopes":["read","trade"]}
// or {"kind":"auth_error","reason":"..."}
ws.send("sub 0"); // firehose: every game / market / trade event
ws.send("sub 391"); // per-market: only events for market 391
// Event payload:
{"id":N, "kind":"new_trade", "market_id":391, "player":"X",
"data":{...}, "at":"YYYY-MM-DD HH:MM:SS"}
ws.send("ping"); // β {"kind":"pong"}
ws.send("unsub 391");
Caps: 50 connections / IP, 10 / authenticated player, 20 subs / connection. Pre-auth idle > 30s β close.
TOKEN="bb_..."
# Buy 1c worth of option 0 (e.g. North) on market 391
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"market_id":391,"option_index":0,"coins":1.0}' \
https://biterbattles.org/api/v1/buy
# Get market detail
curl -H "Authorization: Bearer $TOKEN" \
https://biterbattles.org/api/v1/markets/391
# Place + cancel a limit
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"market_id":391,"side":"buy","option_index":0,"price":0.4,"amount":2}' \
https://biterbattles.org/api/v1/orders/place
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"order_id":47}' \
https://biterbattles.org/api/v1/orders/cancel
# Create a custom market
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"category":"custom","lp":5,"options":["Yes","No"],"title":"Will North win?","duration_minutes":60}' \
https://biterbattles.org/api/v1/markets/create
Tokens leaked? Revoke from /science/api-tokens β instant; existing WS connections drop on next heartbeat.
Type these in the in-game chat. During a captain game, prefix with /spectator-chat to whisper the bot privately.
askbot auth β get a one-shot token to log into the website.askbot data <player> β public PnL / coins / bets summary.askbot vs <playerA> <playerB> β head-to-head over the last 90 days: games together, games faced, who won. Full top-10 allies / rivals on the player profile.askbot coins β your balance.askbot coins tip <player> <amount> (alias: send) β tip, min 0.1c.askbot market list Β· info <mid> Β· orders <mid> Β· shares Β· myorders Β· burnedaskbot market preview buy|sell <mid> <opt> <amt>askbot market help trade|lp|fees|create|info|adminaskbot market create winner|duration|custom β¦ β open a market.askbot market cancel <mid> β cancel (creator if no trades, or admin).askbot market lp add|remove <mid> <amt|all> β provide / withdraw liquidity.askbot market resolve <mid> <opt> β admin-only force resolve.askbot auth then the website.askbot science topscore Β· science <player>askbot challenge Β· challenge topaskbot elo` (backtick) β open chat / command window./help β list of all chat commands./admins β list admins online (ping politely if you need trust)./spectator-chat <msg> β whisper spectators only (also used to message askbot privately during a captain game). Tab-complete: /spe[tab]./nth <msg> Β· /sth <msg> β chat to north / south team only (available to spectators too)./shout <msg> β message both teams./calc-send force=<n|s> color=<sci> count=<n> β preview evolution / threat impact of sending science. Auto-fills evo, difficulty, players from current game state. Color aliases: red=automation, green=logistic, gray=military, blue=chemical, purple=production, yellow=utility, white=space. Full form: /calc-send evo=20 difficulty=30 players=4 color=green count=1000./i <category> β scan inventories for items by category (e.g. /i ammo, /i defense). Great for finding who's hoarding./where <player> Β· /follow <player> β locate / spectate-follow a player./clear-corpses β wipes biter corpses (run after big fights to reduce lag)./crafting-list β toggle the personal crafting-queue window./inventory-costs [all] β top players by inventory value (all = both forces)./jail <player> Β· /suspend <player> β admin-only. Suspend = forced spectator for 10 min./announce Β· /announce-append β admin-only, posts text on spectator island./difficulty-revote Β· /difficulty-close-vote [<name|%>] β admin-only, re-open / close difficulty vote./scenario restart|shutdown|restartnow β admin-only, soft-reset / shutdown control./instant-map-reset [seed] β solo-mode (or admin), force a reset; pass a seed (341β4294967294) or omit to print current./current-map-seed β print the current map seed./set-pathfinder bb-default|bb-new|default β admin-only, switch pathfinder preset at runtime.biterbattles.org:34197.%appdata%\Factorio\scenarios\Factorio-Biter-Battles doesn't auto-update β delete the folder and reconnect to refresh.Quick reference focused on what you actually do in-game: rules, strategy, builds, combat. For the full wiki β pictures, blueprints, deeper articles β head to freebb.miraheze.org. Click any section below to expand.
Biter Battles is a scenario ("soft mod") originally written by M3wM3w at Comfy Factory. Two teams (north / south) face off across a central river. You win when the enemy silo dies. You make the enemy biters stronger by feeding science flasks to your own team's scoreboard β those flasks raise the enemy biters' evolution and threat. It's an indirect-PvP speedrun: build fast, build compact, every tile you defend is a tile you have to wall.
Use the in-game /calc-send command to preview how a given send affects evo and threat β it auto-fills evo, difficulty and player count from the live game.
"Difficulty" is how effective science sends are, not how fast biters get strong on their own. Exact values from tables.lua:
| Level | Short | Mutagen |
|---|---|---|
| I'm Too Young to Die | ITYTD | 20% |
| Have a Nice Day | HaND | 35% |
| Piece of Cake | PoC | 50% |
| Easy | Easy | 75% |
| Normal | Normal | 100% |
| Hard | Hard | 200% |
| Fun and Fast | FnF | 500% |
On Normal, lower-tier sciences (green, military) readily bring opponents to 50% evo (big biters β flamers required). On ITYTD, mutagen is only 20% as effective β those games typically run to multiple rocket sends. Effectiveness slowly rises after 3 hours so games eventually end.
tables.lua / ai.lua)Each science type contributes "mutagen strength" per flask. Bigger sciences punch ridiculously harder than reds:
| Science | Mutagen / flask | vs red |
|---|---|---|
| Automation (red) | 9 | 1Γ |
| Logistic (green) | 23 | 2.6Γ |
| Military | 95 | 10.6Γ |
| Chemical (blue) | 292 | 32Γ |
| Production (purple) | 1050 | 117Γ |
| Utility (yellow) | 2205 | 245Γ |
| Space (white) | 4375 | 486Γ |
Threat farmers: each kill removes a fixed amount of threat from your team's pool:
| Target | Threat removed |
|---|---|
| Small biter / spitter | 1.5 |
| Medium biter / spitter | 4.5 |
| Big biter / spitter | 13 |
| Behemoth biter / spitter | 38.5 |
| Small / medium / big / behemoth worm | 8 / 16 / 24 / 32 |
| Biter / spitter spawner | 32 |
health_multiplier_boss = 20 Γ 1.3). Half of late-game waves are bosses.threat_scale_factor_past_evo100).ceil(48 / difficulty_value): ITYTD = 240, HaND = 138, PoC = 96, Easy = 64, Normal = 48, Hard = 24, FnF = 10. Fish always allowed.biterbattles.org:34197.#announcements if unsure.You join as a spectator on the central island. Spectating is the best way to learn; especially in 3+ vs 3+ games. Spectators see only the union of what both teams see β fog of war still applies if neither team has radars.
By default, spectator chat goes to both teams. Ask questions, but don't dominate the chat.
%appdata%\Factorio\scenarios\Factorio-Biter-Battles (delete the folder + reconnect to the server to refresh it β it doesn't auto-update)./instant-map-reset.BP libraries / imports are disabled by design β copy-pasting intricate builds would kill the game. New players also can't use in-game blueprints until they're "trusted":
` (backtick) β open chat./help β full command list./admins β list admins online. Be polite. Especially do what Fordeka tells you./spectator-chat, /nth, /sth, /shout β see the askbot cheatsheet section above.If you're new and don't know what to do, take a defense role while learning the build patterns. Defense is what keeps the silo alive long enough to win.
Each player starts with 10 burner miners. Most teams expand to cover at least one iron, copper and coal patch. Burner miners are more cost-effective than electric in the early game (1 coal of input pays itself back). Don't remove burners while there's still iron in main β counts as soft-griefing. Many players prefer left-to-right placement (mouse motion + burner coal hunger).
Patches typically run a 6:5:2:2 iron:copper:stone:coal ratio (not guaranteed). Pros: all ores in one place, cheap basic intermediates. Cons: unbalanced consumption clogs the system. Strategies:
Three flavors: intercepting waves, extraction (killing spawners β fast threat dump but hard with worms), and proper farming (killing biters near spawners, optionally killing worms). Goal: keep team threat β€ 0 so no waves spawn against you.
Worms / standing spitters lead their shots. Dodge by changing direction after they shoot. The trick:
For captain-games scoring, picking strategy and roles see the Captain Games section above. This section covers the special-game variants admins can spin up.
Variant rule sets β restricted/unrestricted tech, free items, threat tweaks, etc. β set up by admins, often voted by the players online. Announced in #bb-special on Discord.
Most common addition. Lets thin teams reach late-game faster. Typical: armor + power + personal roboport + bots in infinity chests near each silo. You can't interact with the chest directly β drop an inserter onto it.
Belt trick to grab tons quickly: two belts facing each other create jitter; you can grab items off an inserter as soon as it picks one up (before the place animation completes). Holding mouse on the inserter's edge while jittering between the two belts β hundreds of items in seconds.
Most Saturdays at 1700 CET (check Discord events). Captains pick teams one by one, hold final say on strategy. Listen or get booted. Often 50+ players, well-balanced into late-game; experienced players in main and outposts β great place to learn building. Community-picks games happen when no captains volunteer (every player ranks every player; teams auto-balanced).
automation β military β gun-turret β logistic-sci β steel-processing β military-2 (handcraft 20 green) β stone-wall β heavy-armor β logistics β electronics β fast-inserter β steel-axe β PPD-1 β WSS-1 β automation-2 β mil-sci β stronger-explosives-1 β PPD-2 β WSS-2 β adv. material processing β engine β fluid-handling β oil-processing β flammables β flamethrower β refined-flammables-1 β refined-flammables-2.
Same path, slightly different early ordering: automation β military β gun-turret β logistics β logistic-sci β steel-processing β military-2 β stone-wall β electronics β fast-inserter β steel-axe β heavy-armor β PPD-1 β WSS-1 β automation-2 β mil-sci β stronger-explosives-1 β PPD-2 β WSS-2 β adv. material processing β engine β fluid-handling β oil-processing β flammables β flamethrower β refined-flammables-1 β refined-flammables-2.
Most of these are not absolute rules, but if you're new the chances you're applying the exception correctly are slim. Default to following them.
Main owns the team's research. Changing builds without asking, deconstructing, building into reserved space β fastest way to lose friends and get jailed. Before you change anything: understand it, ping the builder with @name, mark the location with Ctrl+Alt+left-click. If it's an obvious mistake (missing pipe / inserter on an otherwise complete build) you can fix it; if you're unsure, ask. Stay in Discord at least to listen β the community can't teach you if you refuse to communicate.
A typical mall supports 2β3 players (usually the lead builders). Sweeping its belts wastes their time waiting for refills. If you're not in a location-bound critical role, use the burner city or spin a small mall outpost on a nearby ore patch β you'll get more resources faster anyway.
Yellow: 15 items/s for 1.5 iron (10/iron). Red: 30 items/s for 11.5 iron (2.6/iron). Red belts cost ~4Γ more iron per throughput, and almost never run 100% full. Sole exception: a specific smelter design that uses red belt instead of undergrounds. Many top players delay red-belt research deliberately.
Sending lab sci slows your own research. Even sending outpost-grown sci can backfire β threatfarmers are most efficient between 20β50% evo, so raising enemy evo while they have negative threat just helps them farm faster.
Outposts belong to whoever started them. Ask. Once invited, follow their rules. Don't be salty if rejected.
Bots will repair walls and die in the process. Walls are cheap; bots aren't. Let walls break and have bots replace them β much faster, fewer bot losses. Exception: special games with free bots.
Bots are scarce; queueing a giant wall hogs them. Use a separate small bot network with a chest of walls right next to the roboport, or build a "wall belt" feeding chests near the wall. Both rebuild walls much faster anyway.
Speed-1 in particular is a power glutton. Save modules for pump jacks and judicious main-builder placements. More assemblers usually beat speed-modded fewer.
Flamers, roboports etc have a natural cap. Unlimited chests will plow iron+steel into items you'll never place. Mall throughput depends on intermediate chests filling up to free room downstream β limit yellow inserter chests to ~2β4 stacks. Always-unlimited: lasers, steel buffers, rocket-part buffers, one yellow-belt chest.
You'll die, lose your corpse, and the resources are gone. Take only what you need; refill from the mall when you survive.
Something missing or out of date? Ping us on the Discord, or contribute to the community wiki directly.