Skip to content

Instantly share code, notes, and snippets.

@Espionage724
Last active December 19, 2025 21:46
Show Gist options
  • Select an option

  • Save Espionage724/e778451a128a0c5d60f0d8d989796e40 to your computer and use it in GitHub Desktop.

Select an option

Save Espionage724/e778451a128a0c5d60f0d8d989796e40 to your computer and use it in GitHub Desktop.
20251219 WoW Notes Ubuntu
====== Information ======
* TrinityCore ((https://www.trinitycore.org))
* [[https://talk.trinitycore.org/t/singleplayer-scripts-and-desktop-start-launchers-on-windows-linux-freebsd/33293/7|TrinityCore Forums]]
* These notes provide a local single-player server for World of Warcraft 3.3.5
* For a traditional dedicated server see [[servers:linux:games:trinitycore_3.3.5|these notes]]
===== Media =====
* [[https://www.youtube.com/watch?v=NaEoXA53tYM|localhost Server and Desktop Launcher Presentation Video]]
* [[https://media.realmofespionage.xyz/index/category/6|Progress Pics]]
===== Resources =====
* [[https://trinitycore.org/|TrinityCore]]
* [[https://trinitycore.info/|TrinityCore MMo Project Wiki]]
===== Prerequisites =====
* [[linux:distros:ubuntu|Ubuntu]]
* [[games;linux;wine;world_of_warcraft_3.3.5|World of Warcraft 3.3.5]]
====== Dependencies ======
* https://trinitycore.info/install/requirements/linux
sudo apt install git gcc-15 g++-15 cmake libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev libboost-locale-dev zlib1g-dev libssl-dev libreadline-dev libbz2-dev libmariadb-dev-compat mariadb-server-core mariadb-client
====== Download Source ======
* https://github.com/TrinityCore/TrinityCore/commits/3.3.5/
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'
<code>
[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</code>
===== Initialize =====
****
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 --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 ======
* https://trinitycore.info/en/install/Database-Installation#creating-the-trinitycore-databases-in-mysql
===== Connect =====
mariadbd --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 ======
* https://trinitycore.info/en/install/Core-Installation/linux-core-installation
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-15' -DCMAKE_CXX_COMPILER='/usr/bin/g++-15' -DNOJEM='1' -DCMAKE_CXX_FLAGS='-march=native -Ofast -DNDEBUG -w' -DWITHOUT_METRICS='1' -DTOOLS='1' && make --jobs=$(nproc) install
====== Content ======
* https://trinitycore.info/en/install/Server-Setup/Linux-Server-Setup
* Expects [[games;linux;wine;world_of_warcraft_3.3.5|World of Warcraft 3.3.5a]]
===== 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 ((2025/12/10: ''29 Minutes 45 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' && 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/bin'' needs ''Cameras'', ''dbc'', ''maps'', ''mmaps'', and ''vmaps'' folders
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 =====
* https://trinitycore.info/en/install/Database-Installation#populating-the-mysql-trinity-databases
==== TDB ====
* https://github.com/TrinityCore/TrinityCore/releases
* 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: [[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 ~/'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'
<code>[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</code>
===== 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 ~/'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'
<code>
[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</code>
====== 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'
<code>
#!/bin/bash
cd ~/'Projects/TrinityCore-335/run/bin'
~/'Projects/TrinityCore-335/run/bin/authserver' --config-dir ~/'Projects/TrinityCore-335/authserver.conf.d'
# End</code>
~/'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'
<code>
#!/bin/bash
cd ~/'Projects/TrinityCore-335/run/bin'
~/'Projects/TrinityCore-335/run/bin/worldserver' --config-dir ~/'Projects/TrinityCore-335/worldserver.conf.d'
# End</code>
~/'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'
<code>
#!/bin/bash
mariadbd --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock'
# End</code>
~/'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'
<code>
#!/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-15' -DCMAKE_CXX_COMPILER='/usr/bin/g++-15' -DNOJEM='1' -DCMAKE_CXX_FLAGS='-march=native -Ofast -DNDEBUG -w' -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</code>
~/'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'
<code>
#!/bin/bash
ptyxis --standalone --title='WoW 3.3.5 [MariaDB]' -- ~/'Projects/TrinityCore-335/scripts/localhost-database-start.sh' &
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</code>
~/'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'
<code>
#!/bin/bash
ptyxis --standalone --title='WoW 3.3.5 [MariaDB]' -- ~/'Projects/TrinityCore-335/scripts/localhost-database-start.sh' &
sleep '2'
ptyxis --standalone --title='WoW 3.3.5 [auth]' -- ~/'Projects/TrinityCore-335/scripts/localhost-authserver-start.sh' &
ptyxis --standalone --title='WoW 3.3.5 [world]' -- ~/'Projects/TrinityCore-335/scripts/localhost-worldserver-start.sh' &
# End</code>
~/'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'
<code>
#!/bin/bash
zenity --title 'WoW 3.3.5 (localhost)' --text 'Starting DB maintenance...' --icon ~/'.wine/Icons/WoW-335-256.png' --timeout '1' --info
ptyxis --standalone --title='WoW 3.3.5 [MariaDB]' -- ~/'Projects/TrinityCore-335/scripts/localhost-database-start.sh' &
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</code>
~/'Projects/TrinityCore-335/scripts/localhost-database-maintenance.sh'
====== Create GM Account ======
* https://trinitycore.info/en/install/Final-Server-Steps
* 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 =====
==== 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 --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock'
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 --datadir=$HOME/'Projects/TrinityCore-335/mariadb/database' --socket=$HOME/'Projects/TrinityCore-335/mariadb/mariadb.sock'
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 =====
* [[#databases|Initial set-up]]
==== Start MariaDB ====
****
mariadbd --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 ====
****
mariadbd --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'
===== Compile Info =====
ldd ~/'Projects/TrinityCore-335/run/bin/worldserver'
readelf --string-dump='.comment' ~/'Projects/TrinityCore-335/run/bin/worldserver'
==== Ubuntu ====
* 2025/12/16
[ 0] GCC: (Ubuntu 15.2.0-4ubuntu4) 15.2.0
==== openSUSE TW ====
* 2025/12/10
[ 0] GCC: (SUSE Linux) 15.2.1 20251006
[ 0] clang version 21.1.6
====== Information ======
* World of Warcraft: Wrath of the Lich King
* enUS
* 3.3.5 June 2010 ((''WoW [Release] Build 12340 (Jun 24 2010 23:54:57)''))
* 32-bit
===== Prerequisites =====
* [[linux:distros:ubuntu|Ubuntu]]
* [[linux;notes;wine|Wine]] (new WoW64)
===== Notes =====
* :!: This is for private server use
* See [[servers;linux;games;trinitycore_3.3.5_localhost|TrinityCore 3.3.5 localhost]] to set-up a local server
====== Install ======
===== Sources =====
* https://archive.org/download/World_of_Warcraft_Client_and_Installation_Archive/ISO/
* https://archive.org/download/World_of_Warcraft_Client_and_Installation_Archive/Patches/2.x/
* https://www.bastionofstormwind.com/client-patch-downloads/
* https://www.getmangos.eu/downloads/category/9-wow-patches/
* https://archive.org/download/wow-3.x-retail/Clients/
* [[https://archive.org/download/wow-3.x-retail/Patches (Win)/enUS/|https://archive.org/download/wow-3.x-retail/Patches (Win)/enUS/]]
* [[games;windows;notes;wow_335_files]]
===== Initial Prefix =====
****
mkdir -p ~/'.wine' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' WINEARCH='wow64' wine wineboot --init && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' winecfg /v 'win98' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine REG ADD 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v 'winemenubuilder.exe' /t 'REG_SZ' /d '' /f
===== World of Warcraft =====
==== Disc Mount ====
udisksctl loop-setup --file ~/'Downloads/WoW (localhost)/WoW 1.12.1.5875/WoW-1.0.1.3989-enUS.iso'
ln -s '/media/'$USER'/WoW-1.0.1.3989-eNUS' ~/'.wine/World of Warcraft 3.3.5/dosdevices/y:'
==== Install ====
* Default install directory ((''C:\Program Files\World of Warcraft''))
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine 'Y:\Installer.exe'
==== Disc Unmount ====
sync && umount '/media/'$USER'/WoW-1.0.1.3989-eNUS'
rm -f ~/'.wine/World of Warcraft 3.3.5/dosdevices/y:'
==== Patch ====
* End patch: ''1.12.1.5875''
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WoW 1.12.1.5875/wow-1.12.0-enus-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WoW 1.12.1.5875/wow-1.12.0.5595-to-1.12.1.5875-enus-patch.exe' && sync
===== The Burning Crusade =====
==== Disc Mount ====
udisksctl loop-setup --file ~/'Downloads/WoW (localhost)/TBC 2.4.3.8606/WoW-2.0.0.6080-enUS-expansion.iso'
ln -s '/media/'$USER'/WoW-2.0.0.6080-eNUS-EXPANSION' ~/'.wine/World of Warcraft 3.3.5/dosdevices/x:'
==== Install ====
****
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' winecfg /v 'win2k' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine 'X:\Installer.exe'
==== Disc Unmount ====
sync && umount '/media/'$USER'/WoW-2.0.0.6080-eNUS-EXPANSION'
rm -f ~/'.wine/World of Warcraft 3.3.5/dosdevices/x:'
==== Patch ====
* End patch: ''2.4.3.8606''
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/TBC 2.4.3.8606/wow-2.4.0-enus-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/TBC 2.4.3.8606/WoW-2.4.0.8089-to-2.4.1.8125-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/TBC 2.4.3.8606/WoW-2.4.1.8125-to-2.4.2.8278-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/TBC 2.4.3.8606/WoW-2.4.2.8278-to-2.4.3.8606-enUS-patch.exe' && sync
===== Wrath of the Lich King =====
==== Disc Mount ====
udisksctl loop-setup --file ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.0.1.8874-NA-combo.iso'
ln -s '/media/'$USER'/WOW-3.0.1.8874-NA-COMBO' ~/'.wine/World of Warcraft 3.3.5/dosdevices/w:'
==== Install ====
* ''[Skip]'' ((Account Management/upgrade process))
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' winecfg /v 'winxp' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine 'W:\Installer.exe'
==== Disc Unmount ====
sync && umount '/media/'$USER'/WOW-3.0.1.8874-NA-COMBO'
rm -f ~/'.wine/World of Warcraft 3.3.5/dosdevices/w:'
==== Patch ====
* End patch: ''3.3.5.12340'' ((aka ''3.3.5a''))
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.2.0-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.2.0.10192-to-3.3.0.10958-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.3.0.10958-to-3.3.0.11159-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.3.0.11159-to-3.3.2.11403-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.3.2.11403-to-3.3.3.11685-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.3.3.11685-to-3.3.3.11723-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.3.3.11723-to-3.3.5.12213-enUS-patch.exe' && sync
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'Downloads/WoW (localhost)/WotLK 3.3.5.12340/WoW-3.3.5.12213-to-3.3.5.12340-enUS-patch.exe' && sync
===== Move Optional Exes =====
mv -f ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/BackgroundDownloader.exe' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/BackgroundDownloader.exe~'
mv -f ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Launcher.exe' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Launcher.exe~'
mv -f ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Repair.exe' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Repair.exe~'
mv -f ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/WowError.exe' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/WowError.exe~'
===== Clean-up =====
rm -Rf ~/'.wine/World of Warcraft 3.3.5/dosdevices/d:' ~/'.wine/World of Warcraft 3.3.5/dosdevices/d::' ~/'Desktop/World of Warcraft.lnk'
rm -Rf ~/'Downloads/WoW (localhost)'
====== Libraries ======
===== DXVK =====
==== Release ====
* https://github.com/doitsujin/dxvk/releases
* Last tested: ''dxvk-2.7.1.tar.gz''
rm -Rf '/tmp/dxvk-'* && tar -xvzf ~/'Downloads/dxvk-'*'.tar.gz' -C '/tmp' && mv -fv '/tmp/dxvk-'*'/x32/d3d9.dll' ~/'.wine/World of Warcraft 3.3.5/drive_c/windows/syswow64' && rm -Rf '/tmp/dxvk-'*
==== Dll Override ====
****
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine REG ADD 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v 'd3d9' /t 'REG_SZ' /d 'native' /f
====== Settings ======
===== Config.wtf =====
* Can be pasted empty first-launch, and below existing options to override
* :?: Fullscreen borderless for first-launch might be required on Wayland to avoid partial-fullscreen first launch with cinematic/TOS ((it starts stretched ''1024x768'' but proper fullscreen res in-game works fine))
* 2025/12/17: ''gxCursor 0'' fixes flickering cursor ((might be an ''i915'' or GNOME/Wayland thing; cursor feels //slightly// less-responsive but playable))
<code>mkdir -p ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/WTF' && nano ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/WTF/Config.wtf'</code>
<code>
SET gxWindow "1"
SET gxMaximize "1"
SET windowResizeLock "1"</code>
<code>
SET realmName "localhost"
SET realmList "127.0.0.1"
SET gxApi "d3d9"
SET gxCursor "0"
SET DesktopGamma "1"
SET useUiScale "1"
SET uiScale "1.2"
SET violenceLevel "5"
SET componentCompress "0"
SET SmallCull "0"
SET basemip "0"
SET SkyCloudLOD "3"
SET environmentDetail "2"
SET groundEffectDensity "256"
SET groundEffectDist "140"
SET spellEffectLevel "250"</code>
===== realmlist.wtf =====
* [[servers:linux:games:trinitycore_3.3.5_localhost|localhost Server]]
mv --no-clobber --debug ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Data/enUS/realmlist.wtf' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Data/enUS/realmlist.wtf~'
echo 'set realmlist 127.0.0.1' | tee ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Data/enUS/realmlist.wtf' > '/dev/null'
===== Macros =====
==== Hide Time/Clock ====
* Hides the time on the minimap along with the hiding the time being shown on Calendar orb hover ([[https://us.forums.blizzard.com/en/wow/t/hide-clock-on-df-minimap/1685525/2|source]])
* :!: Interface -> Display -> ''[x]'' Show Clock ((needed for the macro to also hide the time on Calendar orb hover))
<code>
/run TimeManagerClockButton:Hide() TimeManagerClockButton:HookScript("OnShow", function(self) self:Hide() end) GameTimeFrame:HookScript("OnEnter", function() GameTooltip:SetOwner(UIParent) end)</code>
====== Desktop Launcher ======
===== 3.3.5 =====
mkdir -p ~/'.local/share/applications/wine/Programs/World of Warcraft' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Screenshots' && nano ~/'.local/share/applications/wine/Programs/World of Warcraft/World of Warcraft 3.3.5.desktop' && sed -i 's/'CHANGEME'/'$USER'/g' ~/'.local/share/applications/wine/Programs/World of Warcraft/World of Warcraft 3.3.5.desktop' && update-desktop-database --quiet ~/'.local/share/applications'
<code>
[Desktop Entry]
Name=World of Warcraft 3.3.5
Categories=Game;
Exec='/bin/bash' -c "cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' -d3d9"
Type=Application
StartupNotify=false
Icon=/home/CHANGEME/.wine/Icons/WoW-335-256.png
StartupWMClass=wow.exe
Actions=Server;Saves;Update;Screenshots;Window;DB-Optimize;Kill;Notes;
[Desktop Action Server]
Exec='/bin/bash' -c "~/'Projects/TrinityCore-335/scripts/localhost-server-start.sh'"
Name=Server - Start
[Desktop Action Saves]
Exec='/bin/bash' -c "~/'Projects/TrinityCore-335/scripts/localhost-databases-backup.sh'"
Name=Databases Back-up
[Desktop Action Update]
Exec='/bin/bash' -c "'/usr/bin/ptyxis' --standalone --title='TC 3.3.5 [Updater]' -- ~/'Projects/TrinityCore-335/scripts/localhost-server-update.sh'"
Name=Update Local Server
[Desktop Action Screenshots]
Exec='/bin/bash' -c "gio open ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Screenshots'"
Name=Screenshots
[Desktop Action Window]
Exec='/bin/bash' -c "cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine explorer /desktop='WoW_3.3.5','1280x720' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' -d3d9"
Name=Start WoW (Windowed)
[Desktop Action DB-Optimize]
Exec='/bin/bash' -c "~/'Projects/TrinityCore-335/scripts/localhost-database-maintenance.sh'"
Name=Optimize DBs
[Desktop Action Kill]
Exec='/bin/bash' -c "WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wineserver -k"
Name=Force-close WoW
[Desktop Action Notes]
Exec='/bin/bash' -c "gio open 'https://wiki.realmofespionage.xyz/games;linux;wine;world_of_warcraft_3.3.5' 'https://wiki.realmofespionage.xyz/servers;linux;games;trinitycore_3.3.5_localhost'"
Name=Install Notes
# End</code>
==== Icon ====
****
<code>
mkdir -p '/tmp/icons' ~/'.wine/Icons' && wrestool --extract --all --raw --output='/tmp/icons' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' && mv -f '/tmp/icons/Wow.exe_DATA___GDF_THUMBNAIL_1024' ~/'.wine/Icons/WoW-335-256.png' && rm -Rf '/tmp/icons'</code>
====== Quick Commands ======
===== Winecfg =====
****
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' winecfg
===== Winetricks =====
****
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' winetricks
===== Registry Editor =====
****
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' regedit
===== Kill =====
WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wineserver --kill
killall -9 'Wow.exe'
===== Execute =====
==== Wrath of the Lich King ====
* ''d3d9''
cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' -console -d3d9
=== Virtual Desktop ===
* 1280x720
cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine explorer /desktop='WoW_3.3.5','1280x720' ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' -console -d3d9
==== Specific Graphics APIs ====
=== D3D9 ===
* Default when no API is specified on command-line nor ''Config.wtf''
<code>-d3d9</code>
<code>cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' -console -d3d9</code>
<code>cat ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Logs/gx.log' | grep 'CGxDeviceD3d'</code>
<code>gio open ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Logs/gx.log'</code>
=== D3D9Ex ===
* [[https://web.archive.org/web/20100212202408/http://forums.worldofwarcraft.com/thread.html?topicId=21723843232&sid=1|3.3.0 - d3d9ex mode, ATI, and 134 crashes]]
* :?: This may be more ideal for Vsync, certain compositors, G-SYNC/FreeSync, remote streaming, or ''gamescope''
<code>-d3d9ex</code>
<code>cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' -console -d3d9ex</code>
<code>cat ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Logs/gx.log' | grep 'CGxDeviceD3d9Ex'</code>
<code>gio open ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Logs/gx.log'</code>
=== OpenGL ===
* Disables the in-game Video -> ''Hardware Cursor'' option
* Limits ''Shadow Quality'' to blobs and no dynamic options
* 2024/10/29: Doesn't work with Wine ''graphics=wayland''
<code>-opengl</code>
<code>cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && WINEPREFIX=~/'.wine/World of Warcraft 3.3.5' wine ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Wow.exe' -console -opengl</code>
<code>cat ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Logs/gx.log' | grep 'CGxDeviceOpenGl'</code>
<code>gio open ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/Logs/gx.log'</code>
===== Root Folder =====
****
gio open ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft'
===== DXVK TODO =====
* https://github.com/doitsujin/dxvk/blob/master/dxvk.conf
nano ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft/dxvk.conf'
<code>
# General
d3d9.samplerLodBias = "-2.0"
# HUD
#dxvk.hud = "full"
# End</code>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment