RE:NODE

Argumenty spuštění Valheim serveru: kompletní přehled

Text: Tým RE:NODE
11 min čtení


Dedikovaný Valheim server nemá konfigurační soubor. Všechno je argument spuštění na řádku, který začíná valheim_server: -name, -port (výchozí 2456), -world (výchozí Dedicated), -password (alespoň pět znaků, nesmí být obsažené v názvu ani ve světě), -public (výchozí 1), -savedir, -logFile, -saveinterval (výchozí 1800 sekund), -backups / -backupshort / -backuplong (výchozí 4, 7200, 43200), -crossplay, -instanceid a argumenty modifikátorů světa -preset, -modifier a -setkey. Přidej před ně příznaky Unity -nographics -batchmode a to je celý povrch. Tahle stránka uvádí každý z nich s výchozí hodnotou, tím, co skutečně dělá, a chybou, kterou s ním lidé dělají.

Kam je píšeš, závisí na tom, jak server provozuješ: do své kopie start_server.sh na Linuxu (instalace na Linuxu), do start_headless_server.bat nebo služby NSSM na Windows (instalace na Windows), do SERVER_ARGS a sesterských proměnných v Dockeru (průvodce Dockerem), nebo jako pole v záložce Startup hostingového panelu.

Všechny argumenty na první pohled#

ArgumentVýchozíHodnota
-nographics-Příznak. Unity: bez grafického zařízení
-batchmode-Příznak. Unity: běh bez okna
-nameMy server v ukázkovém skriptuText zobrazený v seznamu serverů
-port2456Port UDP; použije se i další port nahoru
-worldDedicatedNázev souboru světa, bez přípony
-password-Alespoň 5 znaků
-public11 v seznamu, 0 mimo seznam
-savedirVýchozí podle platformySložka pro světy a soubory seznamů
-logFilestdout / konzoleCesta, kam se zapisuje log
-saveinterval1800Sekundy mezi uloženími světa
-backups4Počet uchovávaných automatických záloh
-backupshort7200Sekundy do první zálohy
-backuplong43200Sekundy mezi dalšími zálohami
-crossplayvypnutoPříznak. Síť PlayFab, Xbox a Game Pass
-instanceid-Identifikátor pro rozlišení instancí
-preset-Preset modifikátorů světa
-modifier-<name> <value>, lze opakovat
-setkey-Přepínač světa, lze opakovat

Kompletní řádek pro typický server:

bash
./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" -port 2456 \  -world "Midgard" -password "herring-barrel-42" -public 1 \  -savedir /home/valheim/save -saveinterval 900 -backups 6 \  -backupshort 3600 -backuplong 21600 -crossplay

Názvy argumentů piš přesně tak, jak jsou uvedené - -logFile je zdokumentován s velkým F - a hodnoty s mezerami potřebují na příkazovém řádku uvozovky. V hostingovém panelu, kde je každý argument vlastní pole, uvozovky vynech; panel je doplní sám a doslovné uvozovky by skončily v názvu serveru. Pokud je pro tebe nové, jak herní servery obecně berou argumenty, parametry spuštění herních serverů vysvětlené popisují uvozovky, pořadí a proměnné prostředí napříč enginy.

Identita: -name, -world a -password#

`-name` je to, co ukazuje seznam komunitních serverů. Může obsahovat mezery a většinu interpunkce. Na svět nemá žádný vliv, takže server můžeš kdykoli přejmenovat. Seznam třídí a hledá špatně, takže výrazné slovo v názvu pomůže hráčům tě najít.

`-world` je název souboru, ne zobrazovaný název. -world Midgard načte Midgard.db a Midgard.fwl z worlds_local v adresáři s uloženými daty, a pokud neexistují, vygeneruje nový svět s tímto názvem a náhodným seedem - z pohledu hráčů tiše. Proto je to argument za většinou hlášení „server nám resetoval svět“: překlep, změněné velké písmeno na souborovém systému Linuxu, který rozlišuje velikost písmen, nebo adresář s uloženými daty, který se přesunul. Staré soubory tam pořád jsou. Oprav název a restartuj.

Pokud chceš konkrétní seed, argument pro seed neexistuje. Vytvoř svět v herním klientu s požadovaným seedem a pak nahraj ty dva soubory - postup je v článku nahrání lokálního světa.

`-password` má dvě pravidla a server vynucuje obě tím, že odmítne nastartovat:

  1. Alespoň pět znaků.
  2. Nesmí se objevit v názvu serveru ani v názvu světa. -name "Bjorn Hall" -password "bjornhall" selže; stejně tak heslo, které obsahuje název světa.

Zda veřejný server poběží zcela bez hesla, se mezi buildy lišilo; považuj heslo za povinné. Hráči ho zadají jednou při připojení a hra si ho pro daný server pamatuje.

Síť: -port, -public a -crossplay#

`-port` nastavuje herní port, UDP, výchozí 2456. Server používá i port nad ním pro dotazy Steamu, takže -port 2456 zabírá 2456 a 2457 a ukázkové skripty doporučují přesměrovat 2456-2458. Dva servery na jedné adrese znamenají mezery mezi nimi: běžná volba je 2456 a 2466, i když 2459 by technicky fungovalo. Hráči připojující se přes IP používají herní port. Podrobnosti, včetně přesměrování portů doma, jsou v článku porty Valheimu 2456-2458 vysvětlené.

`-public` bere 1 nebo 0. S 1 se server zaregistruje v seznamu komunitních serverů; s 0 se tam neobjeví, ale kdokoli s adresou a heslem se může připojit přes IP. 0 není bezpečnostní nastavení - jen skrývá server před procházením. Pro skutečný seznam povolených použij permittedlist.txt, o kterém je průvodce soubory seznamů Valheimu. Veřejný server se může v seznamu objevit až po několika minutách; zpoždění a filtry popisuje server se nezobrazuje v seznamu.

`-crossplay` je příznak bez hodnoty. Přepne server na síťový backend PlayFab, který používají hráči z Xboxu, Game Passu a Microsoft Store, a při každém startu vypíše do logu šestimístný kód pro připojení. Bez něj je server jen pro Steam. Mění způsob identifikace hráčů - soubory seznamů pak potřebují ID s prefixem platformy, například Steam_76561198012345678 - a na Linuxu vyžaduje nainstalovanou libatomic1. Kdy ho použít a kdy vynechat, řeší článek Valheim crossplay a hráči na Xboxu.

Soubory: -savedir, -logFile a -instanceid#

`-savedir` přesune všechno, co server zapisuje: složku worlds_local (a worlds u starších buildů) a tři soubory seznamů adminlist.txt, bannedlist.txt a permittedlist.txt. Bez něj server používá profil uživatele, pod kterým běží:

PlatformaVýchozí adresář s uloženými daty
Linux~/.config/unity3d/IronGate/Valheim
Windows%USERPROFILE%\AppData\LocalLow\IronGate\Valheim

Nastav ho výslovně vždy, když server běží jako služba nebo pod účtem, do kterého se nepřihlašuješ. Jinak svět skončí ve složce profilu, kterou nikdo nehlídá - na Windows služba běžící jako LocalSystem ukládá pod C:\Windows\System32\config\systemprofile. S -savedir /srv/valheim jdou světy do /srv/valheim/worlds_local a soubory seznamů do /srv/valheim. Do složky musí smět zapisovat uživatel serveru. Kde Valheim ukládá soubory zmapuje každou cestu.

`-logFile` je argument Unity, ne Valheimu, v dokumentaci Unity psaný s velkým F. Bez něj jde log na standardní výstup, což je to, co chceš pod systemd (žurnál ho uchová), v Dockeru (docker logs) nebo v konzoli hostingového panelu. Dej mu cestu, když standardní výstup nic nezachytává - u služby NSSM bez AppStdout nebo u naplánované úlohy:

bash
-logFile /home/valheim/logs/valheim.log

Soubor se při každém startu přepisuje, nepřipisuje se do něj, takže ho ve startovacím skriptu otáčej nebo přejmenovávej, pokud chceš historii.

`-instanceid` bere krátký identifikátor a slouží k rozlišení několika instancí serveru na jednom stroji. Většina nastavení ho nikdy nepotřebuje: dva servery s různými názvy světů, různými porty a vlastními adresáři s uloženými daty se nepřou. Sáhni po něm jen tehdy, když záměrně sdílíš jeden adresář s uloženými daty mezi instancemi.

Ukládání: -saveinterval#

Svět žije v paměti a na disk se zapisuje každých -saveinterval sekund, ve výchozím stavu 1800 (třicet minut). Cokoli, co ukončí proces bez čistého vypnutí - zabití, zastavení kvůli nedostatku paměti, výpadek proudu - ztratí všechno od posledního uložení. Čisté zastavení (Ctrl+C, SIGINT, tlačítko Stop v panelu) nejdřív uloží.

-saveintervalNejhorší ztráta při páduCena
1800 (výchozí)30 minutVzácné cuknutí
90015 minutCuknutí každých 15 minut u velkých světů
60010 minutObvyklý kompromis
3005 minutZnatelné u velkých, hustě zastavěných světů

Ukládání není zadarmo: u vyspělého světa server na chvíli zastaví, zatímco svět serializuje, a hráči zaznamenají cuknutí. Čím větší svět, tím delší pauza, takže velmi krátké intervaly u velkého světa vyměňují ztráty při pádu za pravidelné záseky. 600 je dobrá výchozí hodnota pro většinu part. Admin příkaz save vynutí uložení okamžitě, což stojí za to zadat před čímkoli riskantním. Proč ukládání stojí, co stojí, vysvětluje intervaly automatického ukládání herních serverů.

Zálohy: -backups, -backupshort a -backuplong#

Vestavěná rotace záloh kopíruje dvojici souborů světa podle časovače a drží pevný počet kopií vedle něj v worlds_local:

  • `-backups` - kolik automatických záloh uchovávat, výchozí 4. Při vytvoření nové se nejstarší smaže. 0 je vypne.
  • `-backupshort` - sekundy od startu serveru do první zálohy, výchozí 7200 (dvě hodiny).
  • `-backuplong` - sekundy mezi zálohami poté, výchozí 43200 (dvanáct hodin).

S výchozími hodnotami server, který se restartuje každou noc, udělá jednu zálohu dvě hodiny po každém startu a druhé málokdy dosáhne. To je ten háček: na serveru s denním restartem se -backuplong téměř nikdy nespustí a čtyři zálohy pokrývají poslední čtyři dny po jedné za den. Chceš-li jich několik denně, sniž obě hodnoty:

code
-backups 8 -backupshort 3600 -backuplong 10800

To uchová osm kopií, první hodinu po startu a pak každé tři hodiny. Soubory záloh se jmenují podle světa s časovým razítkem, takže nikdy nepřepíšou živé soubory.

Tyto kopie leží na stejném disku jako svět a chrání před jedinou věcí: uložením, které se pokazilo. Nepomohou při mrtvém disku, smazané složce ani zmizelém hostiteli. Skutečné zálohy patří jinam, podle plánu, a čas od času se obnovují, aby se prokázalo, že fungují - obě poloviny pokrývá článek zálohy Valheim serveru a poškození světa.

Pravidla světa: -preset, -modifier a -setkey#

Modifikátory světa přibyly v aktualizaci Hildir's Request. Aplikují se při spuštění a ukládají se spolu se světem, takže jejich změna je restart s jinými argumenty; stavby a postup to neovlivní.

code
-preset casual-modifier combat hard -modifier raids less -modifier portals casual-setkey nobuildcost -setkey playerevents

Tyto tři argumenty fungují společně:

  • `-preset` vybere balíček: normal, casual, easy, hard, hardcore, immersive nebo hammer.
  • `-modifier <name> <value>` nastaví jeden posuvník a opakuje se pro každý. Názvy jsou combat, deathpenalty, resources, raids a portals. Jednotlivé modifikátory přepisují preset.
  • `-setkey <key>` zapne přepínač světa, také opakovatelný: nobuildcost, playerevents, passivemobs, nomap.

Dvě úskalí. Hodnoty jsou malá slova, ne čísla, a chybně napsaná hodnota server nezastaví, takže ověř, že se účinek, který jsi chtěl, opravdu projevil. A seznam modifikátorů a klíčů s aktualizacemi vyrostl; pro cokoli, co tu není uvedeno, je referencí obrazovka modifikátorů světa v aktuální verzi hry. Co jednotlivé hodnoty se hrou dělají, popisuje modifikátory světa a presety Valheimu a související globální klíče globální klíče a setkey.

