HyTari Studios · Hivatalos konfigurációs útmutató

Server Router

Konfiguráld a hálózatot minden modul működésének megértésével.

Gyakorlati útmutató a Server Router - Network Synchez. A szerverazonosítástól és route-októl a megosztott rendszereken át a natív scoreboardig és opcionális inventory syncig. Minden rész másolható JSON-t és működési magyarázatot tartalmaz.

MIELŐTT ELKEZDED

Első lépések

LÉPÉS 01

Telepítsd minden szerverre

Ugyanazt a ServerRouter buildet használd a hálózat minden node-ján.

LÉPÉS 02

Egyszerre egy node-ot konfigurálj

Minden szerver kapjon egyedi serverId-t, saját host/portot és megfelelő szerepet.

LÉPÉS 03

Nyitás előtt tesztelj

A nyilvános forgalom előtt staff fiókokkal ellenőrizd a route-okat és backend-védelmet.

A ServerRouter hálózati infrastruktúra: a hitelesítő adatokat, hostokat, jogosultságokat és direct-access szabályokat körültekintően konfiguráld. Több modul módosítása előtt legyen mentés a production konfigurációról.

FEJEZET 01 · 1 PÉLDÁK

Telepítés és szerep

Azonosítsd a szervert a hálózatban és válaszd ki: router, backend vagy mindkettő.

01KONFIGURÁCIÓ

Szerverazonosítás és szerep

Minden hálózati node-nak egyedi serverId és más szerverek által elérhető cím kell.

KONFIGURÁCIÓ
{
  "enabled": true,
  "role": "both",
  "serverId": "hub",
  "host": "hub.example.com",
  "port": 5520,
  "maxPlayers": 100,
  "acceptingPlayers": true
}

mods/ServerRouter/config.json

MIT CSINÁL

Minden hálózati node-nak egyedi serverId és más szerverek által elérhető cím kell.

FONTOS MŰKÖDÉS

  • role: main bekapcsolja a routingot, backend transfer fogadásra szolgál, both egyesíti a kettőt.
  • serverId maradjon stabil és egyezzen a route-okban és hálózati modulokban használt értékkel.
  • acceptingPlayers ideiglenesen kivehet egy szervert a célok közül leállítás nélkül.

FEJEZET 02 · 1 PÉLDÁK

Adatbázis és heartbeat

Konfiguráld a MariaDB-t és az állapotközlés gyakoriságát.

01KONFIGURÁCIÓ

MariaDB, heartbeat és online állapot

A ServerRouter MariaDB-vel osztja meg az állapotot, presence adatot, transfer információt és hálózati modulokat.

