Jotunn není mód, který by sis instaloval kvůli němu samotnému. Je to knihovna - „the Valheim Library“ - na které jsou postavené jiné módy, a na většině módovaných serverů skončí proto, že ji nějaký obsahový mód uvedl jako závislost. Dělá tři věci, kterých si majitel serveru všimne: registruje nové předměty, stavební prvky a tvory, které tyto módy přidávají; při připojení porovná verze módů mezi serverem a klientem a pokud nesedí, odpojí hráče; a posílá konfigurační hodnoty jen pro adminy ze serveru všem klientům. Když je hráč vyhozen z módovaného serveru s oknem vypisujícím módy a verze, Jotunn je velmi často ten, kdo vyhazuje - a dělá to schválně. Tento článek vysvětluje, co se děje, jak to číst a jak zabránit tomu, aby se neshodou stal sám Jotunn.
Jak BepInEx vůbec načítá módy, popisuje Módy na Valheim serveru s BepInEx. Tento článek na něj navazuje.
Co Jotunn pro módy dělá#
Valheim nemá oficiální modovací API. Bez knihovny by si každý obsahový mód musel sám zjišťovat, jak ve správnou chvíli vložit nový předmět do databáze objektů hry, jak zařídit, aby se recept objevil u správné výrobní stanice, jak přidat překlady a jak registrovat síťové zprávy. Jotunn tuto práci udělá jednou a módy ho volají.
Je rozdělený na manažery, každý zodpovídá za jeden druh věcí:
| Manažer | Co zajišťuje |
|---|---|
ItemManager | Nové předměty, recepty, status efekty, přeměny předmětů |
PieceManager | Stavební prvky a kategorie kladiva, ve kterých jsou |
PrefabManager | Klonování a registrace prefabů, základ většiny obsahu |
CreatureManager | Noví tvorové a jejich kořist |
ZoneManager | Vlastní lokace a vegetace při generování světa |
LocalizationManager | Překladové řetězce pro každý jazyk |
SynchronizationManager | Synchronizace konfigurace a kontroly adminů mezi serverem a klienty |
NetworkManager | Vlastní RPC, síťové zprávy módu |
CommandManager | Konzolové příkazy, které mód přidává |
Většina z toho je pro majitele serveru neviditelná, až na jednu užitečnou výjimku: Jotunn zavedl „mock“ reference, kde mód odkazuje na vanilla asset zástupným jménem s předponou JVLmock_, které se za běhu vymění za skutečný objekt. Pokud se po aktualizaci hry nepodaří assety módu vyřešit, můžeš tuto předponu vidět v chybových řádcích logu a ukazuje na mód, který potřebuje aktualizaci, ne na tvou instalaci.
Jotunn je na Thunderstore publikovaný jako ValheimModding-Jotunn, s dokumentací na valheim-modding.github.io/Jotunn. Závisí na BepInExPack Valheim a na HookGenPatcher (ValheimModding-HookGenPatcher), který při prvním startu generuje pro hru assemblies MMHOOK. Správce módů nainstaluje obojí automaticky. Ručně patří .dll Jotunn do BepInEx/plugins a HookGenPatcher do BepInEx/patchers - když dáš HookGenPatcher do špatné složky, vzniknou chyby, které vypadají, jako by byl rozbitý sám Jotunn.
Kde musí být Jotunn nainstalovaný#
Jotunn musí být na každém počítači, který spouští mód, který na něm závisí. V praxi to znamená server a všichni klienti, protože obsahové módy - hlavní uživatelé Jotunn - samy potřebuje obě strany.
Čistě serverový mód, který Jotunn používá, ho potřebuje jen na serveru. Mód jen pro klienta, který ho používá, například některé módy rozhraní, ho potřebuje jen na klientech. Závislost sleduje mód. Běžné překvapení je parta, která si myslí, že provozuje „jen serverové módy“, dokud někdo nepřidá jeden obsahový mód a s ním nepřijde Jotunn, a od té chvíle se na server nedá připojit bez stejného módu na každém klientovi.
Proto také módy s Jotunn vyřazují hráče na Xboxu a v Game Passu: ti nemohou nic instalovat a kontrola Jotunn je odmítne, pokud mód deklaruje, že ho musí mít všichni. Co smíšená parta může a nemůže provozovat, popisuje Valheim crossplay a hráči na Xboxu.
Kontrola verzí a proč vyhazuje hráče#
Když se klient připojí k serveru, Jotunn na každé straně sestaví seznam načtených módů, které deklarovaly úroveň síťové kompatibility, s jejich verzemi, a oba seznamy se porovnají. Pokud se rozcházejí způsobem, který mód označil za důležitý, klient je odpojen a zobrazí se mu okno s výpisem problémů.
Každý mód deklaruje svůj požadavek v kódu atributem. Důležité jsou dvě části: kdo mód musí mít a jak přísně se musí shodovat verze.
| Úroveň kompatibility | Význam |
|---|---|
NotEnforced | Vůbec se nekontroluje |
VersionCheckOnly | Porovnává se, jen když ho mají obě strany |
EveryoneMustHaveMod | Server i klient ho musí mít |
ClientMustHaveMod | Klienti ho musí mít; server ne |
ServerMustHaveMod | Server ho musí mít; klienti ne |
| Přísnost verze | Neshoda je |
|---|---|
None | Nikdy problém |
Major | Jiné první číslo (1.x vs 2.x) |
Minor | Jiné první nebo druhé číslo (1.4 vs 1.5) |
Patch | Jakýkoli rozdíl (1.4.2 vs 1.4.3) |
Obsahový mód, který deklaruje EveryoneMustHaveMod s přísností Minor, tedy pustí hráče s 1.4.2 na server s 1.4.3, ale odmítne 1.5.0. Mód s přísností Patch odmítne jakýkoli rozdíl. Mód, který nedeklaruje nic, se do porovnání Jotunn vůbec nezapojuje - což neznamená, že neshoda je bezpečná, jen že ti to Jotunn neřekne.
Okno, které hráč vidí, vypisuje každý problémový mód a co bylo špatně: chybí na klientovi, chybí na serveru, nebo je na obou stranách v nekompatibilních verzích, přičemž jsou zobrazeny obě verze. Toto okno je nejužitečnější věc v celém procesu, protože pojmenuje mód. Požádej hráče o screenshot, ne o popis.
Oprava je vždy stejná: sjednoť seznamy. Nesnaž se kontrolu zmírnit. Autoři přísnost deklarovali, protože neshodná verze rozbije předměty, recepty nebo svět mnohem hůř než odmítnuté připojení. Postup krok za krokem, jak přečíst hlášku a sladit sady, je v článku vyhození kvůli neshodě verzí módů.
Neshodou je sám Jotunn#
Nepříjemný případ nastává, když všechny obsahové módy sedí, ale Jotunn ne. Hráč, který ve správci módů aktualizoval všechno, má teď novější Jotunn než server. Zda ho kvůli tomu samotnému vyhodí, závisí na dotčených verzích Jotunn a mezi vydáními se to lišilo - ale i když ho nevyhodí, obsahový mód postavený na chování novějšího Jotunn se může proti starší verzi na druhé straně chovat špatně.
Bezpečné pravidlo je jednoduché: ber Jotunn jako součást seznamu módů a drž ho ve stejné verzi na serveru i na klientech. Když parta sdílí profil přes správce módů, je Jotunn v profilu jako každý jiný balíček a r2modman pro Valheim party ukazuje, jak profil držet zafixovaný.
Abys viděl, co každá strana doopravdy provozuje, přečti si log BepInEx. Každý plugin je při startu vypsán se svou verzí:
# On the server, from the server root$ grep -o 'Loading \[[^]]*\]' BepInEx/LogOutput.logLoading [Jotunn 2.x.x]Loading [SomeContentMod 1.4.3]Na klientovi je stejný soubor ve složce BepInEx profilu po jednom módovaném startu. Porovnej oba seznamy řádek po řádku.
Synchronizace konfigurace a nastavení jen pro adminy#
Jotunn dává módům způsob, jak některé konfigurační hodnoty udělat závazné ze serveru. Mód označí nastavení jako určené jen pro adminy a SynchronizationManager v Jotunn pak udělá tři věci:
- Když se klient připojí, pošle mu hodnoty těchto nastavení ze serveru, které klient pro danou relaci použije místo svých.
- Po dobu připojení je klient, který není admin, nemůže měnit; hodnoty jsou v herním editoru konfigurace zobrazeny zamčené.
- Klient, který je admin, je může měnit ve hře a změna se pošle na server, tam se uloží a rozešle všem ostatním připojeným hráčům.
Status admina pochází ze serverového souboru adminlist.txt, stejného, který vanilla používá pro kick a ban - formáty ID vysvětluje článek o třech souborech se seznamy. Pokud admin nemůže ve hře změnit synchronizované nastavení, první, co zkontroluj, je, zda je jeho ID v tomto souboru ve tvaru, který server očekává.
Herní editor, který většina lidí používá, je BepInEx Configuration Manager, otevírá se ve výchozím nastavení klávesou F1. Je to mód jen pro klienta, není součástí Jotunn, ale synchronizace Jotunn se na něj napojuje. Bez něj mohou admini stále upravit soubor serveru v BepInEx/config a restartovat.
Dva důsledky, které stojí za to znát:
- Úprava synchronizované hodnoty v konfiguračním souboru klienta na serveru nic nedělá. Při připojení se přepíše. Hráči občas hlásí, že mód jejich změnu „ignoruje“; tohle je důvod.
- Záznamem je konfigurační soubor serveru. Zálohuj ho spolu se světem a když server stěhuješ, vezmi s sebou
BepInEx/config, jinak se všechna synchronizovaná nastavení vrátí na výchozí hodnoty módu.
Ne každý mód používá synchronizaci Jotunn. Některé nesou vlastní synchronizaci, nejčastěji knihovnu ServerSync, která se chová podobně, ale odděleně, obvykle s nastavením Lock Configuration v konfiguraci samotného módu. Na stránce módu nebo v komentářích konfigurace je napsáno, kterou používá.
Jak držet Jotunn aktuální#
Jotunn udržuje modovací komunita Valheimu a bývá mezi prvními balíčky aktualizovanými po patchi hry, protože na něm závisí tolik módů. Pořadí v den patche:
- Neaktualizuj server hned, jak patch vyjde. Zastav ho, zálohuj svět i celou složku
BepInEx. - Počkej na BepInExPack Valheim (pokud patch změnil Unity), pak na HookGenPatcher a Jotunn a pak na obsahové módy. Obsahové módy často mají ve svých závislostech zafixovanou minimální verzi Jotunn, takže je stejně nejde aktualizovat jako první.
- Aktualizuj server a jeho módy společně, spusť ho, v logu hledej výjimky a dokončení generování hooků.
- Nový profil módů sdílej s partou až poté, co je potvrzeno, že server funguje.
Jotunn se snaží zůstat zpětně kompatibilní v rámci hlavní verze, takže mód napsaný pro starší Jotunn obvykle funguje i s novějším. Změna hlavní verze to může porušit a autoři to uvádějí v changelozích. Co dělat, když aktualizace módu něco rozbije je obecný postup, když ti výše uvedené pořadí nepomůže.
Na RE:NODE jsou backup sloty součástí každého tarifu Valheim, takže si před jakýmkoli zásahem udělej zálohu na požádání - s funkčním Jotunn a sadou módů v ní - a obnova je při nezdařené aktualizaci jedno tlačítko. Zálohu lze také zamknout, aby ji plánované zálohy nevytlačily, dokud ještě testuješ.
Řešení problémů s Jotunn#
`Could not load [SomeMod] because it requires [com.jotunn.jotunn]`. Jotunn chybí nebo se nenačetl. Nainstaluj ho a zkontroluj, že HookGenPatcher je v patchers, ne v plugins.
Jotunn se načte, ale po patchi hry při startu hází chyby. Jotunn zatím nebyl aktualizován pro tuto verzi hry, nebo jsou zastaralé assemblies vygenerované HookGenPatcherem. Aktualizuj obojí; pokud to ještě nejde, běž bez závislých módů, dokud to nepůjde.
Hráč dostane při připojení okno s výpisem módů. To je kontrola verzí. Přečti si jména a verze v okně a uprav jeho profil tak, aby odpovídal serveru.
Změny admina u synchronizovaného nastavení se neuchytí. Server hráče nepoznává jako admina, nebo to není nastavení, které mód označuje jako jen pro adminy. Nejdřív zkontroluj adminlist.txt.
Start trvá několik minut. První start po instalaci nebo aktualizaci HookGenPatcher, nebo po patchi hry, znovu generuje hook assemblies. Další starty jsou rychlejší. Pokud je pomalý každý start, spočítej módy a nevinit Jotunn.
FAQ#
Musí mít hráči Jotunn nainstalovaný?
Pokud na něm závisí jakýkoli mód, který potřebují, ano. Správce módů ho nainstaluje automaticky jako závislost. Zvlášť ho hráči potřebují jen tehdy, když mód na serveru deklaruje, že ho musí mít všichni, a mód Jotunn používá.
Dá se kontrola verzí Jotunn vypnout?
Ne z konfiguračního souboru a ani bys to nechtěl. Každý mód deklaruje svůj požadavek v kódu. Kontrola existuje proto, aby se předměty, recepty a objekty světa na různých počítačích nerozcházely.
Je Jotunn totéž co JotunnLib?
JotunnLib byl dřívější název. Současné balíčky vychází jako Jotunn od ValheimModding a staré módy, které zmiňují JotunnLib, obvykle myslí stejnou knihovnu.
Stojí Jotunn výkon serveru?
Po spuštění velmi málo. Hlavní cena je doba startu kvůli generování v HookGenPatcher a registraci obsahu, což s rostoucím seznamem módů znamená víc.
Proč Jotunn potřebuje HookGenPatcher?
Jotunn a mnoho módů na něm postavených používá hook assemblies, vygenerované z kódu hry, aby se připojily k metodám hry. HookGenPatcher tyto assemblies při startu generuje a při aktualizaci hry je generuje znovu.


