This page provides an overview of the services used in the setup of a revival platform, and shows how Mercury Core fits into the overall architecture.
Mercury Core services
Section titled “Mercury Core services”Mercury Core is a modular platform designed to support the revival of old versions of popular MMO platforms. It consists of several key services, each responsible for different aspects of the platform's functionality. The main services are:
The Site service is the main component of Mercury Core, responsible for serving the website and handling user interactions. It provides the following features:
- User authentication and management
- Social features
- User profiles
- Friends, following, and followers interactions between users
- Comments as text posts, used on the forum, in reply to assets, and status posts
- API endpoints for accessing and interacting with Clients
The Site will automatically start the Economy and Database services as needed if not using containers.
Economy
Section titled “Economy”The Economy service manages the in-game economy, including player transactions and currency systems. It ensures a balanced and fair economic environment for all players.
The Site can run without the Economy service, though some pages on the Site will become inaccessible.
Database
Section titled “Database”The Database service is a SurrealDB instance that stores all the data for the platform, including user accounts, uploaded places, game assets, and other related information. It provides a flexible and powerful data storage solution, chosen for its ability to handle complex relationships between different entities.
The Site will usually error if the Database service is not running, as it relies on the database for most of its functionality.
External services
Section titled “External services”These are external services that are not part of the Mercury Core platform, but are commonly used to enhance its functionality or provide additional features, resulting in a complete revival platform.
Client
Section titled “Client”The Client is a key part of any revival platform. It handles the game logic, connection to place servers, world rendering, and gameplay.
Clients need to be patched, proxied, hooked, or otherwise modified to work with an alternative API implementation such as Mercury Core. This process, as well as the API used by the Client, will differ depending on the Client version being used and any specific requirements of the revival platform.
If the Client is from 2011 or later, Client scripts may be necessary to handle many features in the Client. These will usually be written or found separately, and can be loaded as assets from the Site. A guide is available to help with setting up corescripts, based on the example 2013 Client scripts at tp-link-extender/2013
Studio
Section titled “Studio”The Studio provides an environment for users to create and edit places, assets, and other content for the platform. It interacts with the Site using a similar set of API endpoints as the Client, allowing users to upload and manage their creations. They can also be used to host a place server, allowing other users to connect to it and play together.
Studios need to be modified in a similar way to Clients to interact with an alternative API implementation.
Depending on when the Studio is from, some corescripts may be required, as well as implementations of plugins.
Due to the difficulty of providing web services across many of the ancient webviews used in Studios, support for interacting with the Site from Studio has been removed from Mercury Core. Users will need to use the website in a separate browser to open, upload, and manage their places and assets rather than doing so directly from the Studio. This may change in future, especially if the ability to replace the Studio webview with a modern one, probably via a DLL hook, becomes available.
RCCService
Section titled “RCCService”RCCService is used for rendering images of avatars, places, and other user-uploaded assets.
The Mercury Core Site communicates with a RCC instance via a proxy used to simplify requests and responses, and to handle authentication. Work sent to RCC needs to be queued as a task, which is then processed by the RCCService instance. The results are then returned to the Site directly through a API endpoint.
RCCService is easily customised through providing Lua scripts. These scripts also handle data serialisation and communication with the Site.
Chat server integration
Section titled “Chat server integration”It's common for revival platforms to have a significant portion of their community interaction take place in chat servers, usually Discord or Guilded. As such, a mechanism for communication between the Site and the chat server is often useful. A Mercury Discord bot is available at tp-link-extender/Bot, handling reviewing and acceptance of applications and automatic distribution of invite keys.