An overview of Hytale’s server technology

Posted by Hytale Team
January 25th 2019

In this article, we’re going to introduce the technology that underpins every Hytale server - both how they work and how you’ll interact with them. In order to do so we’ll need to use some technical language, but we hope that you’ll be excited by the work we’re doing to make Hytale servers fast, easy to access, and secure.

Languages and performance

We’ve had lots of questions about Hytale’s engine and server technology since the announcement in December - it’s great that so many people are interested in running their own Hytale servers! Here’s the answer to the most common question: Hytale’s client is written in C#, and servers run on Java. We’ll cover in-game scripting in a future post, as it’s a separate topic.

We’ve chosen to use Java for Hytale servers for a multitude of reasons. For one, our backend team is very comfortable writing high-performance Java and that has let us heavily optimize our server code. Furthermore, we know that our community has a lot of experience with Java too - it’s important to us that it is as easy as possible for server operators to get up and running. Using C# for the client provides additional performance benefits, and we’re very happy about the results we’ve seen so far.

Shared source servers

Hytale’s server technology will be provided shared source, which means that everyone will be able to read the server code. The game client, however, will be closed in order to provide a common baseline for server operators and players. This allows us to provide a secure and reliable experience, guard against cheating, and provide modders and content creators with a shared foundation to work from.

Because Hytale is designed from the ground up for modding, server operators will be able to create and customize every aspect of the game - from environments and game mechanics to parts of the UI itself. We want our players to be able to build upon what we’re working on, but we also don’t expect the community to do our work for us.

In effect, this shared source system means that it is possible for servers to run a modified version of the game, grounded in a client that is common to every player. Every server represents its creator’s vision for the game - and because server operators have a consistent platform to build upon, it is straightforward for players to jump between wildly different experiences. When you connect to a Hytale server, the client will automatically download all of the content needed in order to play - models, animations, sounds, and everything else.

An example of how new or changed assets are loaded automatically when a player connects to a server.

The server browser

Eagle-eyed readers of our UI sneak peek article will have noticed a navigation tab called ‘servers’ at the top of Hytale’s main menu. Hytale’s server browser will let players quickly find community servers to play on.

We will allow you to sort and filter by the types of games you’d like to play - adventure mode or minigames, co-op or competitive - as well as by other factors like languages supported. A tagging system will allow servers to designate the type of content they provide alongside traditional server list features like banners and graphics. As an example, users can favorite servers that they enjoy, and you’ll be able to sort the server list by the total number of favorites that each server has received in order to quickly find the most popular places to play.

A concept for a server listing in the Hytale server browser.

The Hytale server browser will be actively moderated, and all server operators - from large minigame networks to smaller community servers - are required to adhere to a lightweight terms of service. Appearing on Hytale’s server browser won’t be necessary in order for players to join a server, but we expect that it’ll be the way that many players find servers to play on.

Playing with friends

Furthermore, we’ve implemented technology into Hytale to make playing together as painless as possible. The friends list allows you to jump into servers that your friends are currently playing on, and also allows you to connect to their adventure mode worlds. To ensure that this is a smooth process, we’re using UPnP (Universal Plug and Play) protocols to handle port forwarding automatically when possible - if that is unavailable, then we attempt NAT punchthrough. What this means in practical terms is that you can join your friends’ worlds through your friends list as long as you’re both connected to the internet without ever having to set up port forwarding - regardless of your router’s settings. Making it easy to play with your friends without a hitch is very important to us.

A platform to build on

We've poured everything we've learned in more than six years of running game servers for millions of players into Hytale's server technology. Our ambition is to eventually implement solutions to all of the difficulties that we've encountered over the years - to anticipate the issues that players and server operators may face and have an answer for them. We're looking forward to working closely with the community, and we'll be reaching out to ensure that we factor in your requirements and ideas.