HyTari Studios · Virallinen määritysopas

Server Router

Määritä verkko ymmärtämällä jokainen moduuli.

Käytännöllinen opas Server Router - Network Synciin. Etene palvelimen identiteetistä ja routeista jaettuihin järjestelmiin, native-scoreboardiin ja valinnaiseen inventory sync -toimintoon. Jokainen osa yhdistää kopioitavan JSONin selitykseen.

ENNEN KUIN ALOITAT

Aloitus

VAIHE 01

Asenna jokaiselle palvelimelle

Käytä samaa ServerRouter-buildia jokaisessa verkon nodessa.

VAIHE 02

Määritä yksi node kerrallaan

Anna jokaiselle palvelimelle yksilöllinen serverId, oma host/port ja oikea rooli.

VAIHE 03

Testaa ennen julkista käyttöä

Tarkista routet ja backend-suojaus staff-tileillä ennen julkista liikennettä.

ServerRouter on verkkoinfrastruktuuria: määritä tunnukset, hostit, oikeudet ja direct-access-säännöt huolellisesti. Säilytä varmuuskopio tuotantomäärityksestä ennen usean moduulin muutoksia.

LUKU 01 · 1 ESIMERKIT

Asennus ja rooli

Tunnista palvelin verkossa ja määritä router, backend tai molemmat.

01MÄÄRITYS

Palvelimen identiteetti ja rooli

Jokainen verkon node tarvitsee yksilöllisen serverId:n ja muiden palvelimien saavutettavan osoitteen.

MÄÄRITYS
{
  "enabled": true,
  "role": "both",
  "serverId": "hub",
  "host": "hub.example.com",
  "port": 5520,
  "maxPlayers": 100,
  "acceptingPlayers": true
}

mods/ServerRouter/config.json

MITÄ SE TEKEE

Jokainen verkon node tarvitsee yksilöllisen serverId:n ja muiden palvelimien saavutettavan osoitteen.

TÄRKEÄ TOIMINTA

  • role: main ottaa routing-toiminnot käyttöön, backend vastaanottaa transferit ja both yhdistää roolit.
  • serverId:n pitää pysyä vakaana ja vastata routeissa ja verkkomoduuleissa käytettyä arvoa.
  • acceptingPlayers voi poistaa palvelimen väliaikaisesti kohteista sammuttamatta sitä.

LUKU 02 · 1 ESIMERKIT

Tietokanta ja heartbeat

Määritä MariaDB ja palvelimen tilapäivityksen taajuus.

01MÄÄRITYS

MariaDB, heartbeat ja online-tila

ServerRouter käyttää MariaDB:tä tilan, presence-tiedon, transferien ja verkkomoduulien jakamiseen.

MÄÄRITYS
{
  "databaseHost": "127.0.0.1",
  "databasePort": 3306,
  "databaseName": "hytale_network",
  "databaseUser": "serverrouter",
  "databasePassword": "CHANGE_ME",
  "tablePrefix": "server_router_",
  "heartbeatIntervalSeconds": 5,
  "offlineTimeoutSeconds": 15
}

mods/ServerRouter/config.json

MITÄ SE TEKEE

ServerRouter käyttää MariaDB:tä tilan, presence-tiedon, transferien ja verkkomoduulien jakamiseen.

TÄRKEÄ TOIMINTA

  • Kaikkien saman verkon palvelimien tulee käyttää samaa tietokantaa.
  • heartbeatIntervalSeconds määrittää tilapäivityksen taajuuden.
  • offlineTimeoutSeconds määrittää milloin heartbeatiton node tulkitaan pois käytöstä.

LUKU 03 · 1 ESIMERKIT

Routet ja komennot

Määritä kohteet, komennot, aliakset, oikeudet ja route-viestit.

01MÄÄRITYS

Routet, komennot, aliakset ja oikeudet

Jokainen route yhdistää komennon kohdepalvelimeen ja tarkistetaan ennen transferia.

MÄÄRITYS
{
  "routes": [
    {
      "name": "Survival",
      "command": "survival",
      "aliases": [
        "sopravvivenza"
      ],
      "serverId": "survival",
      "host": "survival.example.com",
      "port": 5522,
      "permission": "serverrouter.command.survival"
    }
  ]
}

mods/ServerRouter/config.json → routes[]

MITÄ SE TEKEE

Jokainen route yhdistää komennon kohdepalvelimeen ja tarkistetaan ennen transferia.

