====== Information ======
* TrinityCore ((https://www.trinitycore.org))
* 3.3.5 ((https://github.com/TrinityCore/TrinityCore/tree/3.3.5))
* These notes provide a local singleplayer server for World of Warcraft 3.3.5 on Windows (see [[servers;linux;games;trinitycore_3.3.5_localhost|these notes]] for Linux)
===== Prerequisites =====
* [[windows:10|Windows 10]]
* [[games;windows;world_of_warcraft_3.3.5|World of Warcraft 3.3.5 (Windows)]]
===== Resources =====
* [[https://trinitycore.org/|TrinityCore]]
* [[https://trinitycore.info/|TrinityCore MMo Project Wiki]]
===== TODOs =====
* Start/desktop shortcuts
* Set MariaDB to manual start Windows Service (install-time?) and have shortcuts to start/stop it (so not 24/7 background service even if minimal)
====== Dependencies ======
* https://trinitycore.info/en/install/requirements/windows
* 2024/10/14: Git, Visual Studio 2022, MariaDB, Boost, CMake, OpenSSL
* SQLyog for GUI database management
===== Git =====
* https://www.git-scm.com/download/win
* Last tested: ''Git-2.47.0.2-64-bit.exe''
* :!: Git from the command line and also from 3rd-party software (make sure it's selected)
===== Visual Studio 2022 =====
* https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSFeaturesPage&passive=true&tailored=cplus&cid=2031#cplusplus
* Install can be Modified after the auto-install to recover about 9 GB space
* Workloads -> Desktop development with C++ (uncheck Mobile/Game/Linux dev C++)
* Individual components: Optional ((''17.11.5'': Uncheck GitHub Copilot, NuGet package manager, vcpkg package manager, C++ Build Insights, C++ AddressSanitizer, C++ profiling tools, Just-In-Time debugger, Test Adapter for Boost.Test, IntelliCode, Security Issue Analysis))
===== MariaDB Server =====
* https://mariadb.org/download/
* Last tested: ''mariadb-11.5.2-winx64.msi''
* No Third party tools
* Use UTF8 as default server's character set
===== SQLyog Community Edition =====
* https://github.com/webyog/sqlyog-community/wiki/Downloads
* Last tested: ''SQLyog-13.3.0-0.x64Community.exe''
===== Boost =====
* https://sourceforge.net/projects/boost/files/boost-binaries/
* Last tested: ''boost_1_86_0-msvc-14.3-64.exe''
SETX "BOOST_ROOT" "%SystemDrive%/local/boost_1_86_0"
===== CMake =====
* https://cmake.org/download/
* Last tested: ''cmake-3.31.0-rc3-windows-x86_64.msi''
===== OpenSSL =====
* https://slproweb.com/products/Win32OpenSSL.html (:!: not Light)
* Last tested: ''Win64OpenSSL-3_4_0.msi''
* :!: Copy OpenSSL DLLs to: The OpenSSL binaries (/bin) directory
====== Download Source ======
git clone --branch "3.3.5" --depth "1" --recurse-submodules "https://github.com/TrinityCore/TrinityCore.git" "%UserProfile%\Projects\TrinityCore-335\src"
explorer "%UserProfile%\Projects\TrinityCore-335\src"
====== Databases ======
* All Database management including backups/restores are done through SQLyog
"%ProgramFiles%\SQLyog Community\SQLyogCommunity.exe"
===== Create DBs =====
* Ctrl + D or Database -> Create Database
* Database charset: ''utf8mb4''
* Database collation: ''utf8mb4_unicode_ci''
authserver
characters
worldserver
===== DB Users =====
* Ctrl + U or Tools -> User Manager
* All Host as ''localhost''
* Click the database with the same name as username and Select All privileges
authserver
characters
worldserver
====== Initial Compile ======
* https://trinitycore.info/en/install/Core-Installation/windows-core-installation
* :!: Ideally log-out and back in or reboot to update Environment Variables before starting
===== CMake =====
* Visual Studio 17 2022
* [x] ''WITHOUT_METRICS''
MKDIR "%UserProfile%\Projects\TrinityCore-335\build\bin\Release"
"%ProgramFiles%\CMake\bin\cmake-gui.exe"
"%UserProfile%\Projects\TrinityCore-335\src"
"%UserProfile%\Projects\TrinityCore-335\build"
==== MariaDB ====
* [x] Advanced (next to Add Entry)
* Search -> ''mysql''
* ''MYSQL_EXECUTABLE''
"%ProgramFiles%\MariaDB 11.5\bin\mariadb.exe"
* ''MYSQL_INCLUDE_DIR''
"%ProgramFiles%\MariaDB 11.5\include\mysql"
* ''MYSQL_LIBRARY''
"%ProgramFiles%\MariaDB 11.5\lib\libmariadb.lib"
===== Visual Studio =====
* Build -> Configuration Manager -> Active solution configuration: Release
* Build -> Rebuild Solution
===== DLLs =====
COPY /Y "%ProgramFiles%\MariaDB 11.5\lib\libmariadb.dll" "%UserProfile%\Projects\TrinityCore-335\build\bin\Release"
COPY /Y "%ProgramFiles%\OpenSSL-Win64\bin\legacy.dll" "%UserProfile%\Projects\TrinityCore-335\build\bin\Release"
COPY /Y "%ProgramFiles%\OpenSSL-Win64\bin\libssl-3-x64.dll" "%UserProfile%\Projects\TrinityCore-335\build\bin\Release"
COPY /Y "%ProgramFiles%\OpenSSL-Win64\bin\libcrypto-3-x64.dll" "%UserProfile%\Projects\TrinityCore-335\build\bin\Release"
====== Update ======
git -C "%UserProfile%\Projects\TrinityCore-335\src" reset --hard && git -C "%UserProfile%\Projects\TrinityCore-335\src" pull origin "3.3.5" --rebase
"%ProgramFiles%\CMake\bin\cmake-gui.exe"
* Visual Studio -> Build -> Build Solution
====== Content ======
* https://trinitycore.info/en/install/Server-Setup
* Expects [[games:windows:world_of_warcraft_3.3.5|World of Warcraft 3.3.5]]
* Move ''mapextractor'' ''mmaps_generator'' ''vmap4assembler'' and ''vmap4extractor'' to the WoW folder or use ''COPY'' commands below
explorer "%UserProfile%\Projects\TrinityCore-335\build\bin\Release"
explorer "%ProgramFiles(x86)%\World of Warcraft 3.3.5"
===== DBCs, Maps, and Cameras =====
COPY /Y "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\mapextractor.exe" "%ProgramFiles(x86)%\World of Warcraft 3.3.5"
CD "%ProgramFiles(x86)%\World of Warcraft 3.3.5" && "mapextractor.exe" -f "0"
===== VMaps =====
==== Extract ====
COPY /Y "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\vmap4extractor.exe" "%ProgramFiles(x86)%\World of Warcraft 3.3.5"
CD "%ProgramFiles(x86)%\World of Warcraft 3.3.5" && "vmap4extractor.exe" -l
==== Assemble ====
COPY /Y "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\vmap4assembler.exe" "%ProgramFiles(x86)%\World of Warcraft 3.3.5"
CD "%ProgramFiles(x86)%\World of Warcraft 3.3.5" && "vmap4assembler.exe" "Buildings" "vmaps"
===== MMaps =====
COPY /Y "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\mmaps_generator.exe" "%ProgramFiles(x86)%\World of Warcraft 3.3.5"
CD "%ProgramFiles(x86)%\World of Warcraft 3.3.5" && "mmaps_generator.exe" --bigBaseUnit "true" --threads "8"
===== Move Files =====
* Move ''Cameras'' ''dbc'' ''maps'' ''mmaps'' and ''vmaps'' folders to the ''Release'' folder
explorer "%UserProfile%\Projects\TrinityCore-335\build\bin\Release" && explorer "%ProgramFiles(x86)%\World of Warcraft 3.3.5"
===== Clean-up =====
* Remove ''Buildings'' and extractor ''.exe''s
explorer "%ProgramFiles(x86)%\World of Warcraft 3.3.5"
===== World Database =====
==== TDB ====
* https://trinitycore.info/en/install/Database-Installation
* https://github.com/TrinityCore/TrinityCore/releases
* Download the latest ''TDB 335'' ''.7z'' with a web browser
* Extract ''TDB_full_world_335.sql'' to ''Release'' folder
explorer "%UserProfile%\Projects\TrinityCore-335\build\bin\Release"
====== 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]])
* Last updated: 2024/10/14
COPY /Y "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\authserver.conf.dist" "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\authserver.conf"
MKDIR "%UserProfile%\Projects\TrinityCore-335\authserver.conf.d"
notepad "%UserProfile%\Projects\TrinityCore-335\authserver.conf.d\localhost-authserver.conf"
[authserver]
MySQLExecutable = "C:\Program Files\MariaDB 11.5\bin\mariadb.exe"
LoginDatabaseInfo = "localhost;3306;authserver;x;authserver"
Updates.EnableDatabases = 1
===== worldserver =====
* Last commit: [[https://github.com/TrinityCore/TrinityCore/commit/e11613eeb5dcad16f5908c9c7dd8109baabe9272|Feb 16, 2023]] ''e11613e''
* [[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]])
* Last updated: 2024/10/14
COPY /Y "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\worldserver.conf.dist" "%UserProfile%\Projects\TrinityCore-335\build\bin\Release\worldserver.conf"
MKDIR "%UserProfile%\Projects\TrinityCore-335\worldserver.conf.d"
notepad "%UserProfile%\Projects\TrinityCore-335\worldserver.conf.d\localhost-worldserver.conf"
[worldserver]
MySQLExecutable = "C:\Program Files\MariaDB 11.5\bin\mariadb.exe"
LoginDatabaseInfo = "localhost;3306;authserver;x;authserver"
WorldDatabaseInfo = "localhost;3306;worldserver;x;worldserver"
CharacterDatabaseInfo = "localhost;3306;characters;x;characters"
Quests.LowLevelHideDiff = -1
Quests.HighLevelHideDiff = -1
Motd = "Welcome to your localhost server!"
Server.LoginInfo = 1
====== Realm ======
===== authserver =====
* ''authserver'' needs started at least once to create the tables and to start ''worldserver'' for account creation
* Ctrl + C to exit
CD "%UserProfile%\Projects\TrinityCore-335\build\bin\Release" && "authserver.exe" --config-dir "%UserProfile%\Projects\TrinityCore-335\authserver.conf.d"
====== Create GM Account ======
* Change ''x'' to password
CD "%UserProfile%\Projects\TrinityCore-335\build\bin\Release" && "worldserver.exe"
account create Espionage724 x
account set gmlevel Espionage724 3 -1
server shutdown 1
====== Launch ======
===== Commands =====
CD "%UserProfile%\Projects\TrinityCore-335\build\bin\Release" && "authserver.exe" --config-dir "%UserProfile%\Projects\TrinityCore-335\authserver.conf.d"
CD "%UserProfile%\Projects\TrinityCore-335\build\bin\Release" && "worldserver.exe" --config-dir "%UserProfile%\Projects\TrinityCore-335\worldserver.conf.d"