servers:linux:games:trinitycore_3.3.5_localhost
This is an old revision of the document!
Table of Contents
Information
- TrinityCore 1)
- These notes provide a local single-player server for World of Warcraft 3.3.5
- For a traditional dedicated server see these notes
Media
Resources
Prerequisites
Dependencies
sudo zypper install gcc gcc-c++ cmake git-core boost-devel libboost_filesystem-devel libboost_program_options-devel libboost_regex-devel libboost_locale-devel zlib-devel libopenssl-3-devel readline-devel libbz2-devel libmariadbd-devel mariadb
Download Source
cd ~ && mkdir -p ~/'Projects' && rm -Rf ~/'Projects/TrinityCore-335/src' && git clone --branch '3.3.5' --depth '1' --recurse-submodules 'https://github.com/TrinityCore/TrinityCore.git' ~/'Projects/TrinityCore-335/src' && sync
Database
Settings
rm -Rf ~/'Projects/TrinityCore-335/mariadb/database' && mkdir -p ~/'Projects/TrinityCore-335/mariadb/database' && nano ~/'Projects/TrinityCore-335/mariadb/custom.cnf'
[client] default-character-set = 'utf8mb4' [mariadb-client] default-character-set = 'utf8mb4' [mariadbd] character-set-client-handshake = 'FALSE' character-set-server = 'utf8mb4' collation-server = 'utf8mb4_unicode_ci' init-connect='SET NAMES utf8mb4' expire_logs_days = '7' max_binlog_size = '100M' skip-networking = 'On' table_definition_cache = '1400' # End
Initialize
- Future start-up messages related to
mysqld.logcan be safely ignored 2) - TODO: Above log error with
[mariadbd]flag at DB creation-time
mariadb-install-db --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --defaults-file=$HOME/'Projects/TrinityCore-335/mariadb/custom.cnf'
Initial Setup
- Change the root password:
N
mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock'
mariadb-secure-installation --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
Databases
Connect
mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock'
mariadb --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
Databases
CREATE DATABASE authserver;
CREATE DATABASE characters;
CREATE DATABASE worldserver;
Users
CREATE USER 'authserver'@'localhost' IDENTIFIED BY 'x';
CREATE USER 'characters'@'localhost' IDENTIFIED BY 'x';
CREATE USER 'worldserver'@'localhost' IDENTIFIED BY 'x';
Permissions
GRANT ALL PRIVILEGES ON authserver.* to 'authserver'@'localhost';
GRANT ALL PRIVILEGES ON characters.* to 'characters'@'localhost';
GRANT ALL PRIVILEGES ON worldserver.* to 'worldserver'@'localhost';
FLUSH PRIVILEGES;EXIT;
mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
Initial Compile
rm -Rf ~/'Projects/TrinityCore-335/build' ~/'Projects/TrinityCore-335/run' && mkdir -p ~/'Projects/TrinityCore-335/build' ~/'Projects/TrinityCore-335/run' && cd ~/'Projects/TrinityCore-335/build' && cmake ~/'Projects/TrinityCore-335/src' -DCMAKE_INSTALL_PREFIX=~/'Projects/TrinityCore-335/run' -DCMAKE_BUILD_TYPE='Release' -DCMAKE_C_COMPILER='/usr/bin/gcc' -DCMAKE_CXX_COMPILER='/usr/bin/g++' -DNOJEM='1' -DCMAKE_CXX_FLAGS='-march=native -std=gnu++2c -Ofast -DNDEBUG' -DWITHOUT_METRICS='1' -DTOOLS='1' && make --jobs=$(nproc) install
Content
DBCs, Maps, and Cameras
cp -f ~/'Projects/TrinityCore-335/run/bin/mapextractor' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && rm -Rf 'dbc' 'maps' 'Cameras' && ./'mapextractor' -f '0'
VMaps
Extract
cp -f ~/'Projects/TrinityCore-335/run/bin/vmap4extractor' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && rm -Rf 'Buildings' && ./'vmap4extractor' -l
Assemble
cp -f ~/'Projects/TrinityCore-335/run/bin/vmap4assembler' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && rm -Rf 'vmaps' && mkdir -p 'vmaps' && ./'vmap4assembler' 'Buildings' 'vmaps'
MMaps
30-40 minutes i5-8400H 3)
--threads $(nproc)
cp -f ~/'Projects/TrinityCore-335/run/bin/mmaps_generator' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && rm -Rf 'mmaps' && mkdir -p 'mmaps' && ./'mmaps_generator' --bigBaseUnit 'true' --threads "$(nproc)"
Move Files
cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && mv -f 'dbc' 'maps' 'Cameras' 'vmaps' 'mmaps' ~/'Projects/TrinityCore-335/run/bin' && rm -f 'mapextractor' 'vmap4extractor' 'vmap4assembler' 'mmaps_generator' && cd ~
Check Files
~/Projects/TrinityCore-335/run/binneedsCameras,dbc,maps,mmaps, andvmapsfolders
ls --directory ~/'Projects/TrinityCore-335/run/bin/dbc' ~/'Projects/TrinityCore-335/run/bin/maps' ~/'Projects/TrinityCore-335/run/bin/Cameras' ~/'Projects/TrinityCore-335/run/bin/vmaps' ~/'Projects/TrinityCore-335/run/bin/mmaps'
gio open ~/'Projects/TrinityCore-335/run/bin'
Clean-up
cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && rm -Rf 'Buildings' 'mapextractor' 'vmap4extractor' 'vmap4assembler' 'mmaps_generator' && cd ~
gio open ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft'
World Database
TDB
- Last tested:
TDB_full_world_335.25101_2025_10_21.7z
rm -f ~/'Projects/TrinityCore-335/run/bin/TDB_full_world_335.'*'.sql' && 7za x ~/'Downloads/TDB_full_world_335.'*'.7z' -o$HOME/'Projects/TrinityCore-335/run/bin'
Settings
authserver
- Last commit: Jul 28, 2021
68bf7e6
cp ~/'Projects/TrinityCore-335/run/etc/authserver.conf.dist' ~/'Projects/TrinityCore-335/run/etc/authserver.conf'
mkdir -p ~/'Projects/TrinityCore-335/authserver.conf.d' && nano ~/'Projects/TrinityCore-335/authserver.conf.d/localhost-authserver.conf'
[authserver] # Connection BindIP = "127.0.0.1" LoginDatabaseInfo = "127.0.0.1;../../mariadb.sock;authserver;x;authserver" AllowLoggingIPAddressesInDatabase = 0 # Etc Updates.EnableDatabases = 1 Updates.CleanDeadRefMaxCount = -1 # End
worldserver
- Last commit: June 10th, 2025
0bd56da
cp ~/'Projects/TrinityCore-335/run/etc/worldserver.conf.dist' ~/'Projects/TrinityCore-335/run/etc/worldserver.conf'
mkdir -p ~/'Projects/TrinityCore-335/worldserver.conf.d' && nano ~/'Projects/TrinityCore-335/worldserver.conf.d/localhost-worldserver.conf'
[worldserver] # Connection BindIP = "127.0.0.1" LoginDatabaseInfo = "127.0.0.1;../../mariadb.sock;authserver;x;authserver" WorldDatabaseInfo = "127.0.0.1;../../mariadb.sock;worldserver;x;worldserver" CharacterDatabaseInfo = "127.0.0.1;../../mariadb.sock;characters;x;characters" # Server Updates.CleanDeadRefMaxCount = -1 FlashAtStart = 0 Server.LoginInfo = 1 Motd = "Welcome to your localhost server!" AllowTickets = 0 CharDelete.Method = 1 CharDelete.KeepDays = 0 WhoList.Update.Interval = 300 HotSwap.Enabled = 0 HotSwap.EnableReCompiler = 0 # Quests Quests.LowLevelHideDiff = -1 Quests.HighLevelHideDiff = -1 # Character GM.LoginState = 0 # Protections MaxOverspeedPings = 0 PacketSpoof.Policy = 0 ChatFakeMessagePreventing = 0 ChatFlood.MessageCount = 0 # End
Scripts
authserver
mkdir -p ~/'Projects/TrinityCore-335/scripts' && nano ~/'Projects/TrinityCore-335/scripts/localhost-authserver-start.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-authserver-start.sh'
#!/bin/bash cd ~/'Projects/TrinityCore-335/run/bin' ~/'Projects/TrinityCore-335/run/bin/authserver' --config-dir ~/'Projects/TrinityCore-335/authserver.conf.d' # End
~/'Projects/TrinityCore-335/scripts/localhost-authserver-start.sh'
worldserver
mkdir -p ~/'Projects/TrinityCore-335/scripts' && nano ~/'Projects/TrinityCore-335/scripts/localhost-worldserver-start.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-worldserver-start.sh'
#!/bin/bash cd ~/'Projects/TrinityCore-335/run/bin' ~/'Projects/TrinityCore-335/run/bin/worldserver' --config-dir ~/'Projects/TrinityCore-335/worldserver.conf.d' # End
~/'Projects/TrinityCore-335/scripts/localhost-worldserver-start.sh'
Database Start
Ctrl + \to shutdown
mkdir -p ~/'Projects/TrinityCore-335/scripts' && nano ~/'Projects/TrinityCore-335/scripts/localhost-database-start.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-database-start.sh'
#!/bin/bash mariadbd-safe --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' # End
~/'Projects/TrinityCore-335/scripts/localhost-database-start.sh'
Server Update
mkdir -p ~/'Projects/TrinityCore-335/scripts' && nano ~/'Projects/TrinityCore-335/scripts/localhost-server-update.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-server-update.sh'
#!/bin/bash git -C ~/'Projects/TrinityCore-335/src' reset --hard 'origin/3.3.5' git -C ~/'Projects/TrinityCore-335/src' pull origin '3.3.5' --rebase cd ~/'Projects/TrinityCore-335/build' cmake ~/'Projects/TrinityCore-335/src' -DCMAKE_INSTALL_PREFIX=~/'Projects/TrinityCore-335/run' -DCMAKE_BUILD_TYPE='Release' -DCMAKE_C_COMPILER='/usr/bin/gcc' -DCMAKE_CXX_COMPILER='/usr/bin/g++' -DNOJEM='1' -DCMAKE_CXX_FLAGS="-march='native' -std='gnu++2c' -Ofast -DNDEBUG" -DWITHOUT_METRICS='1' -DTOOLS='0' make -j "$(nproc)" install cp -f ~/'Projects/TrinityCore-335/run/etc/authserver.conf.dist' ~/'Projects/TrinityCore-335/run/etc/authserver.conf' cp -f ~/'Projects/TrinityCore-335/run/etc/worldserver.conf.dist' ~/'Projects/TrinityCore-335/run/etc/worldserver.conf' zenity --title 'WoW 3.3.5 Updater' --text 'localhost server update complete' --icon ~/'.wine/Icons/WoW-335-256.png' --timeout '2' --info # End
~/'Projects/TrinityCore-335/scripts/localhost-server-update.sh'
Database Back-up
mkdir -p ~/'Projects/TrinityCore-335/scripts' && nano ~/'Projects/TrinityCore-335/scripts/localhost-databases-backup.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-databases-backup.sh'
#!/bin/bash mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' sleep '2' mariadb-dump --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER --single-transaction --quick 'authserver' -r $HOME/'Downloads/'$(date +%Y-%m-%d-%s)'-localhost-authserver.sql' mariadb-dump --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER --single-transaction --quick 'characters' -r $HOME/'Downloads/'$(date +%Y-%m-%d-%s)'-localhost-characters.sql' mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER zenity --title 'WoW 3.3.5 Backup' --text 'DBs Backed-up to Downloads' --icon ~/'.wine/Icons/WoW-335-256.png' --timeout '1' --info # End
~/'Projects/TrinityCore-335/scripts/localhost-databases-backup.sh'
Server Start
mkdir -p ~/'Projects/TrinityCore-335/scripts' && nano ~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh'
#!/bin/bash kgx -T 'WoW 3.3.5 [MariaDB]' -e ~/'Projects/TrinityCore-335/scripts/localhost-database-start.sh' & sleep '2' kgx -T 'WoW 3.3.5 [auth]' -e ~/'Projects/TrinityCore-335/scripts/localhost-authserver-start.sh' & kgx -T 'WoW 3.3.5 [world]' -e ~/'Projects/TrinityCore-335/scripts/localhost-worldserver-start.sh' # End
~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh'
Database Maintenance
mkdir -p ~/'Projects/TrinityCore-335/scripts' && nano ~/'Projects/TrinityCore-335/scripts/localhost-database-maintenance.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-database-maintenance.sh'
#!/bin/bash zenity --title 'WoW 3.3.5 (localhost)' --text 'Starting DB maintenance...' --icon ~/'.wine/Icons/WoW-335-256.png' --timeout '2' --info mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' sleep '2' mariadb-check --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER -o -A -f -e --auto-repair > '/dev/null' mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER zenity --title 'WoW 3.3.5 (localhost)' --text 'DB maintenance complete' --icon ~/'.wine/Icons/WoW-335-256.png' --timeout '2' --info # End
~/'Projects/TrinityCore-335/scripts/localhost-database-maintenance.sh'
Create GM Account
- Done from
worldserverconsole - Change
xto password
~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh'
account create Espionage724 x
account set gmlevel Espionage724 3 -1
server shutdown 1
Extras
Items
Tyrael's Hilt
- Mini Tyrael pet
.additem 39656
Goldshire Gift Voucher
- Quest for Diablo Stone, Panda Collar, or Zergling Leash pets
.additem 14646
GM Robes
.additem 2586
.additem 11508
.additem 12064
Teleports
.tele GMIsland
Character Data
Backup
authserver
mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' && sleep '2' && mariadb-dump --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER --single-transaction --quick 'authserver' -r $HOME/'Downloads/'$(date +%Y-%m-%d-%s)'-localhost-authserver.sql' && mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
characters
mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' && sleep '2' && mariadb-dump --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER --single-transaction --quick 'characters' -r $HOME/'Downloads/'$(date +%Y-%m-%d-%s)'-localhost-characters.sql' && mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
Restore
Start MariaDB
mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock'
authserver
mariadb --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER --execute='CREATE DATABASE authserver;'
cat ~/'Downloads/'*'-localhost-authserver.sql' | mariadb --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER 'authserver'
characters
mariadb --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER --execute='CREATE DATABASE characters;'
cat ~/'Downloads/'*'-localhost-characters.sql' | mariadb --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER 'characters'
Stop MariaDB
mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
Quick Commands
Execute
MariaDB
- Remove
--no-watchto run foreground
mariadbd-safe --no-watch --skip-syslog --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock'
Stop
mariadb-admin 'shutdown' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock' --user=$USER
authserver
cd ~/'Projects/TrinityCore-335/run/bin' && ~/'Projects/TrinityCore-335/run/bin/authserver' --config-dir ~/'Projects/TrinityCore-335/authserver.conf.d'
worldserver
cd ~/'Projects/TrinityCore-335/run/bin' && ~/'Projects/TrinityCore-335/run/bin/worldserver' --config-dir ~/'Projects/TrinityCore-335/worldserver.conf.d'
Compilers
Clang
sudo zypper install clang
-DCMAKE_C_COMPILER='/usr/bin/clang' -DCMAKE_CXX_COMPILER='/usr/bin/clang++'
GCC
- 2025/12/09:
jemallocneeded disabled to compile successfully - 2025/12/09:
mmapstook 4 minutes longer to extract vs Clang 4)
sudo zypper install gcc gcc-c++
-DCMAKE_C_COMPILER='/usr/bin/gcc' -DCMAKE_CXX_COMPILER='/usr/bin/g++' -DNOJEM='1'
Compile Info
ldd ~/'Projects/TrinityCore-335/run/bin/worldserver'
readelf --string-dump='.comment' ~/'Projects/TrinityCore-335/run/bin/worldserver'
Versions
- 2025/12/10
[ 0] GCC: (SUSE Linux) 15.2.1 20251006
[ 0] clang version 21.1.6
/srv/www/wiki/data/attic/servers/linux/games/trinitycore_3.3.5_localhost.1765486881.txt.gz · Last modified: by Sean Rhone
