RE:NODE

Valheim visí na Connecting nebo načítání: co zkontrolovat

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


Když Valheim minuty visí na „Connecting“ nebo na načítací obrazovce, bývá příčinou skoro vždy jedna z pěti věcí: klient se k serveru vůbec nedostane (špatný port, zablokované UDP, server ještě nenaběhl), crossplay relay má zrovna špatnou chvíli, hráč se přihlašuje vedle obří základny, která se mu musí nahrát, mod se synchronizuje nebo kontroluje verze, nebo je někde pomalý disk. Nejrychleji to rozlišíš tak, že při pokusu o připojení sleduješ log serveru: pokud server hráče vůbec nevidí, je to síť; pokud ho vidí, ale hráč se nikdy neobjeví ve světě, je to svět nebo mody. Všechno níže je jen delší verze téhle jedné věty.

Co se děje mezi Connect a spawnem#

Připojení k serveru Valheim není jediný krok. Je to krátká sekvence a každá fáze selhává po svém, takže se vyplatí vědět, kde přesně hráč uvízl.

jen modované serveryHra hráčestisk ConnectCesta k serverupřímé UDP nebo relayHandshakeverze a hesloKontrola modůJotunn, ServerSyncData světazóny kolem hráčeSpawnpostava ve světě
Fáze připojení k serveru Valheim
  1. Hledání cesty. Hráč na Steamu, který se připojuje přes IP, posílá UDP přímo na herní port. Crossplay hráč s join kódem jde přes relay PlayFab. Pokud selže tahle fáze, uvidíš „Connecting“ a nakonec „Failed to connect“.
  2. Handshake. Klient a server porovnají verze hry a klient je vyzván k zadání hesla. Rozdíl ve verzích skončí tady hláškou „Incompatible version“; špatné heslo skončí opětovnou výzvou k zadání hesla.
  3. Kontrola modů. Na modovaném serveru knihovny jako Jotunn porovnávají verze modů a ServerSync posílá klientovi konfiguraci ze serveru. Když vše sedí, je to rychlé; když ne, právě tady vznikají vyhazovy kvůli neshodě verzí.
  4. Data světa. Server pošle stav zón kolem místa, kde se postava odhlásila: každý stavební kus, bednu, předmět na zemi, ochočené zvíře a úpravu terénu. To je ta dlouhá načítací obrazovka.
  5. Spawn. Postava se objeví a klient převezme vlastnictví zón, ve kterých stojí.

Hráč, který uvízl na slově „Connecting“, je ve fázi 1 nebo 2. Hráč, který projde heslem a pak tři minuty sleduje načítací obrazovku, je ve fázi 4. Ber to jako dva různé problémy.

Co zkontrolovat jako první#

Než začneš číst cokoli dalšího, projdi tohle v pořadí. Většina případů skončí u kroku 2 nebo 3.

  1. Opravdu server běží? Server Valheim potřebuje čas, aby načetl svět a zaregistroval se u Steamu. Na velkém světě je to minuta i víc od spuštění procesu. Počkej na řádek oznamující session (nebo join kód na crossplay serveru), než se někdo začne připojovat.
  2. Funguje připojení přes IP pro jednoho hráče na Steamu? Použij Join Game, Add Server a adresu s herním portem, například 203.0.113.10:2456. Pokud to funguje, server i jeho porty jsou v pořádku a problém je v cestě, kterou používají ostatní.
  3. Je to jeden hráč, nebo všichni? Jeden uvízlý hráč, zatímco ostatní se připojují normálně, ukazuje na něj: jeho síť, mody, instalaci nebo místo, kde jeho postava stojí. Když uvíznou všichni, je chyba na serveru.
  4. Vyšel právě update hry? Den po patchi jsou neshody verzí a rozbité mody nejpravděpodobnější příčinou čehokoli. Viz aktualizace serveru a neshody verzí.
  5. Vidíš v logu serveru, že hráč dorazil? To je rozhodující otázka, kterou probereme v poslední sekci.

Visí na „Connecting“: síť a server#

Pokud log serveru hráče vůbec nezmiňuje, pakety nedorazily. Obvyklé důvody:

PříznakPravděpodobná příčinaŘešení
Připojení přes IP nikdy nenaváže spojeníPoužit query port místo herníhoPřipoj se na 2456 (nebo svůj -port), ne na 2457
Nikdo se nemůže připojit, server běžíFirewall povoluje jen TCPOtevři oba porty jako UDP
Funguje v LAN, ne zvenkuPort není přesměrovaný, nebo CGNATPřesměruj UDP, nebo použij hostovaný server
Připojení selhává minutu po startuSvět se ještě načítáPočkej na řádek se session v logu
Jen jeden hráčJeho router, VPN nebo poskytovatelZkus z jiné sítě, vypni VPN

Valheim používá UDP na herním portu a na portu o jedna výš. Pravidlo, které otevře TCP nebo jen jeden z obou portů, vytvoří server, který běží bezchybně a nikdo se k němu nedostane. Porty Valheimu vysvětleně popisuje celý rozsah podrobně a Failed to connect a další chyby připojení prochází každou hlášku, kterou klient zobrazí, když tahle fáze dopadne špatně.

Domácí připojení za carrier-grade NAT nemůže přijímat příchozí spojení vůbec, ať je router nastavený jakkoli. Pokud se veřejná adresa na stavové stránce routeru liší od té, kterou ukazuje web „what is my IP“, děje se přesně tohle - NAT a CGNAT pro hostitele her vysvětluje test i způsoby, jak to obejít.

VPN na hráčově počítači stojí za to vyloučit brzy. Některé vedou herní provoz přes vzdálený výstupní bod, některé zahazují UDP a pár jich blokuje koncové body relay, které crossplay používá. Vypnout ji na jeden pokus nestojí nic.

Crossplay a relay PlayFab#

Server spuštěný s -crossplay je dostupný přes relay Microsoftu PlayFab, ne přímo. Díky tomu se může hráč na Xboxu připojit šestimístným kódem a crossplay server funguje i za nepříjemným NAT, ale přidává to závislost, kterou neovládáš.

Co to znamená v praxi:

  • Join kód se mění při každém restartu. Hráč, který zadá včerejší kód, uvidí „Connecting“ a pak chybu. Aktuální kód si po každém restartu přečti z logu serveru nebo z konzole.
  • Relay přidává jeden skok. Připojení může trvat znatelně déle než přímé přes IP a pokud je relay zhoršené, může viset. Když crossplay server, který včera fungoval, najednou všechny odmítá, je rozumným prvním krokem restart serveru (dostane novou session a kód).
  • ID se liší. Na crossplay serveru jsou hráči identifikováni ID s prefixem platformy, například Steam_7656... nebo Xbox_2535.... Pokud používáš seznam povolených v permittedlist.txt a hráč je v něm ve špatném tvaru, bude odmítnut, což z pohledu klienta může vypadat jako problém s připojením.

Pokud jsou všichni hráči ve skupině na Steamu, nejjednodušší řešení potíží s relay je crossplay vypnout a nechat všechny připojovat přes IP. Přímé UDP má méně pohyblivých částí. Pokud potřebuješ hráče z Xboxu nebo Game Passu, nastavení správně popisuje crossplay a hráči na Xboxu na serveru.

Dlouhé načítání: velikost světa, základny a terén#

Jakmile je heslo přijato, server nahrává oblast kolem místa, kde se postava odhlásila. Jak dlouho to trvá, záleží na tom, kolik toho tam je, ne na velikosti celého souboru světa. Postava odhlášená na prázdné louce se načte za pár sekund i na světě o 150 MB. Stejná postava odhlášená uprostřed hlavní základny skupiny, se čtyřmi sty bednami, několika tisíci stavebních kusů, ohradou s třiceti vlky a zarovnanou horou, může na načítací obrazovce strávit dlouhou dobu.

Objekty, které stojí nejvíc:

  • Stavební kusy. Každá zeď, trám a podlaha je samostatný objekt, který klient musí přijmout a postavit. Velké základny, zvlášť ty z tisíců malých kusů, jsou hlavní příčinou pomalých přihlášení na starších světech.
  • Předměty na zemi. Odhozené stacky, omylem rozsypaný obsah náhrobků a smetí z let tavení. Každý z nich je objekt.
  • Ochočená zvířata. Každé zvíře je objekt s vlastním stavem a ohrady se množí tak, že si toho nikdo nevšimne.
  • Úpravy terénu. Zvednutá, snížená a zarovnaná země se ukládá jako úpravy po zónách. Základna na úplně terraformované plošině je těžší než stejná základna na přírodním terénu.

