RE:NODE

Návody11 min čtení

Dedikovaný server Core Keeper: instalace a savy

Dedikovaný server Core Keeper: instalace přes SteamCMD, ServerConfig.json a spouštěcí příznaky, Game ID nebo direct connect, režimy světa, savy a zálohy.

1 čtenář

Dedikovaný server Core Keeper je bezplatné stažení přes SteamCMD (nástroj Core Keeper Dedicated Server, ID aplikace 1963720), které provozuje jeden svět uložený v jediném souboru, například 0.world.gzip. Ve výchozím stavu nepotřebuje žádné přesměrování portů: zaregistruje se v síti relay Steamu a vypíše Game ID - dlouhý řetězec písmen - které hráči zadají do Join Game. Pokud ho spustíš s -port, přepne se do režimu direct connect, kde se hráči připojují přes adresu a port a ty musíš ten port otevřít sám. Nastavení žije v ServerConfig.json a ve spouštěcích příznacích, přičemž port a heslo se přijímají jen z příkazového řádku. Malá skupina pohodlně vystačí se 2 až 4 GB paměti; roste podle toho, kolik podzemí bylo vykopáno. Tento návod pokrývá instalaci, každé důležité nastavení, oba způsoby připojení, přenos světa na server a jeho ochranu.

Co dedikovaný server dělá#

Multiplayer v Core Keeperu normálně běží s jedním hráčem jako hostitelem: svět žije na jeho PC a existuje jen, dokud hraje. Dedikovaný server je bezobrazovková verze hry, která drží svět sama, takže kdokoli ze skupiny může hrát kdykoli a snímková frekvence nikoho není simulací všech.

Pár věcí, které určují, jak ho provozovat:

  • Svět je na straně serveru, postavy ne. Postava, inventář a dovednosti každého hráče žijí na jeho vlastním PC a putují s ním mezi světy. Server drží mapu, všechno postavené a všechno uložené v truhlách. Někdo může dorazit s vybavením z jiného světa a nikomu se postava neztratí, když server zanikne.
  • Jeden svět na jeden serverový proces. Konfigurace vybírá slot světa číslem; změna světa znamená změnit to číslo a restartovat.
  • Je to server v Unity. Počítej se spuštěním přes -batchmode, souborem s logem místo interaktivní konzole a chováním, které těsně sleduje aktualizace hry - obecný vzor pokrývá základy dedikovaných serverů v Unity.
  • Verze klienta a serveru se musí shodovat. Po aktualizaci hry aktualizuj server dřív, než se kdokoli pokusí připojit.

Požadavky a využití zdrojů#

Svět Core Keeperu se generuje při prozkoumávání a paměť serveru sleduje prozkoumanou a postavenou oblast, ne počet hráčů. Tohle jsou praktické výchozí body, ne oficiální čísla:

SkupinaRAMCPUPoznámky
1-4 hráči, nový svět2 GB1 jádroZpočátku pohodlné
4-8 hráčů, střed hry3-4 GB1,5-2 jádraOtevřeno několik biomů, běží automatizace
8+ hráčů, velký svět6-8 GB2+ jádraSilná automatizace a rozsáhlé prozkoumávání
  • CPU: simulaci dělá jedno dominantní vlákno. Automatizace - dopravníky, vrtáky, farmy - běží, ať je někdo poblíž, nebo ne, takže základna plná strojů je hlavní náklad na CPU.
  • Disk: server má několik gigabajtů; soubor světa je komprimovaný a obvykle malý, megabajty, ne gigabajty. Nech místo na zálohy.
  • Síť: skromná. Režim relay přidává jeden skok; direct connect je pro hráče poblíž serveru obvykle o něco rychlejší.

Pokud plánuješ větší komunitu, obecný argument, že herní design dojde dřív než hardware, přináší kolik hráčů se vejde na server.

Instalace přes SteamCMD#

Serverový nástroj se instaluje anonymně:

bash
$ steamcmd +force_install_dir /home/corekeeper/server +login anonymous \    +app_update 1963720 validate +quit

