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:
| Skupina | RAM | CPU | Poznámky |
|---|---|---|---|
| 1-4 hráči, nový svět | 2 GB | 1 jádro | Zpočátku pohodlné |
| 4-8 hráčů, střed hry | 3-4 GB | 1,5-2 jádra | Otevřeno několik biomů, běží automatizace |
| 8+ hráčů, velký svět | 6-8 GB | 2+ jádra | Silná 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ě:
$ steamcmd +force_install_dir /home/corekeeper/server +login anonymous \ +app_update 1963720 validate +quitNa 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:
~/.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:
{ "gameId": "", "world": 0, "worldName": "The Core", "worldSeed": 0, "worldMode": 0, "seasonOverride": -1, "maxNumberPlayers": 8}| Klíč | K čemu slouží |
|---|---|
gameId | Game ID, kterým se hráči připojují. Prázdné znamená vygenerovat |
world | Slot světa k načtení: 0 načte 0.world.gzip, 3 načte 3.world.gzip |
worldName | Název zobrazený pro svět |
worldSeed | Seed pro nový svět. 0 je náhodný |
worldMode | 0 normální, 1 hard, 2 creative, 4 casual |
seasonOverride | Vynutí sezónní událost nebo žádnou; -1 se řídí kalendářem u verzí, které to podporují |
maxNumberPlayers | Limit 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
0aO. 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říznak | K čemu slouží |
|---|---|
-batchmode | Spustí bez grafiky. Vždy přítomný |
-logfile | Zapisuje log do souboru |
-world | Totéž co world |
-worldname | Totéž co worldName |
-worldseed | Totéž co worldSeed |
-worldmode | Totéž co worldMode |
-gameid | Totéž co gameId |
-maxplayers | Totéž co maxNumberPlayers |
-datapath | Kde leží složka s daty |
-port | Zapne direct connect na tomto portu |
-ip | Adresa, na kterou se navázat v režimu direct connect |
-password | Heslo 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#
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:
%USERPROFILE%\AppData\LocalLow\Pugstorm\Core Keeper\Steam\<SteamID64>\worlds\Přenos světa, který jsi hrál lokálně, na server:
- Zavři hru, aby byl soubor světa úplně zapsaný.
- Zastav server.
- Zazálohuj složku
worldsserveru, i když si myslíš, že je prázdná. - Nahraj soubor svého světa do složky
worldsserveru. 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. - 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.