TÄRKEÄ TOIMINTA

  • Komento tallennetaan JSONiin ilman slashia ja käytetään pelissä muodossa /survival.
  • aliases lisää vaihtoehtoisia nimiä samalle transferille.
  • Ennen referralia ServerRouter tarkistaa kohteen tilan, kapasiteetin ja saatavuuden.

LUKU 04 · 1 ESIMERKIT

Transfer-suojaus

Suojaa backendit ja hallitse väliaikaisia valtuutuksia, rejoinia ja cooldownia.

01MÄÄRITYS

Backend-suojaus ja transfer-tokenit

Backendit voivat estää suoran pääsyn ja hyväksyä vain valtuutetusta transferista tulevat pelaajat.

MÄÄRITYS
{
  "allowDirectAccess": false,
  "allowSameServerRejoin": true,
  "sameServerRejoinSeconds": 300,
  "accessTokenTtlSeconds": 60,
  "accessTokenSecret": "",
  "portalArrivalCooldownEnabled": true,
  "portalArrivalCooldownSeconds": 20,
  "loginPortalSafetySeconds": 20
}

mods/ServerRouter/config.json

MITÄ SE TEKEE

Backendit voivat estää suoran pääsyn ja hyväksyä vain valtuutetusta transferista tulevat pelaajat.

TÄRKEÄ TOIMINTA

  • allowDirectAccess=false käyttää lähdepalvelimen luomaa väliaikaista valtuutusta.
  • Hytalen native whitelist pysyy lopullisena pääsyn auktoriteettina.
  • Arrival cooldown estää tahattoman portal-bouncen heti loginin tai transferin jälkeen.

LUKU 05 · 1 ESIMERKIT

Portaalit

Käytä samoja routeja matkustusportaaleihin samoilla verkkotarkistuksilla.

01MÄÄRITYS

Routeihin liitetyt portaalit

Portaalit käyttävät routerin kohteita ja samoja saatavuus- ja turvallisuustarkistuksia.

MÄÄRITYS
{
  "routes": [
    {
      "name": "Dungeon",
      "command": "dungeon",
      "aliases": [],
      "serverId": "dungeon",
      "host": "dungeon.example.com",
      "port": 5521,
      "permission": "serverrouter.command.dungeon"
    }
  ],
  "portalArrivalCooldownEnabled": true,
  "portalArrivalCooldownSeconds": 20
}

mods/ServerRouter/config.json → routes[]

MITÄ SE TEKEE

Portaalit käyttävät routerin kohteita ja samoja saatavuus- ja turvallisuustarkistuksia.

TÄRKEÄ TOIMINTA

  • Portaalille ei tarvita toista kohdetta: route on yhteinen lähde.
  • Portal-assetit luodaan pluginissa ja ladataan runtime asset packina.
  • Jos kohde on offline, täynnä tai poissa käytöstä, transfer estetään.

LUKU 06 · 1 ESIMERKIT

Jaetut järjestelmät

Chat, eventit, player list ja Presence API jakavat tietoa kaikkien palvelimien kesken.

01MÄÄRITYS

Globaali chat ja eventit

Palvelimet voivat jakaa chatin ja tärkeät eventit niin, että Hub, Survival, Dungeon, Creative ja muut nodet tuntuvat yhdeltä verkolta.

MÄÄRITYS
{
  "networkChat": {
    "enabled": true,
    "pollSeconds": 1,
    "messageTtlSeconds": 300,
    "maxMessageLength": 300,
    "captureMode": "eliteessentials",
    "serverDisplayNames": {
      "hub": "Hub",
      "survival": "Survival",
      "creative": "Creative"
    },
    "remoteFormat": "&8[&b%server%&8] &r%chat_format%",
    "fallbackFormat": "&8[&b%server%&8] &7%player%&r: &f%message%"
  },
  "networkEvents": {
    "enabled": true,
    "pollSeconds": 1,
    "eventTtlSeconds": 300,
    "joinEnabled": true,
    "quitEnabled": true,
    "switchEnabled": true,
    "suppressServerSwitchJoinQuit": true,
    "quitDelaySeconds": 3,
    "respectVanish": true
  }
}

mods/ServerRouter/config.json

MITÄ SE TEKEE

Palvelimet voivat jakaa chatin ja tärkeät eventit niin, että Hub, Survival, Dungeon, Creative ja muut nodet tuntuvat yhdeltä verkolta.

