Multiplayer & Co-op

⚙️

Implemented in code. Every figure below is a constant read out of Code/Social/ at generation time. Where the source itself marks something unfinished, it is labelled as such rather than described as working.

How multiplayer works

BONKERS is a host-authoritative co-op game. One machine is the host — either the player who started the session or a dedicated server — and it owns the truth: enemy existence, damage, trade confirmations, guild rosters and mail all resolve there. Clients send requests and receive results.

Parties and trades are ephemeral — they live only for the session. Guilds, the guild vault, mail and the player directory are persistent, snapshotted to JSON on the host.

Parties

A party holds up to 4 members. The flow is invite → accept or decline → leave; an invite expires after 15s. The oldest remaining member holds position zero in the roster, and a party dissolves automatically when it drops to one member.

Guilds

Guilds are the persistent social layer, stored in bonkers_guilds.json. Founding one costs 10,000 gold and requires character level 50; joining an existing guild requires level 25. A guild invite expires after 6s.

Membership cap rises with guild level:

Guild levelMember cap
120
225
330
440
550

Three ranks are defined: Guild Master (0), Officer (1) and Member (2). The roster keeps each member's last-known display name so offline members still appear. Guild names are 3–24 characters, letters and digits plus space, apostrophe and hyphen.

Guild vault

Each guild has shared storage of 6 tabs × 48 slots, with rank-based daily withdrawal quotas. Every mutation appends a ledger entry — deposit or withdraw, item or gold, and tab unlocks — recording who did what and when. The ledger holds up to 5,000 entries. The source is explicit that the audit trail is the point, not an optional extra.

Trading

Player-to-player trade runs request → accept → active session. Each side writes its own half of the offer, but the confirmation flags are held by the host, so a client cannot forge a confirm. Editing an offer resets both confirmations, which is what stops the classic swap-at-the-last-instant scam. A trade ends as Complete or Cancelled.

Mail

Mail is a private per-player inbox — unlike loot parcels, nobody else can see it. A message is a container with a recipient: text, gold and item attachments.

LimitValue
Inbox capacity50 messages
Attachments per message5
Postage fee30 gold

Three safety rules are built in: postage acts as a spam brake and gold sink; a full inbox refuses the send rather than silently dropping it; and mail with unclaimed attachments cannot be deleted. Mail can address offline players because the host keeps a directory of every SteamID that has ever connected, mapped to its last-known name.

Chat channels

9 channels are defined: Universal, World, Biome, Party, Guild, Trade, Pvp, System, Whisper. Universal, World, Party, Biome, Trade and PvP are joined by default; Guild is a dynamic tab that appears only while you are in a guild. System carries notifications and has no prefix.

Channel switching and social actions share the slash-command line:

CommandDoes
/join, /leaveAdd or remove a channel tab
/u /w /b /p /t /gcUniversal, World, Biome, Party, Trade, Guild chat
/partyParty actions
/trade <player>Trade action — accept, decline, cancel, or a player name
/g, /guildGuild commands
/tell <player> <msg>Whisper — also /whisper, /pm
/r <msg>Reply to the last whisper

Note that /w is World, not whisper, and /g is guild commands while /gc is guild chat — the source calls both out deliberately.

Category: MultiplayerCategory: Social

Source & verification

Source status: generated from the current BONKERS repository on November 8, 2026. Every figure on this page was read out of the files below at generation time — nothing is estimated, remembered or predicted.

Verification: Implemented in code, not yet playtested. Caps, fees and limits are constants read from source; balance and etiquette are not documented.

  • Code/Social/ — 19 files (Party, Guild, Guild vault, Trade, Mail, PlayerDirectory)
  • Code/UI/ChatChannels.cs
  • Code/UI/ChatBox.razor

Regenerate with python tools/make_wiki_articles.py after the code changes, then python build.py.

Generated from
BONKERS repository — Code/Social/*.cs, Code/UI/ChatChannels.cs
Verified
Generator
tools/make_wiki_articles.py
Status
implemented in code — Implemented in code, not yet playtested