In development Landing with the Hytale beta

HiveScale for Hytale

The cross-server backend for a Hytale network: matchmaking, one shared economy, network-wide moderation and worlds on demand, each behind a single SDK call. It arrives through a native Hytale server SPI, not a bridge, and it is the same backend that runs Minecraft networks today. Here is what you get, and the call that drives it.

Matchmaking

Players queue from the hub and HiveScale routes them to the best instance anywhere on the network, then transfers them. Boot a fresh arena per match, or keep a pool of games warm.

  • Auto-routes to the best server in the player's own region, or target a region yourself.
  • Capacity aware, so no instance gets slammed while another sits empty.
  • Returns a matched world too, for per-match instanced games.
// Queue a player from the hub into an arena.
hive.matchmaking()
    .findServer(player.uuid(), player.name(), "arena")
    .thenAccept(result -> {
      if (result.isSuccess())
        hive.transfer(player, result.matchedServer());
    });
Matchmaking docs

Player data

One profile per player across your whole Hytale network, not one per box. Coins, ranks, stats and playtime read the same on every server, so the economy is shared and perks travel from server to server.

  • fetchPlayerData upserts the player and reads their profile back on join.
  • Currencies are network-wide balances; stats are namespaced per game.
  • First-seen engine and last-seen time come along for free.
// On join: load the network-wide profile and balances.
hive.player()
    .fetchPlayerData(player.uuid(), player.name(), "hub", GameType.HYTALE)
    .thenAccept(data -> welcome(player, data.getCurrencies()));
Player data docs

Punishments

Bans, mutes and kicks apply across every Hytale server and the proxy at once, and survive reconnects.

  • Punish by name even while the player is offline, resolved network-wide.
  • Optionally IP-based, and lift a ban (and the last IP) just as easily.
  • Query what is active before you act.
// Ban by name across the whole network, even while offline.
hive.punishments().createPunishmentByName(
    "Griefer123", PunishmentType.BAN, "Raiding", null,
    /* ipBased */ true, mod.uuid(), mod.name());
Punishments docs

Worlds

Boot an arena or a saved world on any node the moment it is needed, route the player in, and let it sleep when the round ends.

  • Open per-player or per-team worlds on demand.
  • Snapshots happen automatically; release a world when it goes idle.
  • A survival world stays safe; an arena stays disposable.
// Open a world on demand on any node, then route the player in.
hive.worlds().openPlayerWorld(player.uuid(), "skyblock", "island")
    .thenAccept(route -> { /* READY: send them now. LOADING: wait, then send. */ });
Worlds docs

Connecting a server

When Hytale support lands, you add the SDK to your server mod and run the Hive core mod on each box. Every server, and the proxy, announces itself to the registry and heartbeats on boot, so the network always knows what is live. Your code just talks to it, exactly as it does on Minecraft today.

// Once at startup, in your server mod, when the Hytale SPI lands.
// The Hive core mod announces this box to the network on boot.
HiveSdk hive = HiveSdk.create(HiveSdkConfig.builder()
    .baseUrl("https://hub.hivescale.dev")
    .apiKey(System.getenv("HIVE_API_KEY"))
    .build());
Quickstart

Managed servers on your own Hetzner account

Don't want to touch infrastructure? HiveScale provisions game servers straight into your own Hetzner Cloud, so control and billing stay with you while we keep them wired to your network.

A server provisioned on Hetzner, managed from the HiveScale dashboard
How managed servers work

Be first on Hytale. Join the waitlist and we will reach out the moment support lands. Want it now? The same backend already runs Minecraft networks today.