TÄRKEÄ TOIMINTA

  • Network Chat välittää viestit osallistuvien palvelimien välillä ja säilyttää lähdepalvelimen nimen sekä yhteisen muokattavan formaatin.
  • captureMode määrittää mistä paikallinen chat otetaan; remoteFormat hyödyntää olemassa olevaa muotoilua ja fallbackFormat antaa turvallisen vaihtoehdon.
  • serverDisplayNames antaa palvelimille luettavat nimet kuten Hub, Survival tai Creative teknisen serverId:n sijaan.
  • Network Events voi ilmoittaa join-, quit- ja server switch -tapahtumat verkon laajuisesti, jokainen erikseen hallittavana.
  • suppressServerSwitchJoinQuit estää server switchin näkymisen virheellisenä quit + join -parina.
  • quitDelaySeconds auttaa erottamaan oikean disconnectin käynnissä olevasta transferista; respectVanish suojaa piilotettuja pelaajia kun integraatio tukee sitä.
  • Network Player List ja Presence API jakavat presence-tiedon ilman jokaisen integraation omia tietokantakyselyjä.

LUKU 07 · 2 ESIMERKIT

Native scoreboard

Määritä sisältö, sijainti, värit, logo ja override-säännöt maailmoille tai dynaamisille instansseille.

01MÄÄRITYS

Globaali scoreboard

Native scoreboard on itsenäinen ja voidaan sijoittaa neljään kulmaan pixel-offseteilla.

MÄÄRITYS
{
  "refreshSeconds": 10,
  "horizontal": "right:0",
  "vertical": "top:0",
  "boardWidth": 180,
  "backgroundColor": "default",
  "backgroundAlpha": 0.2,
  "logo": "hytari_logo.png",
  "logoWidth": 256,
  "logoHeight": 64,
  "maxLines": 12,
  "lines": [
    "&fOnline: &b{serverrouter_total_online} &7| &fTPS: &b{tps}",
    "&fPlayer: &b{player}",
    "&fWorld: &b{world}"
  ]
}

mods/ServerRouter/scoreboard.json

MITÄ SE TEKEE

Native scoreboard on itsenäinen ja voidaan sijoittaa neljään kulmaan pixel-offseteilla.

TÄRKEÄ TOIMINTA

  • Native scoreboard on valinnainen ja voidaan poistaa käytöstä ilman ServerRouterin verkkotoimintojen poistamista.
  • horizontal hyväksyy left:<px> tai right:<px>; vertical top:<px> tai bottom:<px>.
  • backgroundColor hyväksyy default, none tai HEX #RRGGBB.
  • logo: none piilottaa logon. Rivit tukevat muotoilua ja dynaamisia placeholdereita.
  • Ulkoinen scoreboard voi käyttää ServerRouter-placeholdereita ilman native-scoreboardin näyttämistä.
02MÄÄRITYS

World override ja dynaamiset instanssit

World voi periä globaalin määrityksen ja muuttaa vain tarvittavat kentät.

MÄÄRITYS
{
  "worlds": {
    "instance-Forgotten_Temple-*": {
      "enabled": true,
      "horizontal": "left:18",
      "vertical": "bottom:120",
      "backgroundColor": "#0E4E0D",
      "backgroundAlpha": 0.25
    },
    "creative_world": {
      "enabled": false
    }
  }
}

mods/ServerRouter/scoreboard.json → worlds

MITÄ SE TEKEE

World voi periä globaalin määrityksen ja muuttaa vain tarvittavat kentät.

TÄRKEÄ TOIMINTA

  • Matching ei huomioi kirjainkokoa ja tukee *-merkkiä dynaamisilla suffixeilla.
  • Prioriteetti: tarkka world-nimi > tarkin wildcard > globaali määritys.
  • Override voi muuttaa sijaintia, rivejä, leveyttä, taustaa tai logoa kopioimatta koko blokkia.

LUKU 08 · 2 ESIMERKIT

Inventory Sync ja ItemQuality

Synkronoi inventaariot turvallisesti ja säilytä ItemQuality eri registryjen välillä.

01MÄÄRITYS

Inventory Sync

Inventory sync on valinnainen ja käyttää väliaikaisia lockeja load-, save- ja rinnakkaisten transferien suojaamiseen.

