Behind the scenes of RoM Universe

Inside Dark Studio
The Internet Computer Review
5 min readMar 7, 2023

Managing servers for game services is a monumental task that requires a lot of effort from all areas working on the project. From front-end developers to back-end integrators and DevOps operations, everyone must work together to ensure the smooth running of the game services. However, despite the efforts put into managing servers, it is still a significant challenge that needs to be solved.

Currently, there are two groups of services hosted on the Internet Computer (ICP) and web2 services. The canisters that represent 85% of the structure are running on-chain at the Internet Computer.

Current Setup on ICP

1. Our Game Lobby

  • 100% on-chain
  • User Database
  • Chat
  • Marketplace
  • Game Client
Current State of RoM Game Serivces

Future Setup Multi Canisters

This setup will be replaced by the Multi Canister Setup that we call a “Cluster of Canisters”, or CC for short. Our main idea behind this concept is to have multiple backup canisters working as separate nodes for each one of our services. This will allow us to have more power running to the end user and secure more of our transactions. The CC will bring a new era for dApps running on the ICP.

Here is the list of CCs we are developing:

1. Marketplace:

  • Will run on a CC
  • Will have 1 canister per in-game NFT collection
  • This will allow us to manage in-game collections in interesting ways
  • For example, the base skin of a character can be sold without the limitation of the amount originally created
  • A similar system has been used by some games like AxieInfinity

2. Auction House:

  • Will run on a separate CC
  • This will be a transaction canister between our users
  • The Auction House system will hold all of the auctions of in-game NFTs/tokens of everyone
  • Need a lot of power to run this one, especially since we need it to auto-scale based on the number of users utilizing its services

3. Chat:

  • The chat will have to be its own CC
  • When we finish the integration from our games into our lobby and into how we ambitious our Metaverse, the chat will host not only talking to your friends, but it will host groups and guilds, and they will be global
  • Services need to run this is one of the biggest ones
  • The auto-scale of the Canister must be there
  • We will also need storage service for all of the chat information

4. Player Data Storage:

Our player database will increase not only by the number of players inside our games, but rather by the number of NFTs, rewards, and other resources our games will have with time

  • Mandatory CC
  • Mandatory Auto-scale

5. Simple Canisters Setup:

  • All of our games will be hosted in 1 canister per game
  • The Heroes Supremacy Genre: MOBA
  • The Search for Vetirents Genre: RPG
  • The Battle For Zhion Genre: FPS/Battle Royale
  • The Release of Madness Genre: MMORPG
  • Vetirent Magic Cards Genre: Trading Card Game
  • The Player Fortress Genre: Build your own Reality
Future State of RoM Game Serivces

Note: At the moment of writing this article, the storage is having bugs causing it to reset every time a node is killed, this represents the loss of game data for the player (Quest done and Experience inside the game), if the player cash out the Ancient Gold before a node is killed, the player will be able to keep his tokens without issues, this is interested in considering a bug and benefits for the players that are able to obtain the rewards with a new node. This will be fixed by moving the game data after each time a player ends their playtime.

Web2 Services

15% of the server structure is outside of the Internet Computer, hosted on a web2 platform utilizing dockers. The docker clouds are divided into seven servers, one for each region and another for global. Each region has ten nodes, with each node having 15 CPUs, 10 GB of RAM, and 100 storage. However, there is currently a bug in the storage causing it to reset every time a node is killed. This results in a loss of game data for the player, including completed quests and experience inside the game. To solve this issue, game data will be moved after each player ends their playtime.

We encountered a challenge that had to be resolved before we could utilize nodes. We required an auto-scaling feature that could adjust based on the number of users, which thankfully most Docker services offer. However, we also needed an auto proxy, which had to be developed during the course of our project. This proxy reads all of the nodes and assigns them to their respective server domains.

We can host up to 175,000 players for The Heroes Supremacy by utilizing 70 nodes, accommodating 2,500 users per node. This significant increase in capacity now enables us to launch a full-scale marketing campaign to attract players.

In conclusion, managing game servers is a significant challenge that requires a lot of effort from all areas working on the project. Despite the challenges, the development of multi canister Setups and simple canister setups will provide more power to the end-users and secure more transactions, bringing a new era for dApps running on the Internet Computer. However, bugs such as the one affecting storage must be resolved to ensure smooth game services and a good user experience.

One additional point I would like to mention in this article is related to our Unity Development team. They have successfully optimized our THS build to a size of only 100MBs, resulting in ultra-fast loading times on a canister. Similarly, our FPS The Battle For Zhion build is currently only 64MBs in size.

To put this into perspective, most regular games like League of Legends take up around 8.2GB on your PC, while more complex games like Smite can be up to 30GB in size. Even games like World of Warcraft take up nearly 100GB of storage space.

Image from: InfinitySwap Blog

The Future of all of our infrastructure

We are always on the lookout for ways to enhance and advance our projects. Recently, Daniel James of InfinitySwap shared that they are constructing the Ethereum Virtual Machine (EVMC) within a canister. This sparked the idea that it may be possible to run both the Server and the client on the same canister. If this becomes a reality, we could potentially eliminate the need for our current web2 infrastructure and host everything on the Internet Computer (ICP). This is an exciting possibility that we are eager to explore further.

--

--

Inside Dark Studio
The Internet Computer Review

Don't be afraid of exploring the deepest and darkest corners of the imagination