RE:NODE

Návody16 min čtení

Server Killing Floor 2: konfigurace a web admin

Jak provozovat dedikovaný server Killing Floor 2: instalace přes SteamCMD, spouštěcí řádek, PCServer-KFGame.ini, web admin, porty, workshopové mapy a nejčastější chyby.

5 čtenářů

Dedikovaný server Killing Floor 2 se stahuje zdarma přes SteamCMD (app id 232130), běží na Linuxu i na Windows, v režimu Survival pojme šest hráčů a pohodlně si vystačí se 3 až 4 GB paměti na jednom rychlém jádru. Skoro každého při prvním pokusu zaskočí dvě věci. Server si při prvním startu sám vytvoří konfigurační soubory a cokoli, co tam předtím dáš, přepíše, takže pořadí je instalace, start, zastavení, úpravy. A většina toho, co chce člověk měnit - mapa, režim, obtížnost, počet vln - není v žádném konfiguračním souboru, ale ve spouštěcím řádku, v řetězci ve tvaru URL připojeném za název mapy. Když tyhle dvě věci zvládneš, zbytek jsou detaily.

Co dedikovaný server nabízí#

Killing Floor 2 je kooperativní střílečka s vlnami nepřátel a server je okleštěná kopie hry bez vykreslování. Načte jednu mapu, spustí jeden herní režim a po skončení hry mapu načte znovu. Neexistuje lobby, hlasování o režimu kromě hlasování o mapě ani způsob, jak změnit režim bez restartu procesu s jiným spouštěcím řádkem.

Režimy a název třídy, který každý z nich potřebuje:

RežimHerní třídaHráči
SurvivalKFGameContent.KFGameInfo_Survival6
Weekly OutbreakKFGameContent.KFGameInfo_WeeklySurvival6
EndlessKFGameContent.KFGameInfo_Endless6
ObjectiveKFGameContent.KFGameInfo_Objective6
Versus SurvivalKFGameContent.KFGameInfo_VersusSurvival12

Šest je číslo, na které je hra vybalancovaná. Versus pojme dvanáct, protože polovina hráčů hraje za Zedy. Limit jde zvýšit a lidé to dělají, ale není to jedno nastavení: strop vynucuje třída herního režimu, takže se musí změnit MaxPlayers pro každý režim zvlášť, web admin ho při každé změně mapy resetuje a v praxi servery místo toho používají mutátor pro maximální počet hráčů. I tak scoreboard bez vlastního HUD vykreslí jen šest řádků. Složení vln, ekonomika dosh i zdraví bossů jsou psané pro šest hráčů, takže větší server je jednodušší a hlučnější hra, ne větší.

Správa je jiná, než čekáš, pokud přicházíš ze hry na enginu Source. Neexistuje rcon_password, konzolový příkaz rcon ani port Source RCON. Vzdálená správa je malý webový server zabudovaný do herního serveru, ve výchozím stavu vypnutý, plus soubory ini. Ten webový panel je popsaný níže a je to nejužitečnější věc, kterou můžeš zapnout.

Požadavky a spotřeba zdrojů#

Server je nenáročný na paměť a středně náročný na jedno jádro. Draze vychází hledání cest a fyzika Zedů, takže vrchol je pozdní vlna na velké mapě s plným serverem, ne boss fight.

KonfiguraceRAMCPUPoznámky
6 hráčů, standardní mapy, Survival1-2 GB1 jádroV klidu často hluboko pod 1 GB
6 hráčů, několik workshopových map2-3 GB1-1,5 jádraŠpičky způsobuje načítání map
12 hráčů, Versus2-3 GB1,5 jádraVíc aktérů, ne o mnoho víc paměti
Endless, dlouhé sezení3 GB1,5-2 jádraPaměť se během dlouhého běhu pomalu zvyšuje