Praktické opravy, zhruba podle náročnosti:

  1. Odhlašuj se na klidném místě. Postavy se objevují tam, kde se odhlásily. Ukončit session mimo základnu nebo u malé portálové chatky kousek dál promění dlouhé přihlášení v krátké. Pro skupiny s jednou obří základnou je to nejúčinnější zvyk.
  2. Ukliď zem. Admin s vhodnými nástroji může odstranit odhozené předměty; odhozené předměty a úklid světa popisuje, jaké příkazy existují a co odstraní.
  3. Prořeď ohrady. Méně ochočených zvířat na jednom místě se načte rychleji a po načtení i lépe běží.
  4. Stav většími kusy. Zeď z panelů 2x2 je čtvrtina objektů oproti stejné zdi z kusů 1x1.

Stejně důležitý jako server je tu počítač klienta. Stavba velké oblasti znamená lokálně vytvořit tisíce objektů a pomalý procesor nebo hra nainstalovaná na pevném disku tuto fázi prodlouží, ať server dělá cokoli. Pokud jeden hráč načítá vždy pomalu a ostatní ne, porovnej nejdřív jejich hardware, než obviníš svět. Umístění základen na sdílených serverech říká víc o tom, jak zabránit těžkým stavbám sdílet zóny.

Mody: start BepInEx, Jotunn a ServerSync#

Na modovaném serveru se při připojení dějí dvě věci navíc a obě mohou vypadat jako zamrznutí.

Kontrola verzí. Mnoho obsahových modů závisí na Jotunn, který porovnává mody a verze na klientovi s těmi na serveru. Pokud se liší, hráč je odpojen hláškou s výpisem neshody. Když se hláška objeví pomalu nebo klient zobrazí jen obecnou chybu, hráč to prožije jako uvíznutí a pak vyhození. Vyhazování kvůli neshodě verzí modů ukazuje, jak hlášku přečíst a opravit sadu modů.

Synchronizace konfigurace. Mody využívající ServerSync nebo synchronizaci konfigurace z Jotunn posílají nastavení ze serveru každému klientovi při připojení. Obvykle je to okamžité, ale mod s velkou konfigurací nebo několik modů synchronizujících najednou přidá čas. Klient se starší verzí synchronizovaného modu může čekat na synchronizaci, která nikdy neskončí.

Je tu také vlastní start klienta. Silně modovaný klient se dostane do hlavního menu déle a některé mody dělají práci při prvním vstupu do světa. To je oddělené od serveru, ale hráči to často hlásí jako „server se načítá věčnost“.

Co dělat:

  • Ať celá skupina instaluje z jednoho sdíleného profilu, aby každý klient přesně odpovídal serveru. Profily r2modman pro skupinu popisují export a import kódu profilu.
  • Po patchi hry nenech nikoho aktualizovat mody po jednom. Aktualizuj sadu na serveru, exportuj profil znovu a ať ho všichni naimportují.
  • Když na modovaném serveru visí jediný hráč, ať to jednou zkusí s vypnutými mody na vanilla testovacím serveru. Pokud to funguje, problém je v jeho sadě modů, ne v připojení.

Log BepInEx na klientovi je BepInEx/LogOutput.log ve složce hry; běžný log Unity je Player.log v %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\. Mod, který při připojení vyhodí chybu, obvykle zanechá stack trace v jednom z nich.

Disky, ukládání a paměť na serveru#

Tři podmínky na straně serveru způsobují zasekávání, které hráči vnímají jako potíže s připojením.

Probíhající uložení. Valheim drží svět v paměti a zapisuje ho každých -saveinterval sekund. Během zápisu je server zaneprázdněný a hráč, který dorazí právě tehdy, čeká. Na velkém světě na pomalém úložišti je pauza dost dlouhá, aby si jí člověk všiml. Log vypisuje řádek World saved s dobou trvání, ze kterého poznáš, jak dlouhá je tvoje pauza. Pokud trvá několik sekund, pomůže rychlejší úložiště nebo menší svět; čísla najdeš v CPU a disk pro Valheim.

Pomalý start na pomalém úložišti. Načtení velkého souboru .db z pevného disku trvá znatelně déle než z SSD nebo NVMe. Hráči, kteří se v tomto okně pokusí připojit, nepořídí nic, a pokud se to stane po každém plánovaném restartu, vypadá to jako opakující se závada.

Nedostatek paměti. Server blízko limitu paměti může být zabit a restartován uprostřed připojování hráče. Na většině panelových hostingů to vypadá tak, že server přejde offline a vrátí se, a klient hráče buď visí na načítací obrazovce, nebo spadne do menu. Podívej se na graf paměti: pokud při připojování lidí sedí na limitu, je tarif pro daný svět příliš malý. Dimenzování popisuje kolik RAM potřebuje server Valheim.

