Generic selectors
Exact matches only
Search in title
Search in content
Search in project

How The Server Works

Server Processes

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.

 

Messaging Configuration

All server processes read the following Python scripts to configure messaging:

  • atavism_server/config/common/aomessages.py that defines the Atavism Message Catalog (core server messages).
  • atavism_server/config/world/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 marshalled objects in atavism_server/config/common/aomarshallers.txt.

 

Logging

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 ocation of log files, if they should be rotated when they reach value in KB per file, etc.

 

Domain Server

The Message Domain Server provides a message registry that enables all the other servers to communicate with each other. It is not a server plug-in, but is its own special process.

 

Infrastructure server plug-ins

The Atavism infrastructure servers provide the basic services used by other plug-in servers. They include:

 

Login Manager

Handles character creation and selection.

 

World Manager

Controls a world’s geography and what PCs and mobs are able to see.

 

Proxy Server

Handles all communication with Atavism/Unity Clients, and sends messages to the other servers.

 

Instance Server

Loads and manages world instances.

 

AGIS Server plug-ins

The AGIS plug-in servers are:

 

Combat Server

Controls combat between players and mobs, and related functions. Runs the Combat, Grouping and ClassAbility plugins.

 

Object Manager

Creates and manageds objects and object persistence. Runs the Inventory plugin.

 

Mob Server

Controls mobs and quests.