Na Windows je ve složce Launch.bat, který spouští server s rozumnými výchozími hodnotami. Na Linuxu je tam skript _launch.sh. Starší linuxové verze vyžadovaly virtuální displej přes Xvfb a pár knihoven navíc; spouštěcí skript displej řeší, ale pokud server na minimální instalaci Linuxu okamžitě skončí, první, co zkontrolovat, jsou chybějící knihovny. validate, aktualizace a skriptování instalace pokrývá SteamCMD vysvětleno.

Spusť ho jednou. První start vytvoří složku s daty se souborem ServerConfig.json, složkou worlds, logy a souborem obsahujícím Game ID. Na Linuxu je složka s daty typicky:

code
~/.config/unity3d/Pugstorm/Core Keeper/DedicatedServer/

Na Windows je to ekvivalent pod AppData\LocalLow\Pugstorm\Core Keeper\DedicatedServer\ uživatele. Příznak -datapath ji přesune, což chceš, když na jednom stroji provozuješ víc serverů nebo chceš mít data vedle instalace.

ServerConfig.json#

Soubor se zapíše při prvním startu. Upravuj ho při zastaveném serveru:

ServerConfig.json
{  "gameId": "",  "world": 0,  "worldName": "The Core",  "worldSeed": 0,  "worldMode": 0,  "seasonOverride": -1,  "maxNumberPlayers": 8}
KlíčK čemu slouží
gameIdGame ID, kterým se hráči připojují. Prázdné znamená vygenerovat
worldSlot světa k načtení: 0 načte 0.world.gzip, 3 načte 3.world.gzip
worldNameNázev zobrazený pro svět
worldSeedSeed pro nový svět. 0 je náhodný
worldMode0 normální, 1 hard, 2 creative, 4 casual
seasonOverrideVynutí sezónní událost nebo žádnou; -1 se řídí kalendářem u verzí, které to podporují
maxNumberPlayersLimit hráčů

Pár poznámek z praxe:

  • Nastav pevné `gameId`, pokud nechceš, aby se kód měnil. Vlastní ID musí splňovat pravidla formátu hry - dlouhé, alfanumerické a bez snadno zaměnitelných znaků, například 0 a O. Pokud server tvoje odmítne, log to řekne a místo něj vygeneruje jiné. Nechat prázdné a přečíst vygenerovaný kód ze složky s daty je pro soukromou skupinu v pořádku.
  • `worldMode` se rozhoduje při vytvoření. Creative svět nelze změnit na normální ani zpět, takže vyber před prvním startem nového slotu. Hard je skutečné zvýšení obtížnosti a achievementy hry na něj berou ohled.
  • `worldSeed` má smysl jen pro nový svět. Změna u existujícího slotu nedělá nic.
  • Hodnoty sezón se mezi verzemi změnily. Pokud nastavuješ seasonOverride, zkontroluj aktuální seznam v dokumentaci hry a nekopíruj staré číslo.

S aktualizacemi přibývají nové klíče. Pokud máš klíče, které tu nejsou, přišly s tvým buildem a bezpečným výchozím bodem jsou vygenerované výchozí hodnoty.

Spouštěcí příznaky#

Většinu nastavení lze předat i jako příznaky a některá fungují jen tak:

PříznakK čemu slouží
-batchmodeSpustí bez grafiky. Vždy přítomný
-logfileZapisuje log do souboru
-worldTotéž co world
-worldnameTotéž co worldName
-worldseedTotéž co worldSeed
-worldmodeTotéž co worldMode
-gameidTotéž co gameId
-maxplayersTotéž co maxNumberPlayers
-datapathKde leží složka s daty
-portZapne direct connect na tomto portu
-ipAdresa, na kterou se navázat v režimu direct connect
-passwordHeslo pro připojení, používá se s direct connect

Port, adresa a heslo jsou jen pro příkazový řádek - jejich zapsání do ServerConfig.json nedělá nic. A když se příznak a soubor liší, vyhrává příznak, což je obvyklý důvod, proč se úprava souboru zdánlivě ignoruje.

Game ID, nebo direct connect#

zadá Game IDadresa a portautosaveHráčJoin GameSteam relayrežim Game IDDirect connect-port, otevřené UDPServer Core Keeperjeden světSložka worldsN.world.gzip
Dva způsoby, jak se dostat na server Core Keeper

