Files
Fractured/BUILD-NATIVE.md
T
2026-05-08 00:08:47 -04:00

8.3 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.


What you get when you build this fork

  • Worldserver with CLASS_PARAGON and Paragon-aware DK rune / sticky combo-point logic linked into core.
  • modules/mod-paragon (statically linked): Paragon player hooks, AE/TE currency, gametables, .paragon chat 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_DIR env 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_ROOT to 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)

  1. Source code → repo root (Fractured/).
  2. Build the binariesFractured/build.
  3. Configure → choose Visual Studio 17 2022 generator, x64.
  4. After the first configure pass fails or warns about Lua, set:
    • LUA_VERSION = luajit
    • CMAKE_INSTALL_PREFIX = e.g. C:/azeroth-server
    • BOOST_ROOT (if not already detected)
    • OPENSSL_ROOT_DIR (if not already detected)
    • MYSQL_INCLUDE_DIR / MYSQL_LIBRARY if MySQL wasn't auto-found
  5. 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:

  1. Build ALL_BUILD.
  2. 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) to make / cmake --build. The Docker image hard-caps -j 4 for 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. Then layer the Fractured-specific SQL on top:

cd <repo>/modules/mod-paragon/sql

# world DB
mysql -u acore -p acore_world < world/base/paragon_gametables.sql
mysql -u acore -p acore_world < world/base/paragon_spell_ae_cost.sql
mysql -u acore -p acore_world < world/base/player_class_stats_paragon_basemana.sql

# characters DB
mysql -u acore -p acore_characters < characters/base/character_paragon_currency.sql

Re-run any module-specific SQL whenever you pull updates that touch modules/*/sql/.


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/
  1. Copy each *.conf.dist to *.conf next to it (or in etc/modules/).
  2. Set the *DatabaseInfo lines in worldserver.conf and authserver.conf to point at your DB.
  3. In etc/modules/mod_paragon.conf, review the Paragon-specific options (sticky combo points, multi-resource, Ability/Talent Essence settings).
  4. In etc/modules/mod_ale.conf, set ALE.Enabled = 1 and (optionally) ALE.ScriptPath if 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 Lua at CMake time: you forgot -DLUA_VERSION=luajit.
  • fatal error: 'mysql.h' file not found on Linux: install default-libmysqlclient-dev (or libmariadb-dev).
  • Could NOT find Boost on Windows: set the BOOST_ROOT env var (or the BOOST_ROOT CMake cache var) to your prebuilt Boost install.
  • Worldserver crashes on a Paragon character: confirm the mod-paragon SQL has been applied to both acore_world and acore_characters. Missing character_paragon_currency is 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.