Next revision | Previous revision |
servers:linux:games:mangos_zero_vanilla_localhost [2025/10/18 01:48] – created (large WIP) Sean Rhone | servers:linux:games:mangos_zero_vanilla_localhost [2025/10/18 21:25] (current) – [Settings] Sean Rhone |
---|
===== Prerequisites ===== | ===== Prerequisites ===== |
| |
* [[windows:10|Windows 10 (21H2)]] | * [[linux:distros:opensuse_tumbleweed_xfce|openSUSE Tumbleweed (Xfce)]] |
* [[programs;windows;git|Git]] | * [[games:linux:wine:world_of_warcraft_1.12.1|World of Warcraft 1.12.1]] |
* [[servers;windows;mariadb|MariaDB]] (Dev components required; no service/networking) | |
* [[games;windows;world_of_warcraft_1.12.1|World of Warcraft 1.12.1]] | |
| |
====== Dependencies ====== | ====== Dependencies ====== |
| |
===== Visual Studio 2022 ===== | **** |
| |
* VS2022 [[https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022|VisualStudioSetup.exe]] | sudo zypper install git-core cmake clang mariadb libmariadb-devel |
| |
* Pause installer to prevent initial auto-download of unnecessary components | ====== Download Source ====== |
| |
==== Required Components ==== | * https://github.com/mangoszero/server/commits/master/ |
| |
* Desktop development with C++ (C++ core desktop features) | cd ~ && mkdir -p ~/'Projects' && rm -Rf ~/'Projects/MaNGOS-Zero/src' && git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/mangoszero/server.git' ~/'Projects/MaNGOS-Zero/src' |
* MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest) | |
* Windows 11 SDK (10.0.26100.4654) | |
| |
"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\setup.exe" | ====== Database ====== |
| |
===== CMake ===== | ===== Settings ===== |
| |
* https://cmake.org/download/ | rm -Rf ~/'Projects/MaNGOS-Zero/mariadb/database' && mkdir -p ~/'Projects/MaNGOS-Zero/mariadb/database' && nano ~/'Projects/MaNGOS-Zero/mariadb/custom.cnf' |
* Last tested: ''cmake-4.1.1-windows-x86_64.msi'' | |
| |
* ''[ ]'' Add CMake to the PATH environment variable | <code> |
| [client] |
| default-character-set = 'utf8mb4' |
| |
===== OpenSSL ===== | [mariadb-client] |
| default-character-set = 'utf8mb4' |
| |
* https://slproweb.com/products/Win32OpenSSL.html (:!: not Light) | [mariadbd] |
* Last tested: ''Win64OpenSSL-3_5_4.msi'' | 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' |
| |
* Copy OpenSSL DLLs to: | # End</code> |
* ''[x]'' The OpenSSL binaries (/bin) directory | |
| |
====== Download Source ====== | ===== Initialize ===== |
| |
* https://github.com/mangoszero/server/commits/master/ | **** |
| |
"%ProgramFiles%\Git\bin\git.exe" clone --branch "master" --depth "1" --recurse-submodules "https://github.com/mangoszero/server.git" "%UserProfile%\Projects\MaNGOS-Zero\src" | mariadb-install-db --datadir=$HOME/'Projects/MaNGOS-Zero/mariadb/database' --defaults-file=$HOME/'Projects/MaNGOS-Zero/mariadb/custom.cnf' |
| |
| ===== Initial Setup ===== |
| |
| ==== Server Start ==== |
| |
| **** |
| |
| '/usr/sbin/mariadbd' --datadir=$HOME/'Projects/MaNGOS-Zero/mariadb/database' --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' |
| |
| ==== Set-up ==== |
| |
| * Enter current password for root: ''(enter)'' |
| * Switch to unix_socket authentication: ''Y'' |
| * :!: Change the root password: ''N'' |
| * Remove anonymous users: ''Y'' |
| * Disallow root login remotely: ''Y'' |
| * Remove test database and access to it: ''Y'' |
| * Reload privilege tables now: ''Y'' |
| |
| mariadb-secure-installation --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' --user=$USER |
| |
| mariadb-admin 'shutdown' --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' --user=$USER |
| |
====== Databases ====== | ====== Databases ====== |
===== Connect ===== | ===== Connect ===== |
| |
"%ProgramFiles%\MariaDB 12.1\bin\mariadbd.exe" --defaults-file="%ProgramFiles%\MariaDB 12.1\data\my.ini" | * 2 Terminal windows |
| |
"%ProgramFiles%\MariaDB 12.1\bin\mariadb.exe" -u "root" -p | '/usr/sbin/mariadbd' --datadir=$HOME/'Projects/MaNGOS-Zero/mariadb/database' --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' |
| |
| mariadb --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' --user=$USER |
| |
===== Databases ===== | ===== Databases ===== |
| |
CREATE DATABASE realmd; | CREATE DATABASE realmd0; |
| |
CREATE DATABASE character0; | CREATE DATABASE character0; |
===== Users ===== | ===== Users ===== |
| |
CREATE USER 'realmd'@'localhost' IDENTIFIED BY 'x'; | CREATE USER 'realmd0'@'localhost' IDENTIFIED BY 'x'; |
| |
CREATE USER 'character0'@'localhost' IDENTIFIED BY 'x'; | CREATE USER 'character0'@'localhost' IDENTIFIED BY 'x'; |
===== Permissions ===== | ===== Permissions ===== |
| |
GRANT ALL PRIVILEGES ON realmd.* to 'realmd'@'localhost'; | GRANT ALL PRIVILEGES ON realmd0.* to 'realmd0'@'localhost'; |
| |
GRANT ALL PRIVILEGES ON character0.* to 'character0'@'localhost'; | GRANT ALL PRIVILEGES ON character0.* to 'character0'@'localhost'; |
GRANT ALL PRIVILEGES ON mangos0.* to 'mangos0'@'localhost'; | GRANT ALL PRIVILEGES ON mangos0.* to 'mangos0'@'localhost'; |
| |
FLUSH PRIVILEGES; | FLUSH PRIVILEGES;EXIT; |
| |
EXIT | |
| |
====== Initial Compile ====== | ====== Initial Compile ====== |
| |
===== CMake ===== | |
| |
**** | **** |
| |
<code>"%ProgramFiles%\CMake\bin\cmake.exe" -S "%UserProfile%\Projects\MaNGOS-Zero\src" -B "%UserProfile%\Projects\MaNGOS-Zero\build" -G "Visual Studio 17 2022" --fresh -Wno-dev -DMySQL_INCLUDE_DIR="%ProgramFiles%\MariaDB 12.1\include\mysql" -DMySQL_LIBRARY="%ProgramFiles%\MariaDB 12.1\lib\libmariadb.lib" -DDEBUG="0" -DPLAYERBOTS="0" -DSCRIPT_LIB_ELUNA="0" -DBUILD_TOOLS="1"</code> | rm -Rf ~/'Projects/MaNGOS-Zero/build' ~/'Projects/MaNGOS-Zero/run' && mkdir -p ~/'Projects/MaNGOS-Zero/build' ~/'Projects/MaNGOS-Zero/run' && cd ~/'Projects/MaNGOS-Zero/build' && CC='/usr/bin/clang' CXX='/usr/bin/clang++' cmake ~/'Projects/MaNGOS-Zero/src' -DCMAKE_INSTALL_PREFIX=~/'Projects/MaNGOS-Zero/run' -DCONF_INSTALL_DIR=~/'Projects/MaNGOS-Zero/run/bin' -DCMAKE_BUILD_TYPE='Release' -DDEBUG='0' -DPLAYERBOTS='0' -DSCRIPT_LIB_ELUNA='0' -DBUILD_TOOLS='1' && make --jobs=$(nproc) install |
| |
===== Compile ===== | |
| |
* 2-3 minutes i5-8400H ((2025/10/08: ''00:02:38.58'')) | |
| |
<code>"%ProgramFiles%\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe" "%UserProfile%\Projects\MaNGOS-Zero\build\ALL_BUILD.vcxproj" -target:"Rebuild" -property:"Configuration=Release"</code> | |
| |
===== Server Files ===== | |
| |
MKDIR "%UserProfile%\Projects\MaNGOS-Zero\server" & COPY /Y "%UserProfile%\Projects\MaNGOS-Zero\build\src\realmd\Release\realmd.exe" "%UserProfile%\Projects\MaNGOS-Zero\server" | |
| |
MKDIR "%UserProfile%\Projects\MaNGOS-Zero\server" & COPY /Y "%UserProfile%\Projects\MaNGOS-Zero\build\src\mangosd\Release\mangosd.exe" "%UserProfile%\Projects\MaNGOS-Zero\server" | |
| |
MKDIR "%UserProfile%\Projects\MaNGOS-Zero\server" & COPY /Y "%ProgramFiles%\MariaDB 12.1\lib\libmariadb.dll" "%UserProfile%\Projects\MaNGOS-Zero\server" | |
| |
MKDIR "%UserProfile%\Projects\MaNGOS-Zero\server" & COPY /Y "%ProgramFiles%\OpenSSL-Win64\bin\libcrypto-3-x64.dll" "%UserProfile%\Projects\MaNGOS-Zero\server" | |
| |
====== Content ====== | ====== Content ====== |
| |
* Expects [[games;windows;world_of_warcraft_2.4.3#install|World of Warcraft 1.12.1]] | * Expects [[games:linux:wine:world_of_warcraft_1.12.1|World of Warcraft 1.12.1]] |
| |
DIR "%ProgramFiles(x86)%\World of Warcraft 1.12.1\Wow.exe" | ls ~/'.wine/World of Warcraft 1.12.1/drive_c/Program Files/World of Warcraft/WoW.exe' |
| |
===== DBCs and Maps ===== | ===== DBCs and Maps ===== |
**** | **** |
| |
MKDIR "%UserProfile%\Projects\MaNGOS-Zero\server" & "%UserProfile%\Projects\MaNGOS-Zero\build\src\tools\Extractor_projects\Release\map-extractor.exe" -i "%ProgramFiles(x86)%\World of Warcraft 1.12.1" -o "%UserProfile%\Projects\MaNGOS-Zero\server" -f "0" | ~/'Projects/MaNGOS-Zero/run/bin/tools/map-extractor' -i ~/'.wine/World of Warcraft 1.12.1/drive_c/Program Files/World of Warcraft' -o ~/'Projects/MaNGOS-Zero/run/bin' -f '0' |
| |
===== VMaps ===== | ===== VMaps ===== |
**** | **** |
| |
MKDIR "%UserProfile%\Projects\MaNGOS-Zero\server" & CD "%UserProfile%\Projects\MaNGOS-Zero\server" && "%UserProfile%\Projects\MaNGOS-Zero\build\src\tools\Extractor_projects\Release\vmap-extractor.exe" -i "%ProgramFiles(x86)%\World of Warcraft 1.12.1" | cd ~/'Projects/MaNGOS-Zero/run/bin' && ~/'Projects/MaNGOS-Zero/run/bin/tools/vmap-extractor' -i ~/'.wine/World of Warcraft 1.12.1/drive_c/Program Files/World of Warcraft' |
| |
===== MMaps ===== | ===== MMaps ===== |
| |
* :!: ~10 minutes i5-8400H ((2025/10/08: ''746 seconds'')) | * :!: ~10 minutes i5-8400H ((2025/10/18: ''568 seconds'')) |
* ''--threads %NUMBER_OF_PROCESSORS%'' | * '' --threads $(nproc)'' |
| |
MKDIR "%UserProfile%\Projects\MaNGOS-Zero\server" & CD "%UserProfile%\Projects\MaNGOS-Zero\server" && "%UserProfile%\Projects\MaNGOS-Zero\build\src\tools\Extractor_projects\Release\mmap-extractor.exe" -i "%ProgramFiles(x86)%\World of Warcraft 1.12.1" --offMeshInput "%UserProfile%\Projects\MaNGOS-Zero\src\src\tools\Extractor_Binaries\offmesh.txt" --bigBaseUnit "true" --threads %NUMBER_OF_PROCESSORS% | cd ~/'Projects/MaNGOS-Zero/run/bin' && ~/'Projects/MaNGOS-Zero/run/bin/tools/mmap-extractor' -i ~/'.wine/World of Warcraft 1.12.1/drive_c/Program Files/World of Warcraft' --offMeshInput ~/'Projects/MaNGOS-Zero/run/bin/tools/offmesh.txt' --bigBaseUnit 'true' --threads $(nproc) |
| |
===== Clean-up ===== | ===== Clean-up ===== |
**** | **** |
| |
RMDIR /S /Q "%UserProfile%\Projects\MaNGOS-Zero\server\Buildings" | rm -Rf ~/'Projects/MaNGOS-Zero/run/bin/Buildings' |
| |
====== World Database ====== | ====== World Database ====== |
* https://github.com/mangosone/database/commits/master/ | * https://github.com/mangosone/database/commits/master/ |
| |
"%ProgramFiles%\Git\bin\git.exe" clone --branch "master" --depth "1" --recurse-submodules "https://github.com/mangoszero/database.git" "%UserProfile%\Projects\MaNGOS-Zero\database" | cd ~ && rm -Rf ~/'Projects/MaNGOS-Zero/database-src' && git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/mangoszero/database.git' ~/'Projects/MaNGOS-Zero/database-src' |
| |
==== Base Imports ==== | ==== Base Imports ==== |
===== Restore ===== | ===== Restore ===== |
| |
* [[#databases|Initial set-up]] | **** |
| |
"%ProgramFiles%\MariaDB 12.1\bin\mariadbd.exe" --defaults-file="%ProgramFiles%\MariaDB 12.1\data\my.ini" | '/usr/sbin/mariadbd' --datadir=$HOME/'Projects/MaNGOS-Zero/mariadb/database' --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' |
| |
==== realmd ==== | ==== realmd ==== |
| |
"%ProgramFiles%\MariaDB 12.1\bin\mariadb.exe" -u "root" -p --execute="CREATE DATABASE realmd" | mariadb --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' --user=$USER --execute='CREATE DATABASE realmd0' |
| |
"%ProgramFiles%\MariaDB 12.1\bin\mariadb.exe" -u "root" -p "realmd" < "%UserProfile%\Downloads\localhost-realmd.sql" | mariadb --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' --user=$USER 'realmd0' < ~/'Downloads/localhost-realmd0.sql' |
| |
==== character0 ==== | ==== character0 ==== |
| |
"%ProgramFiles%\MariaDB 12.1\bin\mariadb.exe" -u "root" -p --execute="CREATE DATABASE character0" | mariadb --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' --user=$USER --execute='CREATE DATABASE character0' |
| |
"%ProgramFiles%\MariaDB 12.1\bin\mariadb.exe" -u "root" -p "character0" < "%UserProfile%\Downloads\localhost-character0.sql" | mariadb --socket=$HOME/'Projects/MaNGOS-Zero/mariadb/mariadb.sock' --user=$USER 'character0' < ~/'Downloads/localhost-character0.sql' |
| |
====== Quick Commands ====== | ====== Quick Commands ====== |
**** | **** |
| |
"explorer.exe" "%UserProfile%\Projects\MaNGOS-Zero\server" | gio open ~/'Projects/MaNGOS-Zero/run/bin' |
| |
====== TODOs ====== | ====== TODOs ====== |