Welcome to the Anotherland Server Emulator project, a community-driven initiative to resurrect the MMORPG, Otherland. This emulator aims to recreate the experience of Otherland by providing tools and instructions to set up and run your own server for the game.
Before you begin, ensure you have the following installed:
- Rust 1.88.0-nightly
- A legally acquired copy of the game (Otherland Next)
- MongoDB (You need to configure a replica set for transactions to work)
Clone the repository to your local machine:
git clone https://github.com/AnotherlandServer/anotherland.git
Set the environment variable OTHERLAND_CLIENT_PATH
to the path of your game client installation.
Build the project using Cargo:
cargo build
The server is divided into multiple services that can be run across distributed machines.
-
core_service
Provides central services like authentication and realm registration. It serves as the entry point for clients and the central registry for realms. This service also exposes a GraphQL API for internal use. -
login_server
The primary server for clients to connect to. This is the gateway to the Otherland cluster and allows clients to select a realm to log into. It exposes the main RakNet connection, the TCP queue, and the TCP verification service. After login, clients are redirected to afrontend_server
of the selected realm.
-
realm_manager_service
The cornerstone for each realm. It manages the realm's database and acts as a registry for cluster frontends and distributed zones. -
world_service
Responsible for running the games world. -
frontend_server
A staging area for clients immediately after connecting to a realm. It serves clients until they’ve selected a character to play as, at which point they are redirected to one of thecluster_server
endpoints. -
cluster_server
Routes connected clients’ requests to the appropriate zone or dungeon server.
-
Start the
core_service
and wait for the GraphQL interface to become available. Use the Rover CLI with therover dev
command to launch an IDE for interfacing with the GraphQL API. -
Use the
createRealm
mutation to create your first realm. -
Start the
realm_manager_service
with the--realm-id
parameter, specifying the ID of the realm you just created, to begin setting up the realm. -
Once the service is fully started, use the
seed-realm
tool to seed the realm database by extracting content from the Otherland client files. -
After completing these steps, start the remaining services and connect to your realm.
- Use the
--help
argument with each process to view available options and their default values. - When specifying public addresses (e.g., for the
frontend_server
), avoid using127.0.0.1
, as the Otherland client may struggle to resolve it.
-
Open
UnrealEgine3/AmunGame/Config/DefaultUI.ini
within the client’s folder and locate the line:+ConfigureLoginAddress=(srvName="#UI.EU_Server_LIVE#", srvAddress="78.46.105.144", srvPort=6112, queuePort=53292)
Replace the
srvName
option with any name you like. SetsrvAddress
to the public IP of your server. If you run Anotherland with default parameters, you don't need to modifysrvPort
orqueuePort
. -
Open
Atlas/data/otherlandgame/config/clientcfg.ini
and locate the line:verificationSrv =78.46.105.144
Replace the IP address with the public IP of your server to enable Steam login.
Currently, we are not accepting contributions as Anotherland is in its initial development phase. Our immediate goal is to build a stable foundation for the project. We appreciate your interest and enthusiasm and intend to open the project for community contributions in the future.
This project is licensed under the AGPL-3.0 License.
This project is a fan-based initiative and is not officially affiliated with, endorsed by, or connected to any of the original creators or entities involved in the development of Otherland, including Game OL GmbH, DRAGO Entertainment S.A., or Tad Williams. This emulator is developed and maintained by enthusiasts with no commercial intent and respects the intellectual property rights of the original creators.