A TrinityCore 4.3.4 (Cataclysm, client build 15595) server with an integrated playerbots module
(src/server/scripts/Custom/mod-playerbots-cataclysm). The bots and the core live in this single
repository, so they build and update together.
Playerbots add player-like characters to the server: random bots that roam, quest, run dungeons, battlegrounds and raids, plus the ability to log in your own alts as bots and group with them.
Based on the Cataclysm Preservation Project branch of TrinityCore and the mod-playerbots project (originally ike3's mangosbot), ported to 4.3.4.
This repository contains source code only. It does not include any Blizzard game data
(maps, vmaps, mmaps, dbc, cameras, the client, or MPQ data) — those are copyrighted and must be
extracted from your own legally-owned 4.3.4 client. The build/ directory (compiled binaries,
extracted data, configs, logs) is intentionally git-ignored.
| Component | Version / Notes |
|---|---|
| OS | Windows 10/11 (this guide). Linux works too with the equivalent toolchain. |
| Compiler | Visual Studio 2022 (Desktop development with C++) |
| CMake | 3.18 or newer |
| MySQL | 8.0 / 8.4 (MariaDB 10.5+ also works) |
| Boost | 1.78 or newer |
| OpenSSL | 3.x |
| Git | latest |
| Client | World of Warcraft 4.3.4 (build 15595) — for extracting game data |
| RAM | 8 GB minimum; 16 GB+ recommended when running many bots |
git clone https://github.com/Staburus/TrinityCore-Cataclysm-Playerbots.git
cd TrinityCore-Cataclysm-Playerbotsmkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DTOOLS=1 -DSCRIPTS=staticOpen the generated TrinityCore.sln in Visual Studio, set the configuration to RelWithDebInfo,
and build ALL_BUILD (or just the worldserver, authserver, and the extractor tools).
Binaries land in build/bin/RelWithDebInfo/.
The playerbots module is wired into the build automatically (SCRIPTS=static) — no extra steps.
Copy these tools from build/bin/RelWithDebInfo/ into your WoW 4.3.4 client folder and run them
in order, then move the generated folders to your server's data directory:
mapextractor.exe -> produces dbc/ maps/
vmap4extractor.exe -> produces Buildings/
vmap4assembler.exe -> produces vmaps/
mmaps_generator.exe -> produces mmaps/
Place the resulting dbc/, maps/, vmaps/, mmaps/, and Cameras/ folders together in a data
directory (e.g. bin/RelWithDebInfo/data/) and point DataDir at it in the config (step 5).
Create the three core databases:
CREATE DATABASE auth DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE characters DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE world DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;- Import the base SQL from
sql/base/(auth + characters), and the Cataclysm world database (TDB) from the Cataclysm Preservation Project releases intoworld. - The worldserver applies pending
sql/updates/automatically on startup (keepUpdates.EnableDatabasesandUpdates.AutoSetupenabled in the config).
Playerbots SQL: the playerbots tables live in the characters database (the module aliases its
PlayerbotsDatabase to CharacterDatabase). Import them once:
# from the repo root, into the characters DB
mysql -u root -p characters < src/server/scripts/Custom/mod-playerbots-cataclysm/data/sql/playerbots/base/*.sql(Also apply anything under mod-playerbots-cataclysm/data/sql/world/base/ to world.)
In build/bin/RelWithDebInfo/configs/, copy the templates and edit them:
worldserver.conf.dist -> worldserver.conf
authserver.conf.dist -> authserver.conf
modules/playerbots.conf.dist -> modules/playerbots.conf
In worldserver.conf set at minimum:
LoginDatabaseInfo,WorldDatabaseInfo,CharacterDatabaseInfo— your MySQL host/user/password/dbDataDir— path to the folder containingdbc/ maps/ vmaps/ mmaps/
In authserver.conf set LoginDatabaseInfo.
Point the realm at your server's address so clients can connect:
-- auth database
UPDATE realmlist SET address = '127.0.0.1' WHERE id = 1; -- use your LAN/WAN IP for remote playersSet the client's realmlist.wtf to your auth server IP.
Start authserver first, then worldserver:
build/bin/RelWithDebInfo/authserver.exe
build/bin/RelWithDebInfo/worldserver.exe
Create an account in the worldserver console:
account create <user> <password>
account set gmlevel <user> 3 -1
Configuration lives in configs/modules/playerbots.conf. Common settings:
| Setting | Meaning |
|---|---|
AiPlayerbot.RandomBotAutologin |
Auto-log random bots into the world on startup |
AiPlayerbot.MinRandomBots / MaxRandomBots |
How many random bots populate the world |
AiPlayerbot.RandomBotAccountCount |
Number of bot accounts to generate |
Bots are controlled with in-game chat commands (e.g. .playerbots bot add <name>, whisper follow,
stay, attack, etc.). For a UI instead of chat commands, you can use a client AddOn such as
MultiBot.
Performance tip: for large bot counts, raise the DB/worker/map threads in
worldserver.conf(MapUpdate.Threads,CharacterDatabase.WorkerThreads,PlayerbotsDatabase.WorkerThreads, etc.) to match your CPU.
git pullThen rebuild in Visual Studio. New sql/updates/ are applied automatically on worldserver startup;
apply any new files under the module's data/sql/ manually. Because the core and the playerbots
module share this repo, a single git pull updates both.
To pull upstream TrinityCore changes, this repo keeps the original as a remote:
git fetch upstream- TrinityCore and the Cataclysm Preservation Project
- mod-playerbots, ZhengPeiRu21, celguar, and ike3
GPL v2 — see COPYING. TrinityCore is released under the GNU GPL v2; the playerbots module under AGPL v3. You must comply with both. No copyrighted Blizzard data is included or permitted in this repository.