KONFIGURÁCIÓ
{
  "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 CSINÁL

A ServerRouter MariaDB-vel osztja meg az állapotot, presence adatot, transfer információt és hálózati modulokat.

FONTOS MŰKÖDÉS

  • Az azonos hálózat szerverei ugyanarra az adatbázisra mutassanak.
  • heartbeatIntervalSeconds szabályozza az állapotfrissítés gyakoriságát.
  • offlineTimeoutSeconds határozza meg, mikor tekintünk egy heartbeat nélküli node-ot elérhetetlennek.

FEJEZET 03 · 1 PÉLDÁK

Route-ok és parancsok

Határozd meg a célokat, parancsokat, aliasokat, jogosultságokat és route üzeneteket.

01KONFIGURÁCIÓ

Route-ok, parancsok, aliasok és jogosultságok

Minden route egy parancsot köt egy célszerverhez, és transfer előtt ellenőrzésre kerül.

KONFIGURÁCIÓ
{
  "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 CSINÁL

Minden route egy parancsot köt egy célszerverhez, és transfer előtt ellenőrzésre kerül.

FONTOS MŰKÖDÉS

  • A parancs slash nélkül szerepel a JSON-ban és játékban /survival formában használható.
  • aliases alternatív neveket ad ugyanahhoz a transferhez.
  • Referral előtt a ServerRouter ellenőrzi a cél állapotát, kapacitását és elérhetőségét.

FEJEZET 04 · 1 PÉLDÁK

Transfer biztonság

Védd a backendeket és kezeld az ideiglenes engedélyeket, rejoin és cooldown értékeket.

01KONFIGURÁCIÓ

Backend-védelem és transfer tokenek

A backendek megtagadhatják a közvetlen hozzáférést és csak engedélyezett transferből érkező játékost fogadhatnak.

KONFIGURÁCIÓ
{
  "allowDirectAccess": false,
  "allowSameServerRejoin": true,
  "sameServerRejoinSeconds": 300,
  "accessTokenTtlSeconds": 60,
  "accessTokenSecret": "",
  "portalArrivalCooldownEnabled": true,
  "portalArrivalCooldownSeconds": 20,
  "loginPortalSafetySeconds": 20
}

mods/ServerRouter/config.json

MIT CSINÁL

A backendek megtagadhatják a közvetlen hozzáférést és csak engedélyezett transferből érkező játékost fogadhatnak.

FONTOS MŰKÖDÉS

  • allowDirectAccess=false esetén a backend a forrásszerver ideiglenes engedélyét használja.
  • A Hytale natív whitelistje marad a végső hozzáférési döntés.
  • Arrival cooldown megakadályozza a véletlen portal-bounce-t közvetlenül login vagy transfer után.

FEJEZET 05 · 1 PÉLDÁK

Portálok

Ugyanazokat a route-okat használd az azonos hálózati ellenőrzésű portálokhoz.

01KONFIGURÁCIÓ

Route-okhoz kapcsolt portálok

A portálok a router céljait és ugyanazokat az elérhetőségi/biztonsági ellenőrzéseket használják.

KONFIGURÁCIÓ
{
  "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 CSINÁL

A portálok a router céljait és ugyanazokat az elérhetőségi/biztonsági ellenőrzéseket használják.

FONTOS MŰKÖDÉS

  • Nem kell külön portálcél: a route a közös forrás.
  • A portal asseteket a plugin generálja és runtime asset packként tölti be.
  • Offline, megtelt vagy elérhetetlen cél esetén a transfer blokkolódik.

FEJEZET 06 · 1 PÉLDÁK

Megosztott rendszerek

Chat, events, player list és Presence API oszt meg adatokat a szerverek között.

01KONFIGURÁCIÓ

Globális chat és events

A szerverek megoszthatják a chatet és fontos eseményeket, így Hub, Survival, Dungeon, Creative és más node-ok egy hálózatnak érződnek.

KONFIGURÁCIÓ
{
  "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 CSINÁL

A szerverek megoszthatják a chatet és fontos eseményeket, így Hub, Survival, Dungeon, Creative és más node-ok egy hálózatnak érződnek.

FONTOS MŰKÖDÉS

  • A Network Chat továbbítja a játékosüzeneteket a résztvevő szerverek között, megtartva a forrásszerver nevét és közös konfigurálható formátumot.
  • captureMode meghatározza a helyi chat forrását; remoteFormat a meglévő formázást használja, fallbackFormat biztonságos alternatívát ad.
  • serverDisplayNames olvasható Hub, Survival vagy Creative neveket ad a technikai serverId helyett.
  • Network Events hálózatszerte jelezhet join, quit és server switch eseményeket; minden típus külön kapcsolható.
  • suppressServerSwitchJoinQuit megakadályozza, hogy szerverváltás hamis quit + join eseménynek látszódjon.
  • quitDelaySeconds segít megkülönböztetni a valódi disconnectet a folyamatban lévő transfertől; respectVanish elrejti a rejtett játékosokat, ha az integráció támogatja.
  • Network Player List és Presence API presence adatot oszt meg kompatibilis szerverekkel és modokkal külön adatbázislekérdezés nélkül.

FEJEZET 07 · 2 PÉLDÁK

Natív scoreboard

Konfiguráld a tartalmat, pozíciót, színeket, logót és world/dinamikus instance override-okat.

01KONFIGURÁCIÓ

Globális scoreboard

A natív scoreboard független és pixel-offsettel a négy sarok bármelyikébe helyezhető.

KONFIGURÁCIÓ
{
  "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 CSINÁL

A natív scoreboard független és pixel-offsettel a négy sarok bármelyikébe helyezhető.

FONTOS MŰKÖDÉS

  • A natív scoreboard opcionális és kikapcsolható ServerRouter vagy hálózati rendszerei leállítása nélkül.
  • horizontal: left:<px> vagy right:<px>; vertical: top:<px> vagy bottom:<px>.
  • backgroundColor: default, none vagy HEX #RRGGBB.
  • logo: none elrejti a logót. A sorok formázást és dinamikus placeholders támogatnak.
  • Külső scoreboarddal is használhatók a ServerRouter placeholders a natív scoreboard megjelenítése nélkül.
02KONFIGURÁCIÓ

World override-ok és dinamikus instance-ok

Egy world örökölheti a globális konfigurációt és csak szükséges mezőket módosíthat.

KONFIGURÁCIÓ
{
  "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 CSINÁL

Egy world örökölheti a globális konfigurációt és csak szükséges mezőket módosíthat.

FONTOS MŰKÖDÉS

  • A matching kis/nagybetű-független és támogatja a * jelet dinamikus suffixű instance worldökhöz.
  • Prioritás: pontos world-név > legspecifikusabb wildcard > globális konfiguráció.
  • Override módosíthat pozíciót, sorokat, szélességet, hátteret vagy logót a teljes blokk másolása nélkül.

FEJEZET 08 · 2 PÉLDÁK

Inventory Sync és ItemQuality

Biztonságosan szinkronizáld az inventorykat és őrizd meg az ItemQuality-t eltérő registryk között.

01KONFIGURÁCIÓ

Inventory Sync

Az inventory szinkronizálás opcionális és ideiglenes lockokat használ load, save és párhuzamos transfer védelmére.

KONFIGURÁCIÓ
{
  "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 CSINÁL

Az inventory szinkronizálás opcionális és ideiglenes lockokat használ load, save és párhuzamos transfer védelmére.

FONTOS MŰKÖDÉS

  • Csak azon szervereken kapcsold be, amelyeknek ugyanazt az inventory profilt kell megosztaniuk.
  • A lockok megakadályozzák a duplikációt vagy felülírást okozó párhuzamos hozzáférést.
  • Normál használatnál a debugQualityMapping maradjon kikapcsolva.
02KONFIGURÁCIÓ

ItemQuality eltérő registryk között

A ServerRouter a minőségek szemantikus identitását őrzi meg, nem csak runtime indexekre támaszkodik.

KONFIGURÁCIÓ
{
  "itemQualityMapping": {
    "enabled": false,
    "log-to-file": true,
    "log-to-console": false
  }
}

mods/ServerRouter/config.json

MIT CSINÁL

A ServerRouter a minőségek szemantikus identitását őrzi meg, nem csak runtime indexekre támaszkodik.

FONTOS MŰKÖDÉS

  • ItemQuality diagnosztika főleg eltérő registry vagy mod esetén hasznos.
  • Ha egy minőség a célon nem elérhető, biztonságos fallback használható az eredeti identitás megtartásával, amikor lehet.
  • Mapping logok diagnosztikai eszközök, stabil hálózathoz nem szükségesek.

FEJEZET 09 · 1 PÉLDÁK

Placeholders, API és diagnosztika

Integráld a companion modokat, töltsd újra a scoreboardot és használj diagnosztikát szükség esetén.

01KONFIGURÁCIÓ

Placeholders és API companion modokhoz

A scoreboard beépített placeholders tartalmaz, a public API pedig új placeholder regisztrációt enged patch nélkül.

KONFIGURÁCIÓ
{
  "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 CSINÁL

A scoreboard beépített placeholders tartalmaz, a public API pedig új placeholder regisztrációt enged patch nélkül.

FONTOS MŰKÖDÉS

  • Custom placeholders kis/nagybetű-függetlenek és nem vehetik át a már feloldott beépített placeholders helyét.
  • A natív scoreboard kikapcsolva maradhat; ServerRouter placeholders használható kompatibilis külső scoreboards vagy modok alatt.
  • BetterScoreBoard dedikált integrációval támogatott. Más scoreboard esetén külön kompatibilitás vizsgálható.
  • A read-only Presence/Network API elkerüli, hogy minden mod külön kérdezze az adatbázist.
  • Natív scoreboardnál konfiguráció-, logo- vagy layoutmódosítás után használd a /scoreboard reload parancsot.

Példa használata előtt

A példák szándékosan egy-egy modulra koncentrálnak. A bemutatott tulajdonságokat illeszd a megfelelő fájlba, ne cseréld le a teljes production konfigurációt részleges példára.

Az adatbázis-hitelesítők és hostok példák. Soha ne tegyél közzé valódi jelszót vagy secretet, és ugyanazt a közös adatbázist csak ugyanazon megbízható hálózat szerverei használják.

A publikus release horizontal/vertical mezőket használ a scoreboard pozíciójához. A fejlesztői buildek régi offsetRight/offsetTop mezői nem részei a dokumentált konfigurációnak.

VISSZA FEL