Jeśli twój serwer Valheim ma włączony crossplay, ale kod dołączenia nigdy nie działa, otwórz zakładkę Konsola i zobacz, co serwer wypisał podczas uruchamiania. Start kończący się wyjątkiem NullReferenceException z ZPlayFabMatchmaking.OnCheckJoinCodeSuccess to dokładnie ten przypadek, który rozwiązuje ten poradnik, a lekarstwem jest zostawienie serwera wyłączonego na jakieś 15 minut.
Sprawdź najpierw te rzeczy
Większość zgłoszeń okazuje się jedną z poniższych, a każda ma swoją własną stronę:
- Serwer wciąż się uruchamia. Kod liczy się dopiero po zakończeniu startu. Wczesna linia
that has join code ,bez niczego po przecinku należy do normalnego startu i nie jest błędem. - Ktoś wpisuje stary kod. Bierz aktualny ze strony Przegląd za każdym razem, gdy go komuś podajesz: jak dołączyć do serwera Valheim.
- Serwer i gracze mają różne wersje gry. Zrestartuj go, żeby pobrał bieżącą: jak zaktualizować serwer Valheim.
- Ten jeden gracz ma wyłączony crossplay we własnych ustawieniach gry. Nic po twojej stronie nie pomoże, dopóki go nie włączy.
- PlayFab ma gorszy dzień. Linie
PlayFab create lobby failedoznaczają, że usługa matchmakingu odrzuca wszystkich, nie tylko ciebie. Nie ma tu czego zmieniać, trzeba przeczekać.
Inny objaw? Najczęstsze problemy z serwerem Valheim obejmują resztę, a Valheim failed to connect dotyczy komunikatu po stronie gracza. Jeśli kod działa wszystkim poza jedną osobą, rozwiązaniem jest zwykle usunięcie konta PlayFab tego gracza.
Jak wygląda udany start
Serwer, który zarejestrował się poprawnie, przechodzi w konsoli przez trzy etapy, a ostatni jest tym decydującym:
Session "YourServer" registered with join code 514826
Created new join code 893194 for session "YourServer"
Retry join-code check 99
Session "YourServer" with join code 893194 and IP 203.0.113.10:25690 is active with 0 player(s)

Środkowy etap to serwer sprawdzający własny kod, żeby potwierdzić, że da się go rozwiązać, a liczba obok Retry join-code check odlicza w dół. Jedna albo dwie takie linie to norma. W tym przykładzie serwer dodatkowo wymienił kod po drodze (linia Created new join code). Dzieje się tak tylko przy niektórych startach, często pierwszy kod po prostu zostaje, i właśnie dlatego kod bierzesz ze strony Przegląd, a nie z logu.
Zanim pojawi się is active, żaden kod nie zadziała, a karta na stronie Przegląd nie ma czego pokazać.

Start, który zatrzymuje się na wyjątku
W wersji zepsutej przychodzi pierwsza linia, a reszta już nigdy. Zamiast tego konsola przechodzi od razu do tego:
Session "YourServer" registered with join code 778035
NullReferenceException: Object reference not set to an instance of an object
at ZPlayFabMatchmaking.OnCheckJoinCodeSuccess (PlayFab.MultiplayerModels.FindLobbiesResult result)
Sam serwer działa dalej. Świat się wczytuje, a panel pokazuje Online, i to właśnie najbardziej myli. Tym, co nigdy nie staje się aktywne, jest kod dołączenia.
W przypadkach, które widzieliśmy, po stronie PlayFab wciąż leży starsza sesja twojego serwera, zostawiona wtedy, gdy serwer został ubity albo się wysypał zamiast zamknąć się normalnie, i zapytanie potwierdzające potyka się o nią.
Dlaczego restartowanie tylko pogarsza sprawę
Przeczytaj to, zanim znów naciśniesz Restart.
Wyjątek leci, zanim serwer zapisze, które lobby jest jego własne, więc przy zamykaniu nie ma czego oddać. Linia z zamknięcia to zdradza:
leave lobby. LobbyId:
Identyfikator jest pusty. Dopiero co utworzona sesja nigdy nie zostaje zwolniona, dokłada się do pozostałych, a następny start ma o jedną rzecz więcej, o którą może się potknąć. Każdy restart w tym stanie powiększa stos, zamiast go sprzątać.
Rozwiązanie: zatrzymaj, odczekaj, uruchom raz
- Zatrzymaj serwer z panelu i pozwól mu przejść w pełni w tryb offline. Zwykłe zatrzymanie zapisuje świat, więc nic z twojej rozgrywki nie jest tu zagrożone.
- Zostaw go wyłączonego na jakieś 15 minut. Porzucone sesje same wygasają po stronie PlayFab i to czekanie jest całym rozwiązaniem. Nie naciskaj Uruchom, żeby sprawdzić.
- Uruchom go raz, potem otwórz zakładkę Konsola i doczytaj do linii
is active. - Weź kod ze strony Przegląd i rozdaj go.
Jeśli is active jest na miejscu, gotowe. Jeśli wyjątek wrócił, zatrzymaj serwer ponownie i daj mu więcej czasu przed kolejną próbą, bo start w trakcie czekania zeruje licznik.
Na serwerze nie ma pliku do skasowania
Mówimy to wprost, bo to tutaj ludzie kasują rzeczy, których kasować nie musieli. Nic z tego nie siedzi w pliku na twoim serwerze, więc usunięcie configu, reinstalacja czy zresetowanie świata niczego nie zmienią, a reset świata kosztuje cię realne postępy i nic nie daje.
Jeśli mimo to wróci
Jeśli wszyscy gracze są na PC przez Steam, kod nie jest ci w ogóle potrzebny. Wyłącz crossplay i rozdaj zamiast niego adres serwera: jak wyłączyć crossplay na serwerze Valheim. Gracze na PlayStation, Xbox i Switch nie mają innej drogi do środka, więc to opcja wyłącznie dla ekipy w całości na PC.
W przeciwnym razie napisz do wsparcia, podając nazwę serwera i linie z konsoli wokół wyjątku. Możemy przenieść twój serwer na świeży adres, co daje mu też nową tożsamość w PlayFab.
Najczęstsze pytania
Czy stracę swój świat? Nie. Serwer zapisuje przy zatrzymaniu, a czekanie to tylko serwer stojący wyłączony.
Czy mogę skasować jakiś plik, żeby to naprawić? Nie. Nic na serwerze tego nie trzyma, więc reinstalacja ani wipe nic nie dadzą.
Dlaczego restart nie pomaga? Każdy nieudany start zostawia swoją sesję, zamiast ją zwolnić, więc restart dokłada do problemu, zamiast go sprzątać.
Kodu dołączenia w ogóle nie ma w panelu. Strona Przegląd czyta go z linii statusu, którą serwer wypisuje po zakończonej rejestracji, więc start, który nigdy tam nie dociera, nie ma czego pokazać.
Czy możecie to wyczyścić po swojej stronie? Nie. Te sesje należą do usługi matchmakingu samej gry, więc usuwa je tylko czas.
Myślisz o przeniesieniu serwera? Nasz hosting serwerów Valheim zbiera konsolę, przełącznik crossplay i kod dołączenia na jednym ekranie, a panel sterowania pokazuje, co serwer naprawdę wypisał, zamiast kazać ci zgadywać.