Tato čísla jsou záměrně nižší, než ti řeknou většina hostingových stránek. U jedné instance Killing Floor 2 pro šest hráčů se naměřily stovky megabajtů rezidentní paměti a pár procent moderního jádra. Upřímná rada je, že paměť tu není to, co kupuješ, a platit za 8 GB jen proto, že to říkala srovnávací tabulka, jsou vyhozené peníze.

  • CPU: herní simulace je prakticky jednovláknová, proto server přijímá přepínač -PREFERREDPROCESSOR= pro přichycení k jádru. O tom, jestli vlna 9 na Hell on Earth udrží tick rate, rozhoduje takt, počet jader skoro nic. Obecnou verzi této úvahy najdeš v článku CPU vs RAM pro herní servery.
  • Disk: tady je skutečné omezení. Instalace je na hru z této éry velká - počítej s 30 GB a víc, pokud plánuješ cachovat velkou workshopovou kolekci, protože každá odebíraná položka se rozbalí do cache serveru a zůstane tam.
  • Síť: plná hra pro šest hráčů je nenáročná, řádově 100-200 KB/s na hráče. Nováčky ve skutečnosti trápí stahování z workshopu, které jde ze Steamu, ne od tebe.

Růst paměti během dlouhého Endless běhu je normální, ne chyba, kterou by šlo opravit. Denní restart v hodinu, kdy nikdo nehraje, ji drží na stejné úrovni, což je argument z článku restart schedules that help.

Instalace a první start#

Server je na SteamCMD dostupný anonymně, takže nepotřebuješ žádný účet:

bash
$ steamcmd +force_install_dir /home/kf2/server +login anonymous \    +app_update 232130 validate +quit

Pokud je pro tebe SteamCMD nové, v článku SteamCMD explained najdeš app id, validate a aktualizační skripty. Zmatek začíná u binárky. Na Linuxu je to:

code
Binaries/Win64/KFGameSteamServer.bin.x86_64

Není to překlep. Nativní linuxový server leží ve složce s názvem Win64, protože build systém ji nikdy nepřejmenoval. Na Windows je její sousedka KFServer.exe.

Teď to důležité: spusť server jednou a zastav ho, než cokoli upravíš. První spuštění zapíše do KFGame/Config/ kompletní sadu konfiguračních souborů, a pokud tam už soubor leží v podobě, která serveru nevyhovuje, nahradí se. Spusť ho, počkej na načtení mapy, korektně ho zastav a pak uprav.

bash
$ cd /home/kf2/server/Binaries/Win64$ ./KFGameSteamServer.bin.x86_64 \    KF-BioticsLab?Game=KFGameContent.KFGameInfo_Survival?Difficulty=2?GameLength=1 \    -Port=7777 -QueryPort=27015

Spouštěcí řádek: mapa, režim, obtížnost a délka#

Vše za názvem mapy jsou parametry ve tvaru URL oddělené znakem ? a mají přednost před odpovídající hodnotou v ini. Tři, na kterých záleží:

ParametrHodnoty
GameTřída režimu z tabulky výše
Difficulty0 Normal, 1 Hard, 2 Suicidal, 3 Hell on Earth
GameLength0 Short (4 vlny), 1 Medium (7 vln), 2 Long (10 vln)

Názvy standardních map všechny začínají KF-: KF-BioticsLab, KF-Outpost, KF-BurningParis, KF-Farmhouse, KF-VolterManor a tak dále. Mapa, kterou uvedeš na příkazovém řádku, je ta, do které se server nabootuje; kam půjde dál, určuje cyklus map v ini.

Můžeš tu předat také ?MaxPlayers=6 a ?Mutator=Package.ClassName, přičemž více mutátorů se odděluje čárkami. Na hostingu s panelem tenhle řádek nepíšeš vůbec - stejné hodnoty se objeví jako pole na záložce Startup a na RE:NODE tam žijí mapa, režim, obtížnost i délka. Změnit jednu a restartovat je celá operace.

Konfigurační soubory a nastavení, která stojí za změnu#

KFGame/Config/ obsahuje jeden soubor pro každý subsystém s prefixem podle platformy. Na Windows názvy začínají PCServer-, na Linuxu LinuxServer-. Tři, kterých se dotkneš:

SouborObsahuje
PCServer-KFGame.iniNázev serveru, hesla, cyklus map, MOTD, hlasování, přepínače hratelnosti
PCServer-KFEngine.iniOdběry z workshopu, správce stahování, síťování
KFWeb.iniWebový panel admina
KFWebAdmin.iniVíce účtů web adminu, pokud je chceš

-ConfigSubDir=<name> dá instanci vlastní složku pod KFGame/Config, takže můžeš z jedné instalace provozovat několik serverů, aniž by se přetahovaly o stejné soubory.

Klíče v PCServer-KFGame.ini, které si své místo zaslouží:

KFGame/Config/PCServer-KFGame.ini
[Engine.GameReplicationInfo]ServerName=Frankfurt Hell on EarthShortName=HoE[Engine.AccessControl]AdminPassword=a-long-random-stringGamePassword=[Engine.GameInfo]MaxPlayers=12MaxSpectators=2GameDifficulty=1.000000MaxIdleTime=0.000000bKickLiveIdlers=False[KFGame.KFGameInfo]GameMapCycles=(Maps=("KF-BurningParis","KF-BioticsLab","KF-Outpost"))ServerMOTD=Welcome. \n \n Have fun and good luck!bDisableTeamCollision=FalsebDisableKickVote=FalseKickVotePercentage=0.660000bDisableMapVote=FalseMapVoteDuration=60.000000bDisablePublicTextChat=False[KFGameContent.KFGameInfo_Survival]MaxPlayers=6

Postupně:

  • ServerName je to, co ukazuje prohlížeč serverů. Drž ho krátký a dej do něj obtížnost - lidé filtrují čtením, ne použitím filtru.
  • AdminPassword je jediné přihlašovací heslo, které server má. Přihlásí tě do webového panelu a dává admina ve hře. Prázdné GamePassword znamená veřejný server; nastavíš-li ho, server se stane soukromým a obvykle zmizí z prohlížeče.
  • Počet hráčů se nastavuje dvakrát. [Engine.GameInfo] MaxPlayers je strop enginu a výchozí hodnota je 12. Číslo, které se skutečně uplatní, je to pro konkrétní režim v [KFGameContent.KFGameInfo_Survival], které je výchozně 6. Zvýšení prvního bez druhého nedělá vůbec nic, a proto tolik lidí usuzuje, že je nastavení rozbité.
  • GameMapCycles je seznam seznamů a většina serverů potřebuje právě jeden. Každá mapa v něm uvedená musí na serveru existovat, včetně workshopových, jinak cyklus zasekne na chybějící položce. Zdokumentovaný strop je 519 map v rotaci, nad ním se server chová špatně.
  • ServerMOTD, BannerLink a WebsiteLink žijí všechny v [KFGame.KFGameInfo], ne ve vlastní sekci. \n je zalomení řádku. Pozor, ukládání nastavení z webového panelu admina má ve zvyku WebsiteLink vymazat.
  • Vyhazování nečinných hráčů je MaxIdleTime plus bKickLiveIdlers v [Engine.GameInfo] a 0 znamená nikdy.
  • Počet vln není klíč. Plyne z GameLength, které se nastavuje na spouštěcím řádku.

Obecné pravidlo pro Killing Floor 2: Tripwire změnil dodávané ini mezi sezónami víckrát. Soubor, který pro tebe server napsal, je autoritativní seznam klíčů pro verzi, kterou provozuješ; návod je seznam těch, o kterých stojí za to přemýšlet.

Web admin#

Webový panel admina je malý HTTP server uvnitř herního serveru. Dává ti živý seznam hráčů s kickem a banem, aktuální mapu a režim s možností změnit obojí bez restartu, okno chatu, konzoli a editory pro většinu výše uvedených nastavení. Dokud ho nezapneš, je vypnutý:

KFGame/Config/KFWeb.ini
[IpDrv.WebServer]Applications[0]=WebAdmin.KF2ServerAdminApplicationPaths[0]=/ServerAdminListenPort=8080MaxConnections=18bEnabled=true

Restartuj, pak otevři http://your-server-address:8080/ServerAdmin a přihlas se uživatelským jménem Admin a heslem z AdminPassword. Pokud je to heslo prázdné, nepřihlásíš se vůbec a panel ti nepoví proč. Pokud chceš víc než jeden účet, KFWebAdmin.ini přepne autentizační třídu na vícenásobnou a vygeneruje MultiAdmin.ini, který je drží.

Dvě praktické poznámky. Změna mapy nebo režimu z panelu se projeví okamžitě a nikoho nevyhodí, což je mnohem příjemnější než restart. A každé nastavení změněné v panelu se zapíše do souborů ini, takže panel a soubory jsou dva pohledy na totéž, ne dva soupeřící zdroje pravdy.

Porty a jak tě hráči najdou#

PortProtokolÚčel
7777UDPHerní provoz
27015UDPSteam query - s tímhle portem komunikuje prohlížeč serverů
20560UDPSteam
8080TCPWeb admin, jen pokud jsi ho zapnul

Herní port a query port se nastavují přes -Port= a -QueryPort= a stojí za to znát jedno chování: změna -Port= posune query port automaticky o stejnou hodnotu, pokud nezadáš i -QueryPort=. To je pohodlné, když provozuješ více instancí, a překvapivé, když ne. Všechny tři UDP porty musí být dosažitelné; server, který běží perfektně, ale nikdy se neobjeví v prohlížeči, má skoro vždy zablokovaný nebo špatný query port. Ještě jeden, odchozí: server Weekly Outbreak zjišťuje čas přes NTP na UDP 123, aby zjistil, který weekly je aktuální. Proč query port existuje a co se rozbije, když je otevřený jen jeden z dvojice, vysvětluje Game server ports explained.

Hráči tě najdou třemi způsoby: v herním prohlížeči, který je pomalý a silně filtrovaný; přes oblíbený server přidaný podle adresy; nebo přes konzoli. Killing Floor 2 si ponechává konzoli Unrealu, takže hráč může stisknout klávesu konzole a napsat:

code
open 203.0.113.10:7777

To je spolehlivý test, když prohlížeč nespolupracuje. Pokud open funguje a prohlížeč tě nevypisuje, server je v pořádku a problém je v query portu.

Na RE:NODE se herní a query port přidělují spolu se serverem a admin heslo se generuje při instalaci. Web admin potřebuje vlastní port, který přidáš na záložce Network.

Workshopové mapy, mutátory a vlastní obsah#

Killing Floor 2 stahuje obsah z workshopu podle id, ne podle odběru. Id vypíšeš v konfiguraci enginu:

KFGame/Config/PCServer-KFEngine.ini
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]ServerSubscribedWorkshopItems=1234567890ServerSubscribedWorkshopItems=1234567891[IpDrv.TcpNetDriver]DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload

Jeden řádek na položku, opakovaně, ne seznam oddělený čárkami. Řádek DownloadManagers je ten, který lidé vynechávají, a musí být první položkou ve stávajícím seznamu pod [IpDrv.TcpNetDriver] - bez něj server mapu má a připojující se klienti ne, což vypadá jako rozbitý server, ne jako chybějící řádek.

Při dalším startu server stáhne každou položku do KFGame/Cache/<id>/0/BrewedPC a skutečný název mapy je soubor .kfm uvnitř bez přípony. Při prvním startu sleduj konzoli, protože špatné id selže potichu. Na Linuxu existuje dlouholetá chyba, kdy server složku cache nevytvoří, takže před startem spusť mkdir -p KFGame/Cache.

Stažená mapa ještě není hratelná mapa. Killing Floor 2 pro ni chce souhrnný blok v PCServer-KFGame.ini, než se objeví v cyklu a v seznamu pro hlasování:

KFGame/Config/PCServer-KFGame.ini
[KF-MyCustomMap KFMapSummary]MapName=KF-MyCustomMapScreenshotPathName=UI_MapPreview_TEX.UI_MapPreview_Placeholder

Název sekce je název souboru mapy, mezera a KFMapSummary, což je dost neobvyklé na to, aby stálo za to to opsat přesně. Potom přidej mapu do GameMapCycles. Připojující se hráči jsou nasměrováni na stejné workshopové položky a Steam je stahuje na straně klienta, a proto je první připojení k hodně modifikovanému serveru pomalé a proč mapa, kterou klient nestáhne, skončí jako hráč zaseknutý na načítací obrazovce.

Mutátory se předávají na spouštěcím řádku jako ?Mutator=Package.ClassName, přičemž více jich oddělíš čárkami uvnitř jednoho ?Mutator=, ne opakováním. Dají se distribuovat přes workshop stejně jako mapy.

Tady je část, která mění druh serveru, který provozuješ. Tripwire vede whitelist a server s jakoukoli úpravou, která na něm není, se označí jako Unranked: hráči na něm nezískávají žádné XP perku. Vanilla a whitelistovaný obsah nechávají server Ranked. Není to chyba ani nastavení hostingu, je to politika vydavatele, a je to první věc, kterou je třeba lidem říct, než na tvém serveru stráví večer levelováním. Známé modifikace svůj stav uvádějí samy a některé oblíbené nebyly na whitelist nikdy zařazeny.

Širší mechanika workshopového obsahu na serveru - kolekce, načasování aktualizací, co se stane, když autor mapu znovu publikuje - je v článku Steam Workshop mods on dedicated servers. Nejdůležitější rada odtamtud platí i tady: autor, který aktualizuje mapu uprostřed sezóny, ti rozbije cyklus, aniž by ti to řekl, takže po aktualizaci zkontroluj konzoli a nezjišťuj to od hráče.

Aktualizace, restarty a zálohy#

Klienti a servery Killing Floor 2 se musí shodovat přesně. Po každém patchi - a Tripwire vydává sezónní obsahové aktualizace - musí server spustit app_update, než se kdokoli připojí, a hráč s novým buildem, který narazí na starý server, dostane chybu verze bez užitečných podrobností.

Zálohovat stojí za to málo a snadno se to ztratí:

  • KFGame/Config/ - každé nastavení, které jsi udělal, včetně seznamu workshopu a souhrnů map.
  • Cokoli, co jsi ručně umístil do KFGame/, například mapy, které hostuješ sám, ne z workshopu.

Není tu žádný soubor světa. Server Killing Floor 2 nemá žádný trvalý stav, který by bylo třeba chránit kromě konfigurace, protože postup perků žije na Steam profilu každého hráče, ne na tvém serveru. Díky tomu jsou zálohy levné a obnova rychlá - kopii složky s konfigurací si udělej před každým patchem a před každým kolem úprav. O polovině, kterou lidé přeskakují, tedy o ověření, že kopie je v pořádku, je článek Backups that actually restore.

Na RE:NODE mají tarify Killing Floor 2 sloty pro zálohy, obnova je jedno tlačítko a záložka Schedules spustí noční zálohu a denní restart s varovným příkazem předtím. Pokud server dosáhne limitu paměti, kontejner se zastaví a čistě spustí znovu místo swapování, což u bezstavového herního serveru stojí jednu vlnu a nic dalšího.

Řešení potíží#

Moje úpravy ini mizí. Upravoval jsi za běhu serveru nebo před prvním startem. Zastav server, uprav, spusť.

Server se neobjevuje v prohlížeči. Zkontroluj, že query port je otevřený na UDP a shoduje se s -QueryPort=. Otestuj to příkazem open ip:7777 z herní konzole: pokud se připojí, herní port je v pořádku a problém je jen na straně query.

Web admin odmítá spojení. Zkontroluj bEnabled=true v PCServer-KFWeb.ini, že se server od nastavení restartoval a že je web admin port otevřený na TCP. Pozor, tento port je TCP, zatímco všechno ostatní je UDP, což zaskočí lidi kopírující pravidla firewallu.

Web admin se načte, ale odmítá moje heslo. AdminPassword je prázdné nebo má na konci mezeru. Panel vypíše tutéž chybu v obou případech.

Workshopová mapa se nikdy nestáhne. Id je špatné, nebo je to id kolekce místo id položky. Kolekce se nepřijímají - vypiš každou položku.

Workshopová mapa se stáhne, ale není v seznamu pro hlasování. Chybí blok KFMapSummary nebo se název sekce přesně neshoduje se souborem mapy. Drž velikost písmen stejnou v cyklu, v souhrnném bloku i v samotném souboru.

Server má workshopovou mapu, klienti ne. V [IpDrv.TcpNetDriver] chybí řádek DownloadManagers nebo není první položkou toho seznamu.

Log opakuje "Attempting server re-register now" a čeká na Steam Server UID. Na stejném stroji běží hra ze Steamu, instalace nebyla nikdy ověřena přes validate, nebo se nenainstalovaly přibalené prerekvizity UE3Redist.

Můj startovací skript se pořád resetuje. validate v aktualizačním řádku SteamCMD přepíše dodávaný startovací skript při každém spuštění. Drž si vlastní kopii pod jiným názvem.

Hráči dostávají nesoulad verzí. Spusť na serveru app_update. Pokud je server modifikovaný, musí se aktualizovat i mody, než budou moct lidé hrát - obecný postup je v článku what to do when a mod update breaks.

Server hraje pořád jednu mapu. GameMapCycles je prázdný, obsahuje jen tu mapu, nebo uvádí mapu, která neexistuje, a cyklus za ni nemůže postoupit.

FAQ#

Kolik hráčů pojme server Killing Floor 2?

Šest v Survival, Endless, Objective a Weekly, dvanáct ve Versus Survival. Limit šesti hráčů je rozhodnutí o balancu, ne o hardwaru. MaxPlayers zvýšit můžeš, ale velikost vln, dosh a zdraví bossů se s ním neškálují, takže je hra jednodušší a hlučnější, ne větší.

Má Killing Floor 2 RCON?

Ne. Neexistuje port ani heslo RCON ve stylu Source. Vzdálená správa je zabudovaný webový panel admina přes HTTP plus jakýkoli přístup ke konzoli, který ti dá hosting. Proto si admin heslo zaslouží stejnou péči jako heslo k RCON.

Kolik RAM potřebuje server Killing Floor 2?

Méně, než se většině lidí prodává. U instance Survival pro šest hráčů na standardních mapách se naměřily stovky megabajtů; 2 až 3 GB pohodlně stačí i s workshopovým obsahem a dlouhým během Endless. Skutečným požadavkem je disk - samotná instalace chce desítky gigabajtů. Kup takt a úložiště, ne paměť.

Kde změním obtížnost?

Na spouštěcím řádku jako ?Difficulty= s hodnotou 0 až 3, nebo živě z webového panelu admina. Hodnota v ini je spouštěcím řádkem přepsaná, a proto se někdy zdá, že úprava souboru a restart nedělají nic.

Získávají hráči na mém serveru XP perku?

Na vanilla nebo whitelistovaném serveru ano a postup se ukládá k jejich Steam účtu, ne na tvůj server, takže ho nemůžeš nijak ztratit. Spustíš-li modifikaci, která není na whitelistu Tripwire, server se stane Unranked: lidé stále mohou hrát, ale XP nezískávají. Pokud je to tvůj případ, napiš to do názvu serveru.

Můžu provozovat vlastní mapy bez Steam Workshopu?

Ano - dej soubor .kfm do složky s mapami na serveru a přidej mu blok KFMapSummary a místo v cyklu. Háček je v tom, že hráči si ho pak nemají odkud stáhnout, takže každý, kdo se připojuje, musí soubor už mít. Distribuce přes workshop existuje právě proto, aby tohle vyřešila.


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