Nothing in this repo's own tree reads the variable: the CI workflows,
ci-compile.sh, and the repo's CLAUDE.md example already stopped passing
-DUSE_STORMLIB in an earlier commit, leaving the option() declaration
orphaned. Mirrors the removal already done on mangoszero/server.
The Eluna submodule's own CI still passes -DUSE_STORMLIB:BOOL=1 when it
builds this repo, but an unrecognized -D is a non-fatal CMake warning,
not a configure failure, and Eluna is maintained in its own repo.
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>
* fix: harden ACE removal networking and OpenSSL runtime
Constrain builds and runtime loading to OpenSSL 3.x, update the merged realmd pointer, and add regression coverage. Harden backend shutdown, session lifetime, async authentication, and startup failure handling across the ACE replacement network stack.
* refactor: separate wire opcodes from game dispatch
* refactor: add isolated world protocol primitives
* refactor: isolate world client connections
* refactor: decouple world networking from game policy
* test: cover the world protocol boundary
* fix: make mailbox ownership transfer explicit
* fix: contain gateway exceptions per connection
* fix: close session publication races
* fix: declare pet item prototype dependency
* fix: preserve auth ordering and session synchronization
This is the first phase, before the complete removal of ACE.
See ChangeLog.txt for what changed here.
This commit introduces full transporters' crews/pets/totems/etc support
- WorldSocket::HandleAuthSession no longer runs synchronous, blocking
LoginDatabase queries (plus a stray 10ms sleep) on the network thread;
it now fires a single async account+ban-check query and finishes session
creation in a new HandleAuthSessionCallback, invoked on the world thread
via the existing Database::ProcessResultQueue()/AsyncPQuery mechanism.
- CMSG_PING and CMSG_KEEP_ALIVE are no longer special-cased in-place on the
network thread; they are now ordinary queued STATUS_AUTHED opcodes
handled by new WorldSession::HandlePingOpcode()/HandleKeepAliveOpcode()
on the world/map thread, removing a WorldSession field race and an
off-thread Eluna hook call. Ping-flood tracking state moved from
WorldSocket to WorldSession accordingly.
See ChangeLog.txt for a full list of changes.
* Impement Ensure Version for OpenSSL
* Fix OpenSSL library linking to most of the project
* Cleanup of old file
* Make error message a bit more clear on invalid versions
* Link Submodule changes to main PR
* Attempt to fix missing symbol DSO compile issue linux
* Sometimes I need to learn to look into things a bit more.
Added additional build options:
BUILD_MANGOSD
BUILD_REALMD
ALSO DECOUPLED BUILD_TOOLS
All three can now be built separately from each other
EasyBuild has been update to support the extra options
- FreeBSD does not support ACE_Stack_Trace
- Made internal ACE build symmetrical with its external counterpart
- Removed a redundant compiler directive