====== Information ====== * TrinityCore * [[https://talk.trinitycore.org/t/singleplayer-scripts-and-desktop-start-launchers-on-windows-linux-freebsd/33293|TrinityCore Forums]] * These notes provide a local single-player server for World of Warcraft 3.3.5 ===== Media ===== * [[https://media.realmofespionage.xyz/index/category/6|Progress Pics]] ===== Prerequisites ===== * [[bsd;freebsd_14.3_xfce|FreeBSD 14.3 (Xfce)]] * [[servers:bsd:mariadb|MariaDB]] * [[games;bsd;wine;world_of_warcraft_3.3.5|World of Warcraft 3.3.5]] ====== Dependencies ====== * :?: May require a ''boost'' package ((''keepassxc'' pulls in ''boost-libs'')) su - pkg install git readline mariadb118-client cmake-core bzip2 libressl ====== 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 ====== Databases ====== ===== Connect ===== su - 'root' -c 'service 'mysql-server' onestart' mariadb -u 'root' -p ===== 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 ====== Initial Compile ====== **** rm -Rf ~/'Projects/TrinityCore-335/build' && 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' -DWITHOUT_METRICS='1' -DTOOLS='1' && make -j "$(nproc)" install ====== Content ====== * Expects [[games;bsd;wine;world_of_warcraft_3.3.5|World of Warcraft 3.3.5]] ===== 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 3.3.5a.12340'*'/' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && 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 3.3.5a.12340'*'/' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && 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 3.3.5a.12340'*'/' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && rm -Rf 'vmaps' && mkdir -p 'vmaps' && ./'vmap4assembler' 'Buildings' 'vmaps' ===== MMaps ===== * :!: ~30 minutes i5-8400H ((2025/08/29: ''29 Minutes 15 Seconds'' at ''--threads 8'')) * ''--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 3.3.5a.12340'*'/' && cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && 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 3.3.5a.12340'*'/' && mv -f 'dbc' 'maps' 'Cameras' 'vmaps' 'mmaps' ~/'Projects/TrinityCore-335/run/bin' && rm -f 'mapextractor' 'vmap4extractor' 'vmap4assembler' 'mmaps_generator' && cd ~ && sync ==== Check Files ==== * ''~/Projects/TrinityCore-335/run/bin'' needs ''Cameras'', ''dbc'', ''maps'', ''mmaps'', and ''vmaps'' folders ls -d ~/'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 3.3.5a.12340'*'/' && rm -Rf 'Buildings' 'mapextractor' 'vmap4extractor' 'vmap4assembler' 'mmaps_generator' 'WoWDL.lnk' && cd ~ && sync gio open ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' ===== World Database ===== ==== TDB ==== * https://github.com/TrinityCore/TrinityCore/releases * Last tested: ''TDB_full_world_335.24111_2024_11_22.7z'' rm -f ~/'Projects/TrinityCore-335/run/bin/TDB_full_world_335.'*'.sql' && 7z e -o$HOME/'Projects/TrinityCore-335/run/bin' -y ~/'Downloads/TDB_full_world_335.'*'.7z' ====== Settings ====== ===== authserver ===== * Last commit: [[https://github.com/TrinityCore/TrinityCore/commit/68bf7e6d12e1689d688db32c05066b8832922c67|Jul 28, 2021]] ''68bf7e6'' * [[https://github.com/TrinityCore/TrinityCore/commits/3.3.5/src/server/authserver/authserver.conf.dist|New commits check]] * [[https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/authserver/authserver.conf.dist|Upstream authserver.conf.dist]] ([[https://raw.githubusercontent.com/TrinityCore/TrinityCore/3.3.5/src/server/authserver/authserver.conf.dist|raw]]) cp -f ~/'Projects/TrinityCore-335/run/etc/authserver.conf.dist' ~/'Projects/TrinityCore-335/run/etc/authserver.conf' mkdir -p ~/'Projects/TrinityCore-335/authserver.conf.d' && ee ~/'Projects/TrinityCore-335/authserver.conf.d/localhost-authserver.conf' [authserver] # Connection BindIP = "127.0.0.1" LoginDatabaseInfo = ".;/var/run/mysql/mysql.sock;authserver;x;authserver" AllowLoggingIPAddressesInDatabase = 0 # Etc RealmsStateUpdateDelay = 0 Updates.EnableDatabases = 1 Updates.CleanDeadRefMaxCount = -1 # End ===== worldserver ===== * Last commit: [[https://github.com/TrinityCore/TrinityCore/commit/0bd56da09b1f0ae34605a1a6fdd14ca26cd42d4c|June 10th, 2025]] ''0bd56da'' * [[https://github.com/TrinityCore/TrinityCore/commits/3.3.5/src/server/worldserver/worldserver.conf.dist|New commits check]] * [[https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/worldserver/worldserver.conf.dist|Upstream worldserver.conf.dist]] ([[https://raw.githubusercontent.com/TrinityCore/TrinityCore/3.3.5/src/server/worldserver/worldserver.conf.dist|raw]]) cp -f ~/'Projects/TrinityCore-335/run/etc/worldserver.conf.dist' ~/'Projects/TrinityCore-335/run/etc/worldserver.conf' mkdir -p ~/'Projects/TrinityCore-335/worldserver.conf.d' && ee ~/'Projects/TrinityCore-335/worldserver.conf.d/localhost-worldserver.conf' [worldserver] # Connection BindIP = "127.0.0.1" LoginDatabaseInfo = ".;/var/run/mysql/mysql.sock;authserver;x;authserver" WorldDatabaseInfo = ".;/var/run/mysql/mysql.sock;worldserver;x;worldserver" CharacterDatabaseInfo = ".;/var/run/mysql/mysql.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 ====== ===== Server Start ===== mkdir -p ~/'Projects/TrinityCore-335/scripts' && ee ~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh' #!/bin/sh cd ~/'Projects/TrinityCore-335/run/bin' xfce4-terminal -T 'WoW — authserver' -I ~/'.local/share/icons/hicolor/48x48/apps/WBE5_Wow.0.png' -e "./'authserver' --config-dir ../../'authserver.conf.d'" & xfce4-terminal -T 'WoW — worldserver' -I ~/'.local/share/icons/hicolor/48x48/apps/WBE5_Wow.0.png' -e "./'worldserver' --config-dir ../../'worldserver.conf.d'" # End ~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh' ==== Xfce TODO ==== xfce4-terminal --minimize -T 'WoW 3.3.5 — [auth]' -I ~/'.local/share/icons/hicolor/48x48/apps/WBE5_Wow.0.png' -x ~/'Projects/TrinityCore-335/run/bin/authserver' --config-dir ~/'Projects/TrinityCore-335/authserver.conf.d' xfce4-terminal --minimize -T 'WoW 3.3.5 — [world]' -I ~/'.local/share/icons/hicolor/48x48/apps/WBE5_Wow.0.png' -x ~/'Projects/TrinityCore-335/run/bin/worldserver' --config-dir ~/'Projects/TrinityCore-335/worldserver.conf.d' ===== Server Update ===== * TODO ===== Database Back-up ===== mkdir -p ~/'Projects/TrinityCore-335/scripts' && ee ~/'Projects/TrinityCore-335/scripts/localhost-databases-backup.sh' && chmod +x ~/'Projects/TrinityCore-335/scripts/localhost-databases-backup.sh' #!/bin/sh cd ~/'Downloads' mariadb-dump -u 'root' -p --opt -r 'localserver-authserver-database-'$(date +%Y-%m-%d-%s)'.sql' 'authserver' mariadb-dump -u 'root' -p --opt -r 'localserver-characters-database-'$(date +%Y-%m-%d-%s)'.sql' 'characters' sync notify-send -i ~/'.local/share/icons/hicolor/48x48/apps/WBE5_Wow.0.png' 'WoW 3.3.5 Databases Backed-up Successfully to Downloads' # End ~/'Projects/TrinityCore-335/scripts/localhost-databases-backup.sh' ====== Create GM Account ====== * Done from ''worldserver'' console * Change ''x'' to password ~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh' account create Espionage724 x account set gmlevel Espionage724 3 -1 server shutdown 1 ====== Extras ====== ===== Items ===== ==== Northshire Gift Voucher ==== * https://www.wowhead.com/classic/item=14646/northshire-gift-voucher * https://www.wowhead.com/wotlk/item=13584/diablo-stone * Gives Diablo Stone for Mini Diablo pet .additem 14646 ==== Tyrael's Hilt ==== * https://www.wowhead.com/wotlk/item=39656/tyraels-hilt * :?: Mini Tyrael might have buggy movement and not follow more-often than other pets (Mini Diablo seems fine) .additem 39656 ====== Character Data ====== ===== Backup ===== su - 'root' -c 'service 'mysql-server' onestart' mariadb-dump -u 'root' -p --single-transaction --quick 'authserver' -r ~/'Downloads/localhost-authserver-'$(date +%Y-%m-%d-%s)'.sql' mariadb-dump -u 'root' -p --single-transaction --quick 'characters' -r ~/'Downloads/localhost-characters-'$(date +%Y-%m-%d-%s)'.sql' su - 'root' -c 'service 'mysql-server' onestop' ===== Restore ===== * [[#databases|Initial set-up]] su - 'root' -c 'service 'mysql-server' onestart' ==== authserver ==== * ''x'' is path to a ''authserver'' ''.sql'' database dump mariadb -u 'root' -p --execute='CREATE DATABASE authserver;' mariadb -u 'root' -p 'authserver' < x ==== characters ==== * ''x'' is path to a ''characters'' ''.sql'' database dump mariadb -u 'root' -p --execute='CREATE DATABASE characters;' mariadb -u 'root' -p 'characters' < x ====== Quick Commands ====== ===== Execute ===== ==== MariaDB ==== **** su - 'root' -c 'service 'mysql-server' onestart' ==== 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' ===== Update ===== * https://github.com/TrinityCore/TrinityCore/commits/3.3.5/ git -C ~/'Projects/TrinityCore-335/src' pull origin '3.3.5' && cd ~/'Projects/TrinityCore-335/build' && cmake ~/'Projects/TrinityCore-335/src' -DCMAKE_INSTALL_PREFIX=~/'Projects/TrinityCore-335/run' -DCMAKE_BUILD_TYPE='Release' -DWITHOUT_METRICS='1' -DTOOLS='0' && make -j "$(nproc)" install