MÄÄRITYS
{
  "inventorySync": {
    "enabled": false,
    "lockTtlSeconds": 120,
    "lockRefreshSeconds": 30,
    "autoSaveEnabled": true,
    "autoSaveIntervalSeconds": 600,
    "profileSaveDelayMillis": 1500,
    "loadingInventoryMessageEnabled": true,
    "loadingInventoryMessage": "server.serverrouter.inventory.loading",
    "lockedInventoryMessage": "server.serverrouter.inventory.locked",
    "debugQualityMapping": false,
    "qualityMappingLogRetentionDays": 3
  }
}

mods/ServerRouter/config.json → inventorySync

MITÄ SE TEKEE

Inventory sync on valinnainen ja käyttää väliaikaisia lockeja load-, save- ja rinnakkaisten transferien suojaamiseen.

TÄRKEÄ TOIMINTA

  • Ota käyttöön vain palvelimilla, joiden pitää jakaa sama inventory-profiili.
  • Lockit estävät rinnakkaisen käytön aiheuttamat dupet tai ylikirjoitukset.
  • Pidä debugQualityMapping poissa käytöstä normaalisti.
02MÄÄRITYS

ItemQuality eri registryjen välillä

ServerRouter säilyttää laatujen semanttisen identiteetin runtime-indeksien sijaan.

MÄÄRITYS
{
  "itemQualityMapping": {
    "enabled": false,
    "log-to-file": true,
    "log-to-console": false
  }
}

mods/ServerRouter/config.json

MITÄ SE TEKEE

ServerRouter säilyttää laatujen semanttisen identiteetin runtime-indeksien sijaan.

TÄRKEÄ TOIMINTA

  • ItemQuality-diagnostiikka on hyödyllisintä eri registryjen tai modien välillä.
  • Jos laatu puuttuu kohteesta, käytetään turvallista fallbackia ja alkuperäinen identiteetti säilytetään mahdollisuuksien mukaan.
  • Mapping-lokit ovat diagnostiikkaa eivätkä vaadittuja vakaassa verkossa.

LUKU 09 · 1 ESIMERKIT

Placeholderit, API ja diagnostiikka

Integroi companion-modit, lataa scoreboard uudelleen ja käytä diagnostiikkaa tarvittaessa.

01MÄÄRITYS

Placeholderit ja API companion-modeille

Scoreboard sisältää sisäiset placeholderit ja julkinen API antaa muille modeille mahdollisuuden rekisteröidä uusia ilman patchausta.

MÄÄRITYS
{
  "integrations": {
    "api": {
      "enabled": true,
      "cacheSeconds": 10
    },
    "betterScoreBoard": {
      "enabled": false,
      "registerPlaceholders": true
    }
  },
  "scoreboardExample": [
    "{player}",
    "{world}",
    "{tps}",
    "{serverrouter_total_online}",
    "{myplugin_rank}"
  ]
}

Java API + scoreboard.json

MITÄ SE TEKEE

Scoreboard sisältää sisäiset placeholderit ja julkinen API antaa muille modeille mahdollisuuden rekisteröidä uusia ilman patchausta.

TÄRKEÄ TOIMINTA

  • Custom-placeholderit eivät huomioi kirjainkokoa eivätkä voi kaapata jo ratkaistuja sisäisiä placeholdereita.
  • Native scoreboard voi olla pois käytöstä; ServerRouter-placeholdereita voi käyttää yhteensopivissa ulkoisissa scoreboards/mods-ratkaisuissa.
  • BetterScoreBoard on tuettu erillisellä integraatiolla. Muille scoreboards voidaan arvioida erillinen yhteensopivuus.
  • Read-only Presence/Network API estää jokaisen modin omat tietokantakyselyt.
  • Käytä /scoreboard reload -komentoa konfiguraation, logon tai layoutin muutosten jälkeen.

Ennen esimerkin käyttöä

Esimerkit keskittyvät tarkoituksella yhteen moduuliin kerrallaan. Yhdistä näytetyt ominaisuudet oikeaan tiedostoon sen sijaan, että korvaisit koko tuotantomäärityksen osittaisella esimerkillä.

Tietokantatunnukset ja hostit ovat esimerkkejä. Älä julkaise oikeita salasanoja tai secretejä, ja käytä samaa jaettua tietokantaa vain saman luotetun verkon palvelimilla.

Julkinen release käyttää scoreboardin sijaintiin horizontal/vertical-kenttiä. Kehitysbuildien vanhat offsetRight/offsetTop-kentät eivät kuulu dokumentoituun määritykseen.

TAKAISIN YLÖS