All posts

One World, Five Platforms — Devlog #2: The Challenges of Cross-Platform MMORPG Development

Making one MMORPG playable by mouse, touchscreen and controller: Ancient Online's choices on interface, controls, 30 languages and local chat translation.

A game controller resting on a desk in dim light, catching red and turquoise reflections

We are designing Ancient Online: Remastered as a single world where Windows, Linux, macOS, Android and iOS players will meet. On paper it sounds simple: one game, five platforms. In practice, bringing a classic MMORPG designed to be played with mouse clicks to phones and controllers means a series of hard decisions. In this part of the devlog, we share those decisions and the reasons behind them.

The game is in development. The development build is currently tested on Windows and Android devices; macOS, Linux and iOS are the other platforms we are targeting.

Rule 1: One world, one rule set

There is no separate server and no "simplified" balance for mobile players. Because all of the game's rules run on the server, you play in the same world, by the same rules, whatever device you connect from. Your account, character, inventory and guild are independent of the device. We covered the server side in part one of the devlog.

For the client, this rule means that different platforms can offer different controls, but they cannot offer different capabilities.

Touchscreens: rethinking instead of shrinking

Shrinking the classic MMORPG interface as it is and putting it on a phone does not work; the buttons end up too small for a finger and the screen too crowded. So we designed a separate interface layer for mobile:

  • A floating joystick: Wherever you put your finger on the left half of the screen, the joystick comes to it; the player does not have to hit a particular spot on the screen.
  • A hold-to-attack button with an arc of skills around it.
  • Tap to target: The touch equivalent of the "click the monster" habit from PC.

There is also something we deliberately did not do: tap to move. The joystick handles movement. With two movement systems, every missed target tap would turn into an unintended run, and in the middle of a fight that is unacceptable.

One more small but important decision: on a phone only a few slots are visible at a time, so switching between skill pages happens far more often than on desktop. We made the potion slots independent of the pages; when you switch pages, your potions stay where they are. Doing this took more than moving a cell in the interface: we had to separate the code that uses the potion slots from the page logic entirely.

Camera and multi-touch

On a phone, the camera turns when you drag a finger across an empty area. Doing this by placing a full-screen "camera zone" on top of the interface looked tempting, but a layer like that would swallow the touches meant for every button beneath it. By handling the camera drag in the player controller rather than in the interface layer, we prevented conflicts between the buttons and the camera. We also tell target selection apart from camera dragging with a small movement threshold: until the threshold is crossed the camera does not budge, and once it is crossed the camera starts turning without a sudden jump.

Controllers: getting around the menus too

We designed controller support for the whole interface, not just for combat. To navigate the inventory and menus with a controller, we added focus navigation with the D-pad. There was a trap here as well: the D-pad and the confirm/back buttons are needed both for navigating menus and for using the quick slots. The solution: while a window is open these buttons navigate the menu, and when it is closed they go back to the quick slots. Silently slipping into "menu mode" in the middle of a fight would be the worst bug this system could have.

The game keeps track of which input device you used last: when you switch to a controller, the touch buttons withdraw from the screen.

Settings follow the platform too

The settings window takes its shape from the device: the mouse and keyboard tabs appear only on PC, and the touch tab appears only on phones. Desktop-only graphics options such as Lumen, DLSS and FSR give way to resolution and anti-aliasing options on mobile. On each device we show only the settings that actually do something there.

30 languages and an interface measured per language

The game and our websites target 30 languages. The hidden difficulty of a multilingual interface is text length: the same button label can be short in one language and twice as long in another. We calculate the width of the tabs in the settings window from the actual width of each label in that language instead of giving them equal shares; when the language changes, the layout is recalculated. In the language selector, each language is written under its own name.

Chat translation on our own servers

So that players from different countries can understand each other in the same world, chat messages are translated into the reader's language. We had two principles in building this system:

  1. Messages do not leave our servers. Translation is done on our own servers by a local, CPU-only model; no external translation API is used.
  2. Preserving the language of the game. MMORPG chat is full of abbreviations, game terms and emoji. We use a game-specific glossary, and we protect emoji separately so that they are not lost during translation.

What's next

Work continues on mobile performance and on the other platforms we are targeting. For the full list of controls on the player side, take a look at the PC and mobile cross-platform guide on the game site. To get to know our studio, read Who is Astronaut Entertainment?.

Share:
Also available in29