Skip to main content

Other Engine Onboarding

Hathora Cloud is a scalable hosting platform for online multiplayer games. You upload your server project using the Hathora Console or CLI, and then dynamically create server instances in 12+ regions around the world. You get charged only for the duration of active matches/sessions. It's perfect for dedicated servers that can be run in a Linux environment, and supports UDP, TCP, TLS while also providing DDoS protection.

1. Preparing your server build

Your server will need to be runnable as a dedicated Linux server.

2. Generating a Dockerfile

By providing a Dockerfile with your server build, we will be able to scale your server across the globe.

Check out our guide to creating a Dockerfile.

3. Deploy server to Hathora Cloud

If this is your first time deploying on Hathora Cloud, we recommend starting with our Deploying on Hathora Cloud guide.

There are 2 ways to deploy your server on Hathora Cloud:

  1. With command line or CI/CD pipeline
  2. Drag and drop upload via Hathora Console
hathora deploy \
--file $FILE_OR_DIRECTORY \
--build-tag $BUILD_TAG \
--rooms-per-process $ROOMS_PER_PROCESS \
--container-port $CONTAINER_PORT \
--transport-type $TRANSPORT_TYPE \
--requested-memory-mb $MEMORY_MB \
--requested-cpu $CPU \
--env ENV1=$ENV1_VALUE \
--env ENV2=$ENV2_VALUE \
--idle-timeout-enabled $BOOLEAN\
--app-id $APP_ID \
--token $HATHORA_TOKEN
tip

Zero-downtime deployments: New deployments will not impact any existing games, your newly deployed version will only be used for subsequent games created after.

4. Creating rooms/processes

There are 2 ways to create rooms on Hathora Cloud:

  1. Via API call
  2. Directly with Hathora Console (great for debugging)

A simple API call: RoomApi.CreateRoom(appId).

tip

To learn more about room creation and lifecycle, check out our Room Lifecycle docs

5. Connecting to a room

Once you have created a room, it will take Hathora Cloud a few seconds to spin up your server instance and expose a port for your client to connect to.

We recommend polling RoomApi.GetConnectionInfo(appId, roomId) until status is "active" and ExposedPort is not null.

note

We will automatically terminate a process if there are no active connections for 5 minutes (i.e. the process is in an idle state for 5 minutes).

tip

With our Hathora Console, you can get connection info (host:port) directly, which is useful for testing and debugging.

6. Lobby Service and integration with matchmakers

Check our Lobby Service for a lightweight way to build a lobby system for your game.

Join our developer community!