Si votre serveur Valheim a le crossplay activé mais que le code de connexion ne fonctionne jamais, ouvrez l'onglet Console et regardez ce que le serveur a écrit pendant son démarrage. Un démarrage qui se termine par une NullReferenceException venant de ZPlayFabMatchmaking.OnCheckJoinCodeSuccess est exactement le cas que ce guide règle, et la réponse consiste à laisser le serveur éteint pendant une quinzaine de minutes.
À vérifier d'abord
La plupart des signalements se ramènent à l'un de ces points, et chacun a sa propre page :
- Le serveur est encore en train de démarrer. Le code ne compte qu'une fois le démarrage terminé. Une ligne précoce indiquant
that has join code ,sans rien après la virgule fait partie d'un démarrage normal, ce n'est pas une erreur. - Quelqu'un saisit un ancien code. Prenez le code du moment sur la page Aperçu chaque fois que vous le transmettez : comment rejoindre un serveur Valheim.
- Le serveur et les joueurs ne sont pas sur la même version. Redémarrez-le pour qu'il récupère la version actuelle : mettre à jour un serveur Valheim.
- Ce joueur-là a désactivé le crossplay dans ses propres réglages de jeu. Rien de votre côté n'y changera quoi que ce soit tant qu'il ne le réactive pas.
- PlayFab a une mauvaise journée. Des lignes
PlayFab create lobby failedsignifient que le service de matchmaking refuse tout le monde, pas seulement vous. Il n'y a rien à modifier, il faut attendre.
Un autre symptôme ? Problèmes fréquents d'un serveur Valheim couvre le reste, et Valheim failed to connect traite du message côté joueur, et si le code marche pour tout le monde sauf une personne, la réponse est en général de supprimer le compte PlayFab de ce joueur.
À quoi ressemble un démarrage réussi
Un serveur correctement enregistré passe par trois étapes dans la console, et c'est la dernière qui compte :
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)

L'étape du milieu, c'est le serveur qui recherche son propre code pour vérifier qu'il se résout, et le nombre à côté de Retry join-code check décompte. Une ou deux lignes de ce type, c'est ordinaire. Dans cet exemple, le serveur a aussi changé de code en cours de route (la ligne Created new join code). Cela n'arrive qu'à certains démarrages, et souvent le premier code est simplement conservé. C'est précisément pour ça que vous prenez le code sur la page Aperçu plutôt que dans le journal.
Tant que is active n'apparaît pas, aucun code n'est utilisable et la carte de la page Aperçu n'a rien à afficher.

Le démarrage qui s'arrête sur l'exception
Dans le cas cassé, la première ligne arrive et la suite jamais. La console enchaîne directement sur ceci :
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)
Le serveur, lui, continue de tourner. Le monde se charge et le panneau affiche Online, et c'est bien ce qui déroute. C'est le code de connexion qui ne devient jamais actif.
Dans les cas que nous avons vus, une ancienne session appartenant à votre serveur traîne encore du côté de PlayFab, laissée là quand le serveur a été tué ou a planté au lieu de s'arrêter proprement, et la vérification bute dessus.
Pourquoi redémarrer aggrave les choses
Lisez ce passage avant d'appuyer encore sur Redémarrer.
L'exception survient avant que le serveur ait retenu quel lobby est le sien, il n'a donc rien à rendre au moment de s'éteindre. La ligne d'arrêt le trahit :
leave lobby. LobbyId:
L'identifiant est vide. La session tout juste créée n'est jamais libérée, elle vient s'ajouter aux autres, et le démarrage suivant a une chose de plus sur laquelle buter. Chaque redémarrage dans cet état alimente la pile au lieu de la vider.
La solution : arrêter, attendre, démarrer une fois
- Arrêtez le serveur depuis le panneau et laissez-le passer complètement hors ligne. Un arrêt normal sauvegarde le monde, rien de votre partie n'est en jeu ici.
- Laissez-le éteint une quinzaine de minutes. Les sessions abandonnées expirent d'elles-mêmes chez PlayFab, et cette attente est toute la solution. N'appuyez pas sur Démarrer pour aller voir.
- Démarrez-le une fois, puis ouvrez l'onglet Console et descendez jusqu'à la ligne
is active. - Prenez le code sur la page Aperçu et transmettez-le.
Si is active est là, c'est réglé. Si l'exception est revenue, arrêtez de nouveau et laissez passer plus de temps avant l'essai suivant, car un démarrage pendant l'attente remet le compteur à zéro.
Il n'y a aucun fichier à supprimer sur le serveur
Nous le disons franchement, parce que c'est là que les gens effacent des choses qu'ils n'avaient pas besoin d'effacer. Rien de tout cela ne vit dans un fichier sur votre serveur : supprimer une config, réinstaller ou réinitialiser le monde n'y change rien, et réinitialiser le monde vous coûte de vrais progrès pour zéro bénéfice.
Si le problème revient quand même
Si tous vos joueurs sont sur PC via Steam, le code ne vous sert à rien. Désactivez le crossplay et distribuez l'adresse du serveur à la place : désactiver le crossplay sur un serveur Valheim. Les joueurs sur PlayStation, Xbox et Switch n'ont pas d'autre porte d'entrée, cela ne convient donc qu'à un groupe entièrement sur PC.
Sinon, contactez le support avec le nom de votre serveur et les lignes de console autour de l'exception. Nous pouvons déplacer votre serveur vers une nouvelle adresse, ce qui lui donne aussi une nouvelle identité chez PlayFab.
Questions fréquentes
Vais-je perdre mon monde ? Non. Le serveur sauvegarde en s'arrêtant, et l'attente n'est rien d'autre que le serveur éteint.
Puis-je supprimer un fichier pour régler ça ? Non. Rien sur le serveur ne retient cet état, une réinstallation ou un wipe n'apporte donc rien.
Pourquoi un redémarrage ne suffit-il pas ? Chaque démarrage raté laisse sa session derrière lui au lieu de la libérer, redémarrer nourrit donc le problème au lieu de le résoudre.
Le code de connexion est totalement absent du panneau. La page Aperçu le lit sur la ligne d'état que le serveur écrit une fois l'enregistrement terminé, un démarrage qui n'y parvient jamais n'a donc aucun code à afficher.
Pouvez-vous nettoyer ça de votre côté ? Non. Ces sessions appartiennent au service de matchmaking du jeu, seul le temps les efface.
Vous envisagez de déménager votre serveur ? Notre hébergement de serveur Valheim réunit la console, l'interrupteur crossplay et le code de connexion sur un seul écran, et le panneau de contrôle vous montre ce que le serveur a réellement écrit plutôt que de vous laisser deviner.