Režim Game ID je výchozí. Server se připojuje ven do sítě relay Steamu, takže není třeba otevírat žádný příchozí port, a hráči zadají ID v Join Game. Funguje za domácími routery, za carrier-grade NAT i na hostinzích, které porty nepřeposílají. Cenou je skok relay navíc v latenci a závislost na tom, že služba relay běží. ID se vypisuje do souboru ve složce s daty a do logu; pokud není pevně dané v konfiguraci, může se změnit, takže ho po restartu znovu zkontroluj, než lidem řekneš, že je špatně.

Direct connect se spustí, když předáš -port. Hráči se pak připojují na adresu a port serveru, takže port musí být dosažitelný - UDP, a několik hostingových návodů radí otevřít i následující port. -password v tomto režimu nastaví heslo pro připojení. Na novějších buildech je direct connect také cesta, jak se na server dostanou hráči z jiných obchodů s PC hrami, takže pokud nejste všichni na Steamu, zkontroluj v aktuálních poznámkách k patchi, který režim crossplay podporuje. Testování, že je port opravdu otevřený, pokrývá porty herních serverů vysvětleně a proč režimy relay vůbec existují, vysvětluje NAT a CGNAT pro herní hostitele.

Pro skupinu kamarádů, kde server doma provozuje jeden z nich, je skoro vždy správná volba režim Game ID. Pro hostovaný server s veřejnou adresou dává direct connect o něco lepší latenci a stabilní adresu, kterou lze rozdat.

Světy, sloty a přenos savu#

Světy jsou číslované soubory ve složce worlds serveru: 0.world.gzip, 1.world.gzip a tak dál. Nastavení world jeden z nich vybere. Vlastní světy hráče jsou na jeho PC ve stejném formátu:

code
%USERPROFILE%\AppData\LocalLow\Pugstorm\Core Keeper\Steam\<SteamID64>\worlds\

Přenos světa, který jsi hrál lokálně, na server:

  1. Zavři hru, aby byl soubor světa úplně zapsaný.
  2. Zastav server.
  3. Zazálohuj složku worlds serveru, i když si myslíš, že je prázdná.
  4. Nahraj soubor svého světa do složky worlds serveru. Buď mu dej číslo slotu, který server už načítá, a nahraď to, co tam je, nebo mu dej volné číslo a změň world (nebo -world), aby odpovídalo.
  5. Spusť server a v logu zkontroluj, že se svět načítá podle jména a že se místo něj nevytváří nový.

Postavy přenášet není třeba: jsou na PC každého hráče a jdou s ním. Svět přináší mapu, stavby, truhly a automatizaci. Opačný směr - odnést svět ze serveru domů - je stejný obráceně: zastav server, stáhni číslovaný soubor, lokálně ho přejmenuj na volné číslo slotu a objeví se v seznamu světů ve hře.

Sloty slouží zároveň jako uložené stavy. Před riskantním soubojem s bossem nebo velkou přestavbou zastav server, zkopíruj aktuální soubor světa na volné číslo a spusť znovu. Když se to nepovede, namiř world na kopii. Toto rozložení vedle jiných her ukazuje savy herních serverů vysvětleně.

Zálohy, aktualizace a restarty#

Svět je držen v paměti a zapisován do souboru periodicky a při čistém vypnutí. Zabitý proces ztratí vše, co se stalo od posledního zápisu. Proto:

  • Server zastav čistě, než zkopíruješ soubor světa a než ho jakkoli aktualizuješ.
  • Složku `worlds` zálohuj podle plánu, mimo stroj, dokud je skupina aktivní. Soubor je malý, takže denní kopie nestojí nic.
  • Před každou aktualizací hry udělej ruční zálohu. Velké aktualizace už obsah světů měnily; svět, který se včera načetl, stojí za to mít v kopii.
  • Obnovu vyzkoušej jednou záměrně. Načti zálohu do volného slotu, připoj se a prohlédni si svou základnu. Proč je právě tento krok ten, který se počítá, vysvětluje zálohy, které se opravdu obnoví.

