The goal: a world that doesn't feel empty
A solo private server has one obvious problem -- nobody else is in it. VMaNGOS (a Vanilla/1.12 MaNGOS fork) turns out to already have a real answer to that baked into the binary, not a rumor or a half-finished mod. The approach here was to actually read the source before building anything, rather than assume a feature exists or guess at what's missing.
Everything below is source-grounded Every "built" claim traces back to reading
PlayerBots/ in the core source tree directly -- class hierarchy, function names, in-game
commands -- not documentation, not assumption. Where something's genuinely unverified, it says so.
What's already compiled in
core/src/game/PlayerBots/ is a real, dedicated bot AI system -- 15,620 lines across
6 files. Not a stub, not a config flag with nothing behind it.
- PlayerBotAIBase class every bot type builds on.
- CombatBotBaseAIShared per-class combat logic -- full rotation coverage for all 9 classic classes.
- PartyBotAIGroup/raid play -- raid-icon-aware, dungeon-state-aware.
- BattleBotAI3,400+ lines dedicated to battlegrounds, plus a 2,100-line waypoint map.
- PopulateAreaBotAIWhat "RandomBot" actually runs -- ambient crowd-filler at fixed points, not a leveler.
The one that surprised me The config file's own comment for RandomBot says
"no AI, you have to code one and assign it" -- and it's right. PopulateAreaBotAI spawns bots at
three hardcoded coordinate sets outside capital cities to look like foot traffic. It does not quest, path
between zones, or gain XP. If you want bots that actually level themselves up around the world, that class
is not it -- that would be new development, not a flag to flip.
Per-feature status
Checked against the actual code rather than assumed. "Built" means it's implemented and just needs enabling or populating. "Partial" means the scaffolding exists but quality is unverified until you actually watch it run. "Gap" means the code genuinely isn't there.
| Feature | Status | Notes |
|---|---|---|
| Filling 40-man raids | Built | Raid-icon-aware party AI, unlimited bot count. Bottleneck is having a character roster, not code. |
| Tank / Healer / DPS roles | Built | Explicit role-awareness across all 9 classes. |
| Bots leveling solo | Gap | See the RandomBot callout above -- would need a real questbot AI layer. |
| Trade/general chat banter | Gap | Zero chat-generation code exists anywhere in the bot system today. Design spec below, not yet built. |
| Auction house stocked at fair prices | Built | Separate, older subsystem (AHBot) -- the engine's there, needs a better item/price catalog. |
| Dungeon completion | Partial | Real dungeon-context awareness in code; combat quality on actual boss mechanics unverified without playtesting. |
| Open-world PvP | Partial | Found reactive combat only (fights when attacked) -- no evidence of bots roaming to hunt the opposing faction. |
| Battlegrounds | Built | The most mature system found -- covers every battleground that exists at this patch level. |
| Smart raid/dungeon rotations | Partial | Comprehensive per-class code exists; "exists" isn't the same as "good enough," needs playtesting. |
Using bots in-game
A full, mature GM command suite already exists for driving party bots -- no external tooling needed to
start using any of this. Requires an account with SEC_ADMINISTRATOR access.
.partybot add tank
.partybot add healer
.partybot add dps
.partybot add dps
# tank/healer/dps auto-pick a faction-appropriate class (Paladin only
# offered Alliance-side, Shaman only Horde-side -- matches real game rules)
Bots can't be added mid-instance .partybot add is blocked entirely once
you're inside a dungeon. Add the group before you go in, not after.
Directing them once you're fighting
| Command | What it does |
|---|---|
.partybot setrole <role> | Set role on the currently target-selected bot. |
.partybot pull | Mage-pull-style opener. |
.partybot attackstart / attackstop | Manual combat direction. |
.partybot aoe | Toggle AoE rotation mode. |
.partybot ccmark <icon> / focusmark <icon> | Assign crowd-control or focus-fire to a specific raid target icon. |
.partybot clearmarks | Clear all icon assignments. |
.partybot cometome | Regroup bots on your position. |
.partybot usegobject | Bots interact with a game object -- relevant for lever/quest-item dungeon mechanics. |
.partybot pause | Pause bot AI. |
A separate .bot command group also exists (add/add_all/ranadd/start/stop/delete/info/reload) -- appears related to RandomBot management, not investigated in as much depth as the party-bot suite above.
Building a persistent companion crew
Ad-hoc .partybot add bots get randomly rolled and forgotten. For bots you actually
want to recognize and grow attached to, there's a better mechanism.
.partybot load <charactername>
# the character must exist and be offline -- this is a real character
# with real gear/inventory/level, not a scripted illusion
.partybot setrole tank # (or healer / dps, after target-selecting them)
The pattern: create a handful of characters normally through the client -- exact race, gender, and class
chosen deliberately, not randomly rolled -- gear and level them like any other character over time, then
bring the whole crew along with .partybot load whenever you're playing your main. A tank, a
healer, and two or three DPS covers most 5-man content and gives you a real nucleus to build toward raid
content later.
Why this beats a purely simulated companion Because they're real characters, you can actually gear them, watch them level, and have them mean something over a long playthrough -- not a cosmetic follower with a fixed stat block.
The tunable config surface
Between mangosd.conf/realmd.conf and the config-relevant database tables, there
are over 560 individual settings on a VMaNGOS install -- most of them infrastructure plumbing you'll never
touch. The categories that actually matter for a "living world" server:
- Bot systemsRandomBot / PartyBot / BattleBot / PlayerBot toggles and limits.
- Rates & progressionXP, loot, gold, reputation, and respec-cost multipliers.
- Anticheat / WardenCommonly loosened on private servers to avoid false-positive bans.
- GM accessWhat an admin account can do and how visible it is.
- Auction house botOn/off + interval; the real per-item catalog lives in the database.
Also worth knowing if you're building tooling against this: neither mangosd nor
realmd rewrites its own config file on shutdown, so a straightforward write the file, then
restart the service is safe -- verified by checking file modification times across multiple restarts,
not assumed. Some other game server config files (Palworld's, notably) silently overwrite edits on
shutdown; this core doesn't.
The living-chat system, now live
This section used to be a design spec sitting on the shelf. It isn't anymore -- ambient trade/general chatter, reactive responses, a persistent LLM-driven companion crew, and three standalone oracle NPCs are all live in-game today. Full writeup moved to its own pages so this one doesn't get overloaded:
Building an LLM Companion Crew Into VMaNGOS /wiki/vmangos-companion-chat-technical.html VMaNGOS Companion Crew — Meet The Cast /wiki/vmangos-companion-chat-functional.htmlTwo pieces of the original design held up exactly as planned: ambient chat as injected text with no real character behind it, and reactive chat by tailing VMaNGOS's own plain-text chat log for trigger words -- both fully viable without touching the core binary. What changed from the original spec: the companion crew and the standalone oracles are real, named characters voiced by a self-hosted LLM, not phrase-bank archetypes -- richer than originally planned, at the cost of needing a few small, deliberate core patches the phrase-bank version never would have.
The content line held too: early-2000s trade chat gatekeeping, ninja-loot rage-bait, and confidently wrong people are all fair game at full intensity. Real slurs or hate speech are not, regardless of "historical accuracy" framing -- that boundary hasn't moved.
Sequencing
- Read the source instead of guessing what's built vs. missing
- Confirm the GM command suite as the immediate path to testing bots live
- Enable ambient capital-city crowd-filling as a lightweight substitute for full solo-leveling AI
- Playtest an actual dungeon run with a party-bot group to verify AI quality claims
- Build a proper character-creation/roster tool -- serves both raid-filling and a persistent companion crew
- Curate the auction house with a realistic, level-appropriate item catalog
- Build the living-chat system once the above is settled
Open-world PvP and deeper battleground-AI tuning (Alterac Valley's objective handling and Warsong Gulch flag-carrier tactics both looked thinner than the rest of the system on inspection) are parked for later -- not because they're uninteresting, just not the current priority.