Na RE:NODE jsou tyto argumenty pole v záložce Startup, takže změna intervalu ukládání, počtu záloh nebo modifikátoru je úprava a restart; crossplay je už zapnutý a oba porty UDP jsou přidělené s tarifem.

Tři kompletní řádky pro běžná nastavení#

Referenční tabulky se používají snáz, když je vedle nich hotový příklad. Tyhle tři pokrývají většinu part.

Malá soukromá parta na Steamu, která nikdy nechce cizí lidi v seznamu a ukládá často, protože PC jednoho hráče občas shodí relaci:

bash
./valheim_server.x86_64 -nographics -batchmode -name "Ashwood" -port 2456 \  -world "Ashwood" -password "salted-cod-77" -public 0 -saveinterval 600

Tady -public 0 drží server mimo seznam komunitních serverů a hráči se připojují přes IP. Svět a server mají stejný název, což je v pořádku; jen heslo se musí vyhnout oběma.

Smíšená parta s PC a Xboxem na hostovaném stroji, s mírnějším bojem a častými zálohami:

bash
./valheim_server.x86_64 -nographics -batchmode -name "Raven Fjord" -port 2456 \  -world "RavenFjord" -password "longboat-oar-19" -public 1 -crossplay \  -modifier combat easy -backups 8 -backupshort 3600 -backuplong 10800

Hráči na Xboxu se připojují kódem z logu, který se při každém restartu změní, takže po každém restartu pošli nový tam, kde se vaše parta baví.

Druhý server na stejném stroji jako první, s vlastním adresářem pro uložená data, aby se nic nesdílelo:

bash
./valheim_server.x86_64 -nographics -batchmode -name "Raven Fjord Test" -port 2466 \  -world "TestWorld" -password "spare-anvil-03" -public 0 \  -savedir /home/valheim/save-test

Port je o deset výš než u prvního, adresář pro uložená data je oddělený a server je mimo seznam, protože testovací svět nemá v seznamu komunitních serverů co dělat. Otevři ve firewallu i UDP 2466-2468.

Chyby, které zastaví server nebo ztratí svět#

Krátký seznam chyb v argumentech a jak vypadají:

ChybaPříznak
Heslo kratší než 5 znaků nebo uvnitř názvuServer skončí pár sekund po startu
Překlep v -world nebo špatná velká písmenaNačte se nový, prázdný svět
-savedir bez práva zápisuChyby ukládání v logu, nic se neuchová
Dva servery na 2456 a 2457Druhý server se nesváže, nebo se neobjeví ani jeden
Uvozovky napsané do pole v paneluNázev se zobrazí s uvozovkami
Chybějící -crossplayHráči z Xboxu server nenajdou

Když server nenastartuje a argumenty vypadají správně, čti první chybu v logu, ne poslední; pády Valheim serveru při startu je procházejí popořadě.

FAQ#

Existuje místo argumentů spuštění konfigurační soubor?

Ne. Vanilla Valheim nečte nic kromě svých argumentů a tří souborů seznamů. Mody běžící pod BepInEx mají vlastní konfigurační soubory v BepInEx/config, ale server sám ne.

Můžu změnit argumenty, aniž bych ztratil svět?

Ano. Server čistě zastav, změň argumenty a spusť ho. Svět ovlivňují jen -world a -savedir, které rozhodují, jaké soubory se načtou; vše ostatní se dá měnit bez rizika.

Jaký je argument pro maximální počet hráčů?

Žádný není. Limit deseti hráčů je zabudovaný ve hře a mění ho jen mody. Limit hráčů a větší party popisuje, co jeho zvýšení stojí.

Záleží na pořadí argumentů?

Ne. Valheim je čte podle jména. -nographics -batchmode dej podle zvyku na začátek a každou hodnotu nech hned za jejím argumentem.

Jak nastavím seed světa?

Ze serveru nemůžeš. Vygeneruj svět ve hře s požadovaným seedem, pak nahraj soubory .db a .fwl do worlds_local a nastav -world na jejich název.

Proč se přes -public 0 přesto můžou připojit cizí lidé?

Protože jen odstraní server ze seznamu. Kdokoli s adresou a heslem se pořád může připojit. Pro omezení, kdo se smí připojit, použij permittedlist.txt.