Aktualizace přicházejí přes SteamCMD stejným příkazem app_update. Hra se patchuje podle vlastního rozvrhu a klient se aktualizuje automaticky, takže skupina se o patchi obvykle dozví tím, že se nepřipojí. Aktualizace serveru při restartu tomu zabrání, za cenu, že občas převezmeš patch dřív, než jsi zálohoval - naplánuj zálohu před restart a máš obojí. Výběr hodiny pokrývá restartovací plány, které pomáhají.

Core Keeper má oficiální podporu módů přes mod.io. Módy, které mění hratelnost, obvykle musí být přítomné na serveru i na každém klientovi ve stejných verzích; zkontroluj stránku každého módu pro pokyny k dedikovanému serveru a nepředpokládej. Svět hraný s módem na něm může záviset, takže před přidáním nebo odebráním nějakého zálohuj - pořadí obnovy, když se to pokazí, je v co dělat, když aktualizace módu něco rozbije.

Hostování#

Core Keeper není v katalogu herních serverů RE:NODE, takže neexistuje tarif pro Core Keeper ani předpřipravená instalace. Server je ale aplikace SteamCMD přátelská k Linuxu a běží dobře na stroji pro obecné použití. Dedikovaný server ti dá root přístup k instalaci SteamCMD, spuštění _launch.sh pod správcem služeb a otevření portu UDP pro direct connect, pokud ho chceš; tarify VDS se připravují ručně a doručují do 24 hodin. Pokud jsi žádný nikdy nenastavoval, základy pokrývá tvoje první hodina na novém VDS a jak udržet takový proces v chodu přes restarty, ukazuje služby systemd pro tvoje aplikace. Hry, které mají řady v katalogu, najdeš v herních serverech.

Řešení potíží#

Hráči nemohou server najít přes Game ID. Zkopíruj ID znovu z aktuálního logu nebo souboru s ID - mění se, pokud není pevné. Zkontroluj, že server dokončil start a že se shodují verze klienta a serveru.

Direct connect vyprší. Port není otevřený na UDP, nebylo předáno -port, nebo hráči používají ID relay místo adresy a portu.

Místo mého nahraného světa se objevil nový. Číslo souboru neodpovídá world, nebo konfiguraci přebíjí příznak -world. Nahraný soubor tam pořád je.

Nastavení v `ServerConfig.json` se ignorují. Stejnou hodnotu nastavuje spouštěcí příznak, nebo je to jedno z nastavení jen pro příkazový řádek: port, IP a heslo.

Server na Linuxu okamžitě skončí. Chybějící knihovny nebo podpora displeje na minimální instalaci. Přečti první řádky logu.

Paměť roste v průběhu dnů. Prozkoumávání a automatizace přidávají stav. Denní restart ji drží předvídatelnou; stálý růst k limitu během hodin znamená, že svět přerostl stroj.

FAQ#

Musím u serveru Core Keeper otevírat porty?

V základním režimu Game ID, který používá relay Steamu, ne. Port musí být otevřený na UDP jen v režimu direct connect, spuštěném přes -port.

Kde je Game ID pro Core Keeper?

Server ho zapisuje do souboru ve své složce s daty a vypisuje ho v logu při startu. Nastav gameId v ServerConfig.json, pokud chceš, aby zůstalo stejné.

Mohu přenést svůj svět pro jednoho hráče na dedikovaný server?

Ano. Zkopíruj číslovaný soubor .world.gzip ze své lokální složky worlds do složky worlds serveru a nastav world na jeho číslo. Postavy zůstávají na PC každého hráče a jdou s ním.

Patří postavy serveru?

Ne. Postavy a jejich inventáře se ukládají na vlastním PC každého hráče. Server drží svět, stavby a truhly.

Mohu změnit svět z creative na normální?

Ne. Režim světa se určuje při jeho vytvoření a creative a necreative světy nelze převádět. Založ nový slot s režimem, který chceš.

Kolik hráčů se může připojit?

Limit určuje maxNumberPlayers. Hra je navržená pro malé co-op skupiny a výkon závisí víc na automatizaci a prozkoumané oblasti než na počtu hráčů.


Komentáře

Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.

0/2000