mangostwo-server/extra/docker
H0zen 3d3a22e607
United cores (#249)
Four cores brought to one shape.

TERRAIN. src/shared/terrain in all four behind the TerrainInfo seam, and no
src/game/vmap anywhere: one baked tile carries ground, liquid, area and
collision together. The seam is load-bearing -- the moment the engine learns
what a zone is, it can no longer live in shared. A hull has surfaces stacked at
one (x, y), so the query is a Column, not a height.

SPATIAL. An object no longer owns coordinates: it HAS a Geometry::Placement,
read through Where() and mutated through Place(). A placement carries the FRAME
it is in, and a cross-frame answer fails closed -- so "same map AND in range"
cannot be written wrong, because it is one question. Ground height, line of
sight and the free-spot sweep were never geometry and became free functions
beside it.

MOVEMENT. A generator states an INTENT -- where the mover wants to be -- and a
driver realises it. The two were one thing before, so every generator knew how
movement is executed and none could be reasoned about alone. An intent resolves
in the mover's OWN frame, so chase, follow and a random walk on a deck are
computed in deck coordinates without the caller knowing there is a deck, and the
pathfinder is handed the map it routes on rather than assuming the world's.

TRANSPORTS. The vessel IS a map. A ship's hull is baked as its own map with its
own terrain, so a passenger stands on real ground rather than on an offset, and
deck-local is the only coordinate system aboard. The server's estimate of a
hull's world position is used for one thing only -- finding observers ashore --
and never composed into anything.

SD3. The scripts moved onto Where()/Place() and the free functions beside them,
so the old coordinate-owning API is not compiled at all in an SD3 build. What
remains of the compatibility layer exists for Eluna alone. dep, realmd and SD3
all point at merged upstream.

EXTRACTORS. One baker per core, from the client to the caches the server reads,
with a Windows GUI in front of it: checkboxes per component, folder and file
pickers, a live log. It drives the console tool through its command line and
links none of it. Cataclysm's split ADT and its MPQ patch chain are read
properly; every core's output is scored against the world database's own ground
spawns, 97-99% within two yards.

ALSO. Off-thread logging and one startup console. The src/proto network seam,
enforced at build time -- game links proto, proto reaches neither game nor the
database. C++17 throughout, ACE and G3D gone. One test harness, socket tests
behind their own switch. Layout, CI and ignore rules identical across the four.

Built with both script engines on GCC, Clang and MSVC.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 18:35:28 +01:00
..
docker-compose.yml United cores (#249) 2026-07-29 18:35:28 +01:00
DockerFile-mangosd ACE is dead! (#240) 2026-07-21 20:38:54 +01:00
DockerFile-realmd ACE is dead! (#240) 2026-07-21 20:38:54 +01:00
Readme.txt United cores (#249) 2026-07-29 18:35:28 +01:00

How to start:
To start the docker container use the command "docker-compose up" inside the extra/docker folder
If you need to rebuild the images use "docker-compose build"

Now to setup the server make sure you have the correct configuration and the data folder in the correct location:
The configuration should be place here "../../etc" from the extra/docker folder
The data folder should be place here "../../data" from the extra/docker folder
Note: those paths can be change inside the docker-compose.yml file

Configutation:
Inside your "mangosd.conf" make sure the "DataDir" is set to "/mangos/data"
Make sure all the mysql hostname is set to "mysqldb"
The Mysql connection seting is set inside the docker-compose.yml file and can be change
Here the default values:
- MYSQL_USER=mangos
- MYSQL_PASSWORD=mangos
- MYSQL_ROOT_PASSWORD=mangos
- MYSQL_ROOT_HOST=%

The database need to be run manualy in order to have it initialize