Branch forever runs TrinityCore master against the WoW Classic beta client 1.60.1.70338 (_classic_beta_\WowB.exe)
with a vanilla world (converted from VMaNGOS) and the Skyborne / Zephras Isle content.
Just want to play? Use the Windows repack from the releases: extract, run Setup.bat, start the servers in the
Forever Launcher, press Play. No MySQL or compiling needed.
Server architecture and operations: Complete bnetserver and worldserver guide — login flow, databases, networking, setup, administration, backups, and troubleshooting.
This fork can run optional modules: separate programs, each in its own git repository, that extend the server without changing core source. It also has a built-in bot system, controlled by a module.
- Module system. The core starts each approved module as its own process and talks to it over a local socket (Tier 1: event hooks,
and actions such as selling an item, messaging a player, or sharing a quest item with the party) and, for bots, a shared-memory
region (Tier 2). Design and status: doc/module-system/, start with
00-investigation.md; what exists now is in14-implementation-status.md. Modules are cloned into modules/ and configured withModule.<name>.<Key>entries inworldserver.conf.d/modules.d/<name>.conf. The host is configured by theModules.*keys inworldserver.conf. The forever-module-sdk is what a module is written against. - Bots.
BotMgrcreates bot accounts (BOTnnnn) and characters, logs them in without a client connection, and hands them to a module. Each tick the module gets a snapshot of each bot (position, health, combat state, party, nearest vendor, nearby units) and publishes actions (move, follow, attack, cast, rest, vendor, party, loot). The core re-checks every action. Limits and safety valves are inworldserver.conf:Bot.Login.MaxPerSecond,Bot.Limit.MaxBots,Bot.Limit.MaxWorldDiffMs,Bot.Limit.MaxDbQueue,Bot.Run.StopTime(a clean shutdown at a local time),Bot.Spread.SpacingYardsandBot.Spread.MaxRadiusYards, and theModules.Tier2.*keys (bots, nearby units, actions, nearby refresh). - Modules in use. MOD-Forever-Bots (bot AI), MOD-auto-vendor-trash (sells looted grey items), MOD-quest-group-loot (shares a looted quest item with the party members who need it).
The core keeps a byte-identical copy of the SDK's Tier 2 layout header (src/server/game/Modules/ModuleTier2Layout.h); the layout
version must match the module's SDK or the module is refused.
Build the core as usual (see Install), then:
1. Databases. Use TrinityCore's normal auto-setup with TDB_full_world_1210.26091_2026_09_09.sql and
TDB_full_hotfixes_1210.26091_2026_09_09.sql in the worldserver folder. worldserver then applies all updates and
sql/custom files itself (Updates.EnableDatabases = 15); nothing else is needed. The vanilla world converted from
VMaNGOS ships as plain SQL (sql/custom/world/2026_09_27_00_world_forever_baseline_*.sql, about 65 MB, so the first
start takes a few minutes). The result is identical to the released database.
Already have a database from an older version (including one built with vmangos_world)? Just pull and start
worldserver: it applies the new files on top, and vmangos_world can be dropped afterwards.
2. Config. The Classic client needs these (everything else can stay default):
worldserver.conf
RealmID = 70 # the Classic client only accepts realm 70 (the auth SQL renames realm 1)
Expansion = 0
Network.SkipBuildAuthKeyCheck = 1
Network.EnterEncryptedModeRegionGroup = 8
bnetserver.conf
Realm.CfgContentSetID = 137
LoginREST.ExternalAddress = trinity.actual.battle.net
LoginREST.LocalAddress = trinity.actual.battle.net
CertificatesFile = "./<your cert chain>.pem" # certificate for trinity.actual.battle.net, see below
PrivateKeyFile = "./<your key>.pem"
If worldserver stops right after Realm running as realm ID 1, RealmID is not 70.
Game data (maps, vmaps, mmaps). Run the tools built from this branch in the World of Warcraft folder (the one that
holds .build.info and _classic_beta_). The Forever client is the CASC product wow_classic_beta; this branch's
extractors use it by default (TrinityCore's own default wow = retail fails with "Error opening casc storage / No locales
detected"; on older builds of the tools pass -p wow_classic_beta):
mapextractor
vmap4extractor
mkdir vmaps
vmap4assembler Buildings vmaps
mmaps_generator
Then move dbc, gt, maps, vmaps and mmaps into the worldserver's DataDir.
3. Login. The client logs in to trinity.actual.battle.net over TLS, so on the client PC:
- hosts file:
127.0.0.1 trinity.actual.battle.net(or your server's IP) - a certificate for
trinity.actual.battle.netsigned by a root CA that the client PC trusts. Create your own CA (restrict it withnameConstraints = critical,permitted;DNS:actual.battle.net) and never share its private key. The repack'ssetup\Setup.ps1shows the exact openssl commands. - start the client with the Forever Launcher, which sets the portal and the server's public key.
- Build Status
- Introduction
- Requirements
- Install
- Reporting issues
- Submitting fixes
- Copyright
- Authors & Contributors
- Links
| master | 3.3.5 | cata_classic |
|---|---|---|
TrinityCore is a MMORPG Framework based mostly in C++.
It is derived from MaNGOS, the Massive Network Game Object Server, and is based on the code of that project with extensive changes over time to optimize, improve and cleanup the codebase at the same time as improving the in-game mechanics and functionality.
It is completely open source; community involvement is highly encouraged.
If you wish to contribute ideas or code, please visit our site linked below or make pull requests to our Github repository.
For further information on the TrinityCore project, please visit our project website at TrinityCore.org.
Software requirements are available in the wiki for Windows, Linux and macOS.
Detailed installation guides are available in the wiki for Windows, Linux and macOS.
Issues can be reported via the Github issue tracker.
Please take the time to review existing issues before submitting your own to prevent duplicates.
In addition, thoroughly read through the issue tracker guide to ensure your report contains the required information. Incorrect or poorly formed reports are wasteful and are subject to deletion.
C++ fixes are submitted as pull requests via Github. For more information on how to properly submit a pull request, read the how-to: maintain a remote fork. For SQL only fixes, open a ticket; if a bug report exists for the bug, post on an existing ticket.
License: GPL 2.0
Read file COPYING.
Read file AUTHORS.