Na RE:NODE běží každý tarif na NVMe, konzole má grafy paměti, CPU a disku proti limitům tarifu a server, který dosáhne limitu paměti, je zastaven a čistě znovu spuštěn, místo aby se nechal swapovat. Poslední věc znamená, že příznakem je restart viditelný v konzoli, ne pozvolný pokles, takže se snadno pozná.

Čtení logu serveru, když se někdo připojuje#

V logu přestává hádání. Otevři konzoli, nech jednoho hráče zkusit se připojit a sleduj. Přesné znění se mezi verzemi hry mírně liší, ale úspěšné připojení vypadá zhruba takto:

code
Got connection SteamID 76561198012345678Got handshake from client 76561198012345678Server: New peer connected,sending global keysGot character ZDOID from Bjorn : 1234567890:1

Co znamená který výsledek:

Co ukazuje logKde to váznePodívej se na
Vůbec nicPřed serveremPorty, UDP, CGNAT, join kód, VPN
Spojení, žádný handshakeVerze nebo cestaVerze hry na obou stranách
Řádek se špatným heslemHesloHeslo a zda je aktuální
Handshake, pak rychlé odpojeníKontrola modů nebo seznam povolenýchHláška Jotunn, permittedlist.txt
Handshake, minuty bez řádku s postavouData světaMísto odhlášení, velikost základny, hardware klienta
Server se během připojení restartujeZdroje serveruGraf paměti, crash log

Pokud server provozuješ sám, -logFile zapisuje stejný výstup do souboru, ve kterém pak můžeš hledat. Log serveru Valheim vysvětlený projde ostatní řádky, které stojí za to poznat.

Dvě poslední kontroly, na které lidé narážejí. Zaprvé: ověř, že se hráči připojují na ten server, o kterém si myslíš. Skupina, která přesunula hosting, má někdy zastaralou oblíbenou položku ukazující na starou adresu, která prostě věčně hlásí „Connecting“. Zadruhé: pokud je hráč za stejným routerem jako server (hosting doma), připojení přes veřejnou adresu může selhat na routerech, které nepodporují hairpin NAT; takový hráč by měl použít lokální adresu.

FAQ#

Proč Valheim visí na Connecting jen u jednoho kamaráda?

Protože se na jeho straně něco liší: síť, VPN, firewall na jeho PC, zastaralá hra, mod, který zbytek skupiny nemá, nebo starý join kód. Ať se připojí přes IP s herním portem, zatímco ty sleduješ log serveru. Pokud ho log nikdy neukáže, je to jeho síť; pokud ano, příčinou je jeho instalace nebo mody.

Znamená dlouhá načítací obrazovka, že je server příliš malý?

Samotná zřídka. Délku načítání určuje hlavně počet objektů kolem postavy a procesor a disk samotného hráče. Server s nedostatkem paměti se projevuje jinak: restarty, záškuby a graf paměti přilepený na limitu.

Zrychlí připojování vypnutí crossplay?

U skupiny jen na Steamu obvykle ano. Bez crossplay se hráči připojují přímo na UDP port serveru místo přes relay, což odstraní jeden skok a službu, kterou neovládáš. Pokud někdo hraje na Xboxu nebo přes Game Pass, crossplay zapnutý být musí.

Proč se mohu na svůj domácí server připojit přes IP zvenku, ale ne zevnitř?

Mnoho domácích routerů neodráží provoz na vlastní veřejnou adresu zpět do sítě. Hráči ve stejném domě by se měli připojovat na lokální adresu serveru a všichni ostatní na veřejnou.

Po updatu hry nám to visí na načítání. Co máme udělat jako první?

Zkontroluj, že server i všichni klienti mají stejnou verzi, a pak zkontroluj mody. Na modovaném serveru předpokládej, že je něco rozbité, dokud autoři nevydají aktualizace, a drž hráče na staré verzi nebo server na vanilla, dokud je nevydají.

Může velký soubor světa zpomalit načítání všem?

Ne samotnou velikostí. Záleží na tom, kolik toho je poblíž místa, kde se každá postava objeví. Velký soubor plný vzdáleného prozkoumaného terénu se načte rychle; malý, kde se všichni odhlašují ve stejné husté základně, ne.