Když tě módovaný Valheim server vyhodí hned po připojení, je to téměř vždy proto, že se tvoje módy a módy serveru neshodují - jeden mód chybí na jedné straně, nebo je stejný mód v jiné verzi. Hláška na obrazovce odpojení obvykle mód pojmenuje. Přečti si ji, nastav svou sadu shodně se serverem a jsi uvnitř. Zdlouhavé jsou případy, kdy je hláška vágní, pochází ze hry místo z módu, nebo kdy dva lidé přísahají, že mají „stejné módy“, a nemají. Tento článek projde, co jednotlivé hlášky znamenají, který systém je vyrobil, jak přesně porovnat obě sady a jak zabránit tomu, aby se to opakovalo při každé aktualizaci.
Pokud žádné módy nepoužíváš a přesto dostáváš „Incompatible version“, jde o verzi hry, ne o módy - viz aktualizace serveru a neshoda verzí.
Tři kontroly, tři různé hlášky#
Připojení k módovanému Valheimu prochází až třemi nezávislými kontrolami verzí. Když víš, která tě zastavila, víš, kde hledat.
| Kontrola | Kdo ji provádí | Co porovnává | Co uvidíš |
|---|---|---|---|
| Vanilla | Hra | Verzi hry a sítě | „Incompatible version“ |
| Jotunn | Jotunn na obou stranách | Módy, které deklarují úroveň kompatibility | Okno s výpisem módů a verzí |
| ServerSync | Každý mód, který ho obsahuje | Verzi toho módu a jeho požadované minimum | Další řádky s názvem módu |
Běží v různých okamžicích. Vanilla kontrola proběhne první, při handshaku: pokud se verze hry liší, nic dalšího se neporovnává. Kontroly Jotunn a ServerSync proběhnou, až když je spojení přijato a módy si vymění informace, a proto může neshoda módů vypadat jako připojení, které na vteřinu uspělo a pak spadlo.
Jak číst hlášku#
„Incompatible version“ bez jmen módů
Liší se verze hry. Buď se aktualizoval klient a server ne, nebo naopak. Na módovaném serveru je obvyklou příčinou hráč, jehož Steam přes noc aktualizoval Valheim, zatímco server je záměrně držen zpátky, dokud se módy nedotáhnou. Oprava je v načasování, ne v módech. Některé verze ServerSync přidávají své řádky o módech pod tutéž hlášku, takže pokud je pod ní další text, přečti si ho jako první.
Okno Jotunn s výpisem módů
Jotunn po odpojení vytvoří samostatné okno, které vypisuje každý mód, jenž neprošel kontrolou, a proč: chybí na tvé straně, chybí na straně serveru, nebo je na obou stranách ve verzích, které jsou příliš daleko od sebe, s oběma zobrazenými verzemi. Přísnost - jestli je 1.4.2 proti 1.4.3 problém - deklaruje každý mód. Jotunn vysvětlen obsahuje celou tabulku úrovní.
Tohle je snadný případ. Každý řádek ti říká, co nainstalovat, odebrat nebo změnit na jakou verzi.
Řádky ServerSync s názvem módu
ServerSync je knihovna, kterou mnoho oblíbených módů (mimo jiné velká část rodin Smoothbrain, Azumatt a blaxxun) kompiluje přímo do svého .dll, takže se obvykle neinstaluje zvlášť a v seznamu módů se neobjeví jako samostatná položka. Umožňuje módu deklarovat jeho aktuální verzi a minimální verzi, kterou od druhé strany přijme, a také to, zda druhá strana musí mít mód vůbec. Když kontrola selže, přidá do hlášky o odpojení řádky, které říkají, který mód selhal a s jakými verzemi.
Protože každý mód nese vlastní kopii, kontroly ServerSync selhávají po jednom módu. Opravíš jeden, znovu se připojíš a může ti oznámit další. Vyřeš je všechny najednou tím, že porovnáš celé seznamy, jak je popsáno níže, místo abys hrál na krtka.
Vyhození bez užitečné hlášky
Podívej se do logů. Strana hráče zapisuje výstup BepInEx do BepInEx/LogOutput.log ve složce jeho profilu módů a vlastní log Unity sem:
%USERPROFILE%\AppData\LocalLow\IronGate\Valheim\Player.logStrana serveru zapisuje BepInEx/LogOutput.log v kořeni serveru a konzole ukazuje stejný výstup živě. V obou hledej okamžik připojení a slova version, incompatible nebo jméno hráče. Logy, které stojí za uložení vysvětluje, proč stáhnout log serveru dřív, než ho restart přepíše.
Přesné porovnání obou sad#
„Máme stejné módy“ je tvrzení, které nikdo nedokáže ověřit pohledem na obrazovku správce módů. Porovnej místo toho skutečně načtené verze. BepInEx při startu vypíše jeden řádek na plugin s verzí, kterou skutečně načetl:
# On the server, from the server root$ grep -o 'Loading \[[^]]*\]' BepInEx/LogOutput.log | sort > server-mods.txtNa windowsovém klientovi po jednom módovaném startu spusť totéž v PowerShellu ze složky profilu:
PS> Select-String -Path BepInEx\LogOutput.log -Pattern 'Loading \[[^\]]*\]' | ForEach-Object { $_.Matches.Value } | Sort-Object > client-mods.txtDej oba soubory vedle sebe, nebo je porovnej příkazem diff:
$ diff server-mods.txt client-mods.txt< Loading [EpicLoot 0.x.y]> Loading [EpicLoot 0.x.z]Každý řádek v diffu je problém, i když ne každý problém vyhazuje. Módy jen pro klienta se objeví na straně klienta a to je v pořádku. Módy jen pro server se objeví na straně serveru a to je také v pořádku. Všechno ostatní by mělo být identické.
Log říká, co se načetlo, a na tom záleží; mód, který leží v plugins, ale nenačetl se, tam není. Pokud chceš vědět, co je nainstalováno, a ne co se načetlo, najdeš u módů instalovaných přes správce módů ve složce manifest.json s polem version_number:
$ grep -H '"version_number"' BepInEx/plugins/*/manifest.jsonPozor: verze pluginu, kterou mód hlásí při načtení, a verze jeho balíčku na Thunderstore jsou obvykle stejné, ale ne vždy. Když se liší, kontroly verzí vidí řádek z načtení.
Časté příčiny, v pořadí, v jakém nastávají#
Většina vyhození má jednu z několika příčin:
- Někdo stiskl „Update all“. Jeho správce módů aktualizoval všechny módy na nejnovější vydání. Teď je před serverem. Je to s velkým odstupem nejčastější příčina a důvod, proč mají být skupinové profily zafixované - jak na to, ukazuje r2modman pro Valheim party.
- Server se aktualizoval a profil party ne. Admin aktualizoval módy na serveru a zapomněl sdílet nový profil, takže všichni jsou teď pozadu.
- Rozjela se závislost. Obsahové módy sedí, ale Jotunn, nebo knihovna, na které jeden mód závisí, ne. Závislosti jsou součástí seznamu.
- Špatný profil. Hráč má dva profily a spustil starý, nebo klikl na Play ve Steamu a spustil vanillu. Vanilla proti serveru, který vyžaduje módy, dostane okno Jotunn s každým módem označeným jako chybějící.
- Duplicitní mód. Dvě kopie stejného pluginu v
plugins, často starý volný.dlla novější ve vlastní složce. BepInEx jeden načte a druhý přeskočí, ne nutně ten, který jsi čekal. - Rozdíl jen v konfiguraci. Vzácné, ale některé módy zahrnují do kontroly synchronizace i hodnotu z konfigurace. Zkopírování konfiguračních souborů daného módu ze serverového
BepInEx/configto vyřeší.
Sladění sad klienta a serveru#
Jako referenci vyber server. K němu se připojují všichni, mění se nejméně často a jeho sada je ta, která už byla otestována se světem.
- Získej seznam ze serveru. Použij výpis z logu výše a zapiš si ho někam, kde ho parta přečte.
- Vytvoř jeden profil, který mu odpovídá. Jeden člověk postaví nebo aktualizuje profil ve správci módů přesně na tyto verze, včetně Jotunn, HookGenPatcher a BepInExPack Valheim. V r2modmanu ti dialog stahování u módu umožní vybrat starší verzi.
- Exportuj profil jako soubor a sdílej ho. Všichni ho importují jako nový profil, místo aby opravovali ten starý.
- Zkopíruj konfigurace serveru do profilu u synchronizovaných módů, pokud nějaký mód zahrnuje konfiguraci do kontroly, nebo tento krok vynech, pokud žádný ne.
- Než to oznámíš, otestuj s jedním hráčem. Pokud se připojí čistě, profil je správný.
Pokud je špatně server - například běží na starší verzi módu se známou chybou a ty chceš všechny na novější - aktualizuj nejdřív server, potvrď, že se se světem čistě spustí, a pak projdi stejné kroky s novým seznamem. Nikdy neaktualizuj nejdřív klienty a potom server; po dobu mezi tím nemůže nikdo hrát.
Příklad z praxe#
Parta šesti lidí provozuje server s dvanácti módy. V úterý večer se dva hráči připojí a čtyři jsou při připojení vyhozeni. Takhle se to vyřeší za zhruba deset minut místo celého večera.
První vyhozený hráč pošle screenshot. Ukazuje vanilla hlášku „Incompatible version“ a pod ní nic. To ukazuje na hru, ne na módy: jeho Steam ten den odpoledne aktualizoval Valheim. Dva hráči, kteří se ještě mohou připojit, od té doby Steam nerestartovali. Server je záměrně držen na předchozím patchi, protože tři z módů ještě nejsou aktualizované.
Admin má dvě možnosti. Buď počkat na módy a aktualizovat všechno společně, nebo nechat vyhozené hráče vrátit si vlastní hru zpátky. Steam většině hráčů nenabízí jednoduchý rollback, takže realistická je varianta čekat. Admin napíše do chatu party, že server zůstane na starém patchi, dokud nebudou módy připravené, a že dva hráči, kteří jsou připojení, dnes večer nemají restartovat Steam.
Ve čtvrtek jsou módy aktualizované. Admin zálohuje svět a BepInEx, aktualizuje hru i módy na serveru, spustí ho, v logu zkontroluje výjimky a každý řádek Loading [...] a jednou se připojí, aby ověřil, že truhla s módovanými předměty je pořád celá. Pak exportuje nový soubor profilu s novým názvem a zveřejní ho. Čtvrtého hráče to pořád vyhazuje: okno Jotunn ukazuje jeden mód ve starší verzi. Nový profil naimportoval, ale spustil starý. Přepnutí profilu to opraví.
Nic z té sekvence nevyžadovalo hádání. Každý krok přečetl hlášku nebo řádek logu a podle něj jednal.
Jak tomu předejít#
Vyhazování se vrací pokaždé, když se seznam módů pohne, pokud parta nemá kolem aktualizací zvyk. Co funguje:
- Jeden majitel seznamu módů. Jeden člověk rozhoduje, co je nainstalováno a v jaké verzi. Všichni ostatní importují.
- Žádné aktualizace na místě u klientů. Pravidlo zní „importuj nový profil“, nikdy „aktualizuj si módy“.
- Zafixuj verzi hry na serveru, dokud nejsou módy připravené. Patch Valheimu rozbije většinu módů BepInEx a první vyhazování v den patche je verze hry klienta novější než serveru. Záměrné držení serveru zpátky popisuje Fixace verzí herního serveru a rollbacky.
- Uchovej poslední funkční sadu. Zálohuj
BepInExpřed každou změnou. Na RE:NODE jsou backup sloty součástí každého tarifu Valheim a zálohu lze zamknout proti rotaci, takže poslední ověřenou sadu módů nevytlačí noční zálohy, zatímco opravuješ novou. - Zapiš si verze. Připnutá zpráva se souborem profilu, datem a verzí Jotunn ušetří dalšímu člověku diff.
Obecné návyky pro módovaný server pro kamarády jsou v článku provoz módovaného serveru pro kamarády.
FAQ#
Proč mě to vyhazuje, když mám úplně stejné módy jako kamarád?
Protože „stejné módy“ obvykle znamená stejné názvy, ne stejné verze nebo závislosti. Porovnej řádky Loading [...] z obou logů. Stačí jedna odlišná verze Jotunn nebo knihovny.
Mohu se připojit na módovaný server s méně módy, než má server?
Jen pokud chybějící módy jsou čistě serverové nebo kontrolu nevynucují. Každý mód, který deklaruje, že ho musí mít všichni, tě odmítne, a obsahový mód, který nemáš, ti v nejlepším případě zabrání vidět věci, které vidí ostatní hráči.
Dá se kontrola verzí na serveru vypnout?
Obecný přepínač neexistuje a nemáš ho hledat. Každý mód deklaruje vlastní kontrolu, protože neshodná verze rozbíjí předměty, recepty nebo objekty světa způsobem, který může svět poškodit. Sjednoť raději verze.
Hláška říká Incompatible version, ale všichni jsme aktualizovali. Co teď?
Zkontroluj, zda se aktualizoval i server. Pokud ano, podívej se, zda text pod hláškou pojmenovává mód - ServerSync tam přidává své řádky. Pokud nic pojmenováno není, porovnej verze hry v hlavním menu každého klienta s verzí ve startovním logu serveru.
Musí se shodovat i konfigurační soubory?
Pro samotnou kontrolu obvykle ne. Módy, které synchronizují konfiguraci, posílají hodnoty serveru při připojení, takže soubory klientů nehrají roli. Několik módů zahrnuje konfiguraci do toho, co porovnává, a zkopírování souboru serveru pro daný mód to vyřeší.


