The previous seed pinned auth/realmlist to production values (`hsrwow.net` + RealmServerPort 47497), which silently bricked every fresh local install: after auth login the realm hand-off pointed clients at our public host, where their local credentials don't exist, and they were dropped within a frame. Seed now matches stock AzerothCore for solo dev: - realmlist.address = 127.0.0.1 (was hsrwow.net) - RealmServerPort = 3724 (was 47497) Production owners apply both overrides post-dbimport via a one-shot SQL UPDATE + an authserver.conf edit. Documented end-to-end in contrib/fractured-dev-extras/BUILD-NATIVE.md (new "Production deployment overrides" section) and the disconnect-after-login symptom is called out in CLIENT-PATCHES.md. Co-authored-by: Cursor <cursoragent@cursor.com>
10 KiB
Fractured — Native Build Guide
This is a fork of AzerothCore with a custom
CLASS_PARAGON (id 12), the mod-paragon server module, and mod-ale
(LuaJIT scripting) vendored in-tree. This document covers building the
server natively (no Docker). For the Docker workflow, see
docker-compose.yml plus docker-compose.override.yml at the repo root.
The upstream AzerothCore wiki is the authoritative reference for OS prerequisites; everything here is just the deltas you need on top of it.
- Linux: https://www.azerothcore.org/wiki/linux-requirements
- Windows: https://www.azerothcore.org/wiki/windows-requirements
- macOS: https://www.azerothcore.org/wiki/macos-requirements
Fractured client + network defaults
Stock-friendly defaults for fresh local installs. A git clone ->
docker compose up (or native install) lets a single developer log in
from the same machine without any post-install config tweaks.
authserver.conf->RealmServerPort= 3724 (stock WoW). A patchedWow.exewithset realmlist 127.0.0.1(no port) reaches the auth handshake.realmlisttable ->portis the world port (default 8085, matchesWorldServerPortinworldserver.conf.dist). Auth tells the client to handshake to this port for the world hand-off.realmlisttable ->addressdefaults to127.0.0.1in the base SQL. The auth server hands this address to clients after login, so 127.0.0.1 means "talk to the world server on the same machine auth is running on" -- correct for solo dev. Override on production deploys, see Production deployment overrides below.
Production deployment overrides
Production Fractured runs on a remote VPS at hsrwow.net with auth
bound to a non-stock port (47497 -- 3724 was unavailable on that host).
Apply the overrides once per fresh dbimport on the production box.
-- Run against acore_auth on the production database after first dbimport:
UPDATE realmlist
SET address = 'hsrwow.net',
port = 8085 -- world port; leave at 8085 unless changed
WHERE id = 1;
Edit the production authserver.conf (NOT authserver.conf.dist)
to bind the auth listener to the production port:
RealmServerPort = 47497
Restart the auth server. Production clients connect with:
set realmlist hsrwow.net:47497
The Fractured-patched 3.3.5 client supports the host:port syntax;
stock 3.3.5 clients do not, so any contributor distributing the
client bundle for production must include the patched Wow.exe from
the GitHub release.
What you get when you build this fork
- Worldserver with
CLASS_PARAGONand Paragon-aware DK rune / sticky combo-point logic linked into core. modules/mod-paragon(statically linked): Paragon player hooks, AE/TE currency, gametables,.paragonchat commands.modules/mod-ale(statically linked): the ALE Lua scripting engine, which fetches LuaJIT at configure time. Requires-DLUA_VERSION.- Tools (
mapextractor,vmap4_*,mmaps_generator) for client data.
1. Install prerequisites
Linux (Ubuntu 22.04 / Debian 12)
sudo apt update
sudo apt install -y \
git cmake make gcc g++ clang \
libmariadb-dev-compat libmariadb-dev default-libmysqlclient-dev \
libssl-dev libbz2-dev libreadline-dev libncurses-dev \
libboost-all-dev \
mariadb-server p7zip-full
If you prefer MySQL 8 over MariaDB, install mysql-server instead and
keep default-libmysqlclient-dev.
Windows 10 / 11
Install (any recent versions):
- Visual Studio 2022 with the Desktop development with C++ workload (MSVC v143 toolset, Windows 10/11 SDK).
- Git for Windows.
- CMake 3.16+ (the GUI is fine).
- MySQL Server 8 or MariaDB 10.x with the C connector development headers (the MySQL Installer's "Connector C" component).
- OpenSSL 3.x (e.g. the Shining Light
Win64 build — pick the full installer, not "Light"). Set the
OPENSSL_ROOT_DIRenv var to its install path if CMake can't find it. - Boost ≥ 1.74 prebuilt for MSVC (e.g. from
https://sourceforge.net/projects/boost/files/boost-binaries/). Set
BOOST_ROOTto its install path so CMake can locate it. - 7-Zip for extracting client data archives.
macOS
Use Homebrew:
brew install cmake boost openssl@3 mysql readline ncurses p7zip
2. Clone the repo
git clone https://github.com/Dawnforger/Fractured.git
cd Fractured
The mod-paragon and mod-ale modules are already in modules/; no
extra git clone needed.
3. Configure with CMake
mod-ale requires you to pick a Lua version at configure time. Use
LuaJIT to match what the team's Docker image uses:
Linux / macOS
mkdir -p build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DLUA_VERSION=luajit \
-DTOOLS_BUILD=all \
-DSCRIPTS=static \
-DMODULES=static \
-DWITH_WARNINGS=ON
GCC works too (drop the CMAKE_*_COMPILER lines or set them to gcc/g++).
Windows (CMake GUI)
- Source code → repo root (
Fractured/). - Build the binaries →
Fractured/build. - Configure → choose Visual Studio 17 2022 generator, x64.
- After the first configure pass fails or warns about Lua, set:
LUA_VERSION=luajitCMAKE_INSTALL_PREFIX= e.g.C:/azeroth-serverBOOST_ROOT(if not already detected)OPENSSL_ROOT_DIR(if not already detected)MYSQL_INCLUDE_DIR/MYSQL_LIBRARYif MySQL wasn't auto-found
- Configure until clean, then Generate, then Open Project.
Important flags
| Flag | Recommended | Why |
|---|---|---|
LUA_VERSION |
luajit |
Required by mod-ale; matches team Docker image. |
MODULES |
static |
Statically links mod-paragon and mod-ale into the worldserver. |
SCRIPTS |
static |
Default; static script linkage. |
TOOLS_BUILD |
all |
Builds map/mmap/vmap extractors. Set to none once you have client data. |
CMAKE_BUILD_TYPE |
RelWithDebInfo |
Default for production-quality builds with usable backtraces. Use Debug only when stepping through code. |
4. Compile
Linux / macOS
make -j$(nproc) # or: -j$(sysctl -n hw.ncpu) on macOS
make install
Windows
In Visual Studio, set the configuration to RelWithDebInfo / x64, then:
- Build
ALL_BUILD. - Build
INSTALL.
Or from a Developer PowerShell for VS 2022 in the build directory:
cmake --build . --config RelWithDebInfo
cmake --install . --config RelWithDebInfo
If the build OOMs on a low-RAM machine, pass
-j 4(or fewer) tomake/cmake --build. The Docker image hard-caps-j 4for the same reason.
5. Set up databases
The standard AzerothCore three-database layout (acore_auth,
acore_world, acore_characters) applies unchanged. Follow:
https://www.azerothcore.org/wiki/database-installation
Easiest path: run the worldserver once with empty databases and let
AC_FORCE_CREATE_DB=1 populate them, or use dbimport from the
install dir.
The Fractured-specific SQL (mod-paragon) lives under
modules/mod-paragon/data/sql/db-{world,characters}/base/ — that's the
AzerothCore-standard module layout, which means AC's built-in
DBUpdater picks it up automatically on every worldserver /
dbimport start. New SQL files are applied; previously-applied ones
are skipped via the hash recorded in acore_world.updates /
acore_characters.updates. No manual mysql < ... steps required for
deploys.
Modify-and-redeploy works the same way: change the file, push, pull on
the VPS, and the next dbimport run sees the new hash and re-applies.
6. Configure the server
After make install, your install prefix has the layout:
<INSTALL_PREFIX>/
bin/ worldserver, authserver, *extractor tools
etc/ worldserver.conf.dist, modules/*.conf.dist
data/ client data (you provide)
logs/
- Copy each
*.conf.distto*.confnext to it (or inetc/modules/). - Set the
*DatabaseInfolines inworldserver.confandauthserver.confto point at your DB. - In
etc/modules/mod_paragon.conf, review the Paragon-specific options (sticky combo points, multi-resource, Ability/Talent Essence settings). - In
etc/modules/mod_ale.conf, setALE.Enabled = 1and (optionally)ALE.ScriptPathif you want a custom Lua scripts folder.
7. Extract client data
Same as upstream AzerothCore. Run the extractors against your 3.3.5a
client directory once and copy the results into <INSTALL_PREFIX>/data/:
cd <wow-3.3.5a-client>/
<INSTALL_PREFIX>/bin/mapextractor
<INSTALL_PREFIX>/bin/vmap4_extractor
<INSTALL_PREFIX>/bin/vmap4_assembler Buildings vmaps
<INSTALL_PREFIX>/bin/mmaps_generator
mv dbc maps vmaps mmaps Cameras <INSTALL_PREFIX>/data/
You can also share data between teammates — these directories are client-only and don't depend on the build.
8. Run
cd <INSTALL_PREFIX>/bin
./authserver &
./worldserver
On Windows, run authserver.exe and worldserver.exe from a console
window so you can see startup output.
9. Updating from origin
cd Fractured
git pull
cd build
cmake .. # only needed if CMakeLists.txt changed
make -j$(nproc)
make install
If a pull touches modules/*/sql/, re-apply those SQL files against
the relevant database.
Troubleshooting
Could NOT find Luaat CMake time: you forgot-DLUA_VERSION=luajit.fatal error: 'mysql.h' file not foundon Linux: installdefault-libmysqlclient-dev(orlibmariadb-dev).Could NOT find Booston Windows: set theBOOST_ROOTenv var (or theBOOST_ROOTCMake cache var) to your prebuilt Boost install.- Worldserver crashes on a Paragon character: confirm the
mod-paragonSQL has been applied to bothacore_worldandacore_characters. Missingcharacter_paragon_currencyis the most common cause. - Action buttons grey out for rune spells on Paragon: this fork
expects the matching client UI patch (
patch-enUS-5.MPQ). The server build is correct as-is; the visual issue is client-side.