How The Server Works
The server startup script, world.sh calls startup scripts for each server process, initially loading the atavism.server.marshalling.Trampoline class that in turn loads the “startup class” that reads a set of Python scripts (defined in the world.sh file). For the message domain server, the startup class is atavism.msgsys.DomainServer. For all the other servers, the startup class is <class>atavism.server.engine.Engine</class>.
Except for the Message server, each server process runs one or more server plug-ins. A server plug-in is a class that extends atavism.server.engine.EnginePlugin. The servers can be divided into core infrastructure servers, that provide the fundamental basis for the world, and AGIS plug-in servers, that provide gameplay and other features that you can extend, modify, or even replace.
Scripts and messaging configuration files
When they start, the server processes read in scripts in the config directory, including scripts in the atavism_server/config/common directory, and the atavism_server/config/world directory (or the equivalent for the specific world). If a server process tries to read a script that does not exist, it will log a warning and continue.
All server processes read the following Python scripts to configure messaging:
aomessages.py that defines the Atavism Message Catalog (core server messages).
worldmessages.py that defines additional custom messages for the world.
- atavism_server/config/world/worldmarshallers.txt registers world-specific classes to be passed in (or as) messages.
Additionally, each server process “advertises” messages that it publishes in atavism/config/common/process-name-ads.txt. Atavism defines a set of
The servers produce logs in the atavism_server/logs/ directory, with the auth server logs showing up in the auth folder and the world logs in the world folder. Each process prints out its own log with an additional log that pulls together all the errors from the different processes.
The auth.properties and world.properties files contain some settings for the logs, like the
The Message Domain Server provides a message registry that enables all the other servers to communicate with each other. It is not a server
Infrastructure server plug-ins
The Atavism infrastructure servers provide the basic services used by other plug-in servers. They include:
Handles character creation and selection.
Controls a world’s geography and what PCs and mobs are able to see.
Handles all communication with Atavism/Unity Clients, and sends messages to the other servers.
Loads and manages world instances.
AGIS Server plug-ins
The AGIS plug-in servers are:
Controls combat between players and mobs, and related functions. Runs the Combat, Grouping and ClassAbility plugins.
Controls mobs and quests.