BotChatter WIP (pre-release)

BotChatter WIP (pre-release) for Fun-Bots

Modular chatter packs + Mentions + PG-13 banter + No WebUI conflicts

Branch target: squad-mates-use-full-vehicle-seats-and-more by MatiasPastori (not master)
Status: pre-release / WIP

What is it?

BotChatter adds a lightweight chatter overlay for Fun-Bots with regional packs, personalities, and per-event lines. It aims for readable, PG-13 one-liners without turning chat into noise.

Why no WebUI? The overlay renders via DebugRenderer:DrawText2D. In-game chat forces everything to appear as ADMIN (no unique bot senders), and Fun-Bots’ WebUI is used for admin/path tooling and hooking that cleanly would need a separate vuic. The overlay avoids conflicts and stays scoreboard-safe.

Features

  • Regional packs: AU, NZ, UK, CA, plus a US-style Default
  • Events: kill, headshot, longshot, vehicle/roadkill, multi, streak, spawn, revenge, round start/end
  • Mentions: bots can mention other bots or the player; player mentions are highlighted
  • Personality biasing (Chill / Tactical / Cocky / Sassy) with deterministic seeding
  • PG-13 banter; ASCII-only lines
  • Rate limiting (per-bot) + per-category cooldowns
  • No emissions during teardown (Level:Destroy)
  • Name system integration: regional name packs + runtime regional tagger (dynamic; no tags baked into names)

Download / Links

Install

  1. Back up your existing Fun-Bots mod folder.
  2. Extract the release zip over your server’s Fun-Bots mod.
  3. Load Conquest; you should see a compact chatter overlay when events fire.

Quick config

ext/Shared/BotChatterConfig.lua contains some basic configs

return {
  defaultPack = "Default",
  allowPerBotPackByTag = true,  -- maps [AU],[NZ],[UK],[CA] to packs
  personalityMode = "seeded",   -- deterministic per-bot
  seed = 1337,
  distort = { enabled = true, emoticonChance = 0.12, elongateChance = 0.06, uppercaseBurstChance = 0.05, maxElongate = 3 },
  rateLimit = { windowSec = 8.0, maxPerWindow = 2 }  -- ~2 msgs / 8s per bot
}

Further configuration can be done in:

  • ext/Client/BotChatterClient.lua for chat colours (RGBA 0..1)
  • ext/Server/BotChatter/Personalities.lua for personality-specific lines
  • ext/Server/BotChatter/Packs/*.lua regional style lines packs
  • ext/Shared/Names/NameProvider.lua for name pack weights and additions
  • ext/Shared/Names/packs/*.lua for regional style name packs

Compatibility (why this isn’t master)

Targets squad-mates-use-full-vehicle-seats-and-more by MatiasPastori only because his client/server/shared __init__ files are modified to bootstrap BotChatter.

To use on another branch/build:

  1. Copy ext/Server/BotChatter/**, ext/Client/BotChatterClient.lua, ext/Shared/Names/**, ext/Shared/BotChatterConfig.lua.
  2. Add the BotChatter require lines to client/server/shared __init__.
  3. Replace ext/Shared/Constants/BotNames.lua with the included shim so names come from the packs.

Known limitations (WIP)

  • Occasional double-send if two categories fire in the same tick (e.g., streak + kill).
  • High bot counts increase volume; on big lobbies (especially client+server on one PC) I am considering adding stricter limits or adaptive cooldowns to mitigate this.
  • Spacing glitch when highlighting a player mention (UI layout edge case, proving hard to track down exactly why this is happening).
  • Timing “feel” could use extra polish (more jitter / priority tweaks). Feedback welcome!

Testing

  • VU Build 20079, multiple full length hours long matches
  • Flags: -debuglog -trace -vexttrace -tracedc
  • Result was stable; chatter volume stayed within targets
  • NOTE: Testing on a jam-packed server with 63 bots often leads to random crashes likely due to the volume of events being tracked and fired within the chat system. This is currently being investigated

Reporting issues

  • Run with the flags above.
  • Grab ~200 lines around the event from Documents\Battlefield 3\Server\logs\server-*.log.
  • Include map, bot count, what happened (e.g., headshot longshot), and whether client+server ran on the same PC.
  • Post here or on the PR. I’ll try to reproduce and tune quickly.

Screenshots