AzerothCore's DBUpdater scans modules/<mod>/data/sql/db-{world,characters,auth}/
(see src/server/database/Updater/UpdateFetcher.cpp). The previous
modules/mod-paragon/sql/{world,characters}/base/ layout was non-standard
and skipped by the updater, so a fresh deploy never had Paragon tables
created automatically.
Move all five SQL files into the standard layout. Files are idempotent
(CREATE TABLE IF NOT EXISTS plus a DELETE+INSERT for the cost table)
and now apply on every dbimport / worldserver start, recorded by hash
in <db>.updates so re-runs are skipped.
Update BUILD-NATIVE.md to drop the manual mysql import section, and
document the SQL layout in the mod-paragon README.
Co-authored-by: Cursor <cursoragent@cursor.com>
8.4 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
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.