Comment tirer parti de l'autorité distribuée pour des jeux coopératifs multijoueurs

EMILY RAINE / UNITY TECHNOLOGIESContributor
Sep 29, 2025|11 Min
Vision nocturne dans Dagger Directive
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Lorsque Arcane Alpacas a publié la première démo de son captivant FPS Dagger Directive sur Steam plus tôt cette année, les retours étaient globalement excellents – mais la communauté a clairement fait savoir qu'elle voulait jouer à ce jeu ensemble. Sur la base de cette réponse, l'équipe a décidé d'ajouter une fonctionnalité multijoueur au jeu. Ils ont testé quelques solutions différentes avant de finalement décider d'utiliser la suite de solutions multijoueurs intégrées dans Unity 6. Nous nous sommes assis avec le programmeur et designer Daniel Fowler pour apprendre comment ils ont exploité le Netcode for GameObjects de Unity, Relay et d'autres services de mise en réseau pour connecter les joueurs, et comment Distributed Authority (DA) alimente toute l'opération avec un support serveur léger et évolutif.

Commençons par un peu sur la façon dont Arcane Alpacas a commencé et ce que vous vouliez créer.

Daniel Fowler, programmeur et designer : J'ai commencé l'entreprise il y a quelques années. Avant cela, nous – Wade Hribar, Cody Rowland et moi – avons travaillé chez Oculus sur Onward, un jeu FPS VR, et nous voulions nous éloigner du travail pour de grandes entreprises.

J'ai commencé ce projet moi-même et ensuite j'ai intégré les deux autres au fil du temps, au fur et à mesure de nos besoins. J'ai obtenu un contrat de publication avec MicroProse et ensuite j'ai publié une démo. La démo s'est très bien passée, et nous voulions ajouter le multijoueur car c'était notre plus grand point de retour de la communauté. Depuis lors, le jeu se porte bien. Nous avons lancé, et nous sommes sur le point de sortir un pack de contenu.

Il y a quelques semaines, nous avons publié une mise à jour réseau après avoir parlé à l'équipe de Unity – ils nous ont donné des retours, et nous en avons partagé aussi, et nous avons eu beaucoup de bonnes idées que nous avons examinées et mises en œuvre. Le multijoueur est beaucoup plus stable maintenant, et nous avons principalement eu des retours positifs de la communauté, bien qu'il y ait encore quelques problèmes à résoudre bien sûr.

C'est génial ! Quoi d'autre se passe avec ce projet ?

J'ai commencé ce projet il y a quatre ans et demi. À l'époque, nous portons Onward sur le Quest, donc nous prenions un jeu VR PC haut de gamme et essayions de le faire fonctionner sur un téléphone portable. En faisant cela, nous avons dû retirer un tas de choses – surtout l'herbe, et nous ne pouvions pas utiliser de shaders de calcul sur l'Oculus. Alors je voulais commencer un projet et voir comment je peux générer une énorme quantité d'herbe et le faire fonctionner assez efficacement. À la fin, j'ai construit un système d'herbe personnalisé qui utilise le Burst compiler pour générer des millions de polygones d'herbe, de petites plantes et de fleurs au fur et à mesure que le joueur se déplace sur la carte.

Les joueurs peuvent choisir n'importe quelle heure de la journée pour commencer leurs missions, et le temps progresse pendant qu'ils jouent – donc commencer une mission à 6 heures du matin et attendre une heure fera bouger la position du soleil de cette manière. Nous avons utilisé un éclairage entièrement en temps réel et nous avons construit notre propre shader de ciel. Le post-traitement est également affecté par cela, soutenu par des objets scriptables pour contenir toutes les valeurs et comment elles changent tout au long de la journée, et l'éclairage et l'heure de la journée affectent les comportements et capteurs de l'IA.

J'ai ajouté des éléments liés à l'heure de la journée parce que je voulais jouer avec l'éclairage en temps réel aussi, car nous construisions également un deuxième jeu. C'était mon truc amusant du week-end. Et puis après un certain temps, j'ai commencé à ajouter des personnages, et cela a commencé à ressembler à un vrai jeu. J'ai développé cela un peu plus et j'ai fait jouer certaines personnes au travail, et ils ont apprécié.

L'éclairage en temps réel et des millions de polygones d'herbe sont possibles parce que nous utilisons Universal Render Pipeline (URP) et Forward+ rendering, ainsi que le GPU Resident Drawer et le GPU occlusion culling. Nous avions utilisé le SRP batcher avant de passer à Unity 6 depuis Unity 2021.3. Le Resident Drawer et l'occlusion culling ont amélioré les performances d'environ 20 % par rapport au SRP Batcher. Les shaders et textures de complexité inférieure ont également aidé à améliorer les performances. Nous avons vérifié que tout cela fonctionnait en échantillonnant avec RenderDoc au fur et à mesure et en corrigeant les problèmes au fur et à mesure qu'ils se présentaient. En fin de compte, vous pouvez jouer sur le SteamDeck à 30-60 fps avec des paramètres graphiques moyens.

Je voulais vraiment construire un grand environnement ouvert qui permet aux joueurs de faire ce qu'ils veulent. C'est plus un bac à sable qu'autre chose comme Call of Duty, où vous descendez simplement le même couloir avec les mêmes ennemis qui apparaissent à leur position. Je voulais donner au joueur la liberté de choisir comment il aborde différents objectifs, et mélanger avec l'heure de la journée. Et puis avec le jeu coopératif, cela leur permet de se diviser en individus ou en équipes de deux ou de rester dans un grand groupe de quatre – cela a ajouté pas mal.

Nous allons développer le jeu – nous avons cinq autres missions à venir. Nous venons de terminer notre premier pack de contenu, ajoutant 12 nouvelles armes, 14 ou 16 options d'uniforme, et une tonne de nouveaux équipements.

J'ai vraiment apprécié les anciens Delta Force et Ghost Recon jeux, donc je voulais construire quelque chose de similaire à ceux-ci. J'ai dû garder le style artistique simple parce que je suis ingénieur, pas vraiment artiste. Je me concentrais sur la création d'art que je pouvais faire - donc si je devais faire tout le jeu moi-même, je serais capable de le faire. C'est de là que vient le style du jeu. Mais je pense que cela a bien fonctionné, en mélangeant les effets d'éclairage en temps réel et le post-traitement avec des textures anciennes et des modèles low-poly. Cela ajoute en quelque sorte beaucoup de choses ensemble.

Je pense que Valheim m'a beaucoup inspiré quand il est sorti parce qu'avant cela, je n'avais pas vraiment tous les effets de post-traitement et d'éclairage, cela ressemblait beaucoup plus à un jeu des années 90. Puis j'ai vu ce qu'ils ont fait avec beaucoup des effets qu'ils avaient, et j'ai pensé que je pouvais faire ça aussi.

Quand es-tu passé à Unity 6 ?

Le projet a commencé dans Unity 2019, puis j'ai mis à niveau vers Unity 2021.3. Je suis resté là-dessus jusqu'à la fin de l'année dernière, quand j'ai mis à niveau vers Unity 6 juste pour tester le culling d'occlusion GPU. Et cela nous a donné une bonne augmentation de 15 à 20 % des performances.

Avant, j'utilisais le SRP Batcher avec URP et quelques autres choses, et j'ai pu désactiver tout ça et juste utiliser le culling d'occlusion GPU. Je n'utilise pas de LOD, mais il a le paramètre pour culler en fonction de la taille de l'écran, donc j'ai activé tout ça, et encore une fois, c'était une amélioration de 15 à 20 % des performances. Et nous avons maintenant le jeu fonctionnant sur le Steam deck. Je ne suis pas revenu en arrière depuis que j'ai vu les augmentations de performances.

Gameplay dans Dagger Directive

Parlons un peu plus du côté réseau - comment utilisez-vous Relay ?

C'est principalement pour les joueurs, afin qu'ils n'aient pas à configurer un tas de choses sur leur routeur. J'ai essayé le port forwarding quand j'ai pris quelques jours pour tester un tas de systèmes multijoueurs et voir ce qui fonctionnait bien. Nous l'avons configuré assez rapidement au départ, mais une fois que nous avons décidé d'utiliser Unity 6 multiplayer pour le réseau, je suis juste allé de l'avant et j'ai configuré Relay, et nous avons fait des tests de cette manière depuis lors.

Pour la performance, nous avons utilisé le simulateur de réseau, qui a bien fonctionné. Se connecter à un téléphone portable sur un point d'accès nous a beaucoup aidés à tester la performance.

Vous avez également utilisé l'Autorité Distribuée, n'est-ce pas ? Comment cela s'est-il passé ?

J'ai envisagé de faire du multijoueur pour ce jeu après avoir sorti la démo. Le principal retour était que les gens voulaient un mode coopératif – nous savions que ce serait important, mais nous pensions le garder pour le deuxième jeu.

Mais avec le volume de retours et après avoir parlé à notre éditeur, nous avons décidé de nous asseoir et de voir combien de temps cela prendrait. J'ai essayé Photon puis le système Fusion de Photon et ensuite j'ai regardé quelques autres bibliothèques. J'ai pensé à construire le mien, puis j'ai décidé d'essayer le Netcode for GameObjects. J'ai décidé d'essayer l'Autorité Distribuée parce que le jeu était pratiquement terminé – je ne voulais pas m'occuper des demandes et de l'approbation des changements de propriété des GameObjects.

Puisque c'est un jeu coopératif, le fait que les gens trichent n'est pas vraiment une préoccupation que nous avons – s'ils trichent avec leurs amis, c'est à eux de voir. Nous avons également des cheats dans le jeu, donc ils peuvent activer les munitions infinies et plus encore – donc s'ils dupliquent des objets, cela n'a pas vraiment d'importance.

C'est ce qui m'a aidé à décider d'opter pour l'AD. Nous avons pu configurer ces choses rapidement, donc les deux autres membres pouvaient travailler sur la finition du contenu pendant que je me concentrais sur tout le réseau. J'estimais que cela allait nous prendre 12 ou 13 semaines pour tout terminer, et cela a finalement pris environ 14 semaines.

Gameplay dans Dagger Directive

Vous utilisiez Relay, donc je suppose que parfois vous l'exécutez en mode connexion directe ?

Oui. J'ai également configuré la connexion directe afin que les joueurs puissent l'exécuter eux-mêmes et que leurs amis se connectent directement à eux. Ils doivent configurer le transfert de port sur leur routeur, mais j'ai des instructions sur la façon de le faire. Mais il n'y a pas de migration d'hôte, donc, si l'hôte se déconnecte, cela met fin au jeu pour tout le monde.

Cette fonctionnalité est plus utile si jamais nous fermons en tant que studio ou si Unity ferme les serveurs de relais ou quelque chose comme ça, les joueurs peuvent toujours au moins jouer à des jeux en connexion directe, espérons-le pendant un certain temps.

Cela a du sens. C'est très tourné vers l'avenir et aussi bon pour les joueurs, donc c'est génial à entendre.

Pratiquement tous les jeux sur lesquels j'ai travaillé au cours des 15 dernières années étaient multijoueurs, et cela a été un problème partout où j'ai été - quelque chose se ferme de manière inattendue et ensuite nous devons nous précipiter pour réparer quelque chose. Je voulais anticiper ces choses.

Vous avez mentionné la migration d'hôte et les transferts de propriété dans les Discussions. Que pensez-vous de la valeur que DA apporte à cela ? Est-ce un bon ajout à votre jeu et cela aide-t-il le développement ?

La migration d'hôte a été particulièrement presque transparente. Encore une fois, c'est l'une de ces choses qui a toujours été un problème dans les jeux sur lesquels j'ai travaillé dans le passé où l'hôte disparaît tout d'un coup et ensuite nous devons changer beaucoup de choses et décider qui possède quoi et tout ça.

Mais il y a eu beaucoup de choses qui ont simplement fonctionné. Je fais cela depuis toujours donc je vois cela se produire et je suis très méfiant au début. Mais nous n'avons également eu aucun problème, ou si nous rencontrons un petit problème, alors je vais juste consulter la documentation et c'est généralement comme, "Oh, j'ai oublié de cocher une case qui dit transférer automatiquement cet objet de jeu à la personne suivante," ou quoi que ce soit. C'était juste une question de s'assurer que je configure les choses correctement, donc si je rencontre des problèmes, je peux les résoudre rapidement avec ce système.

Découvrez Dagger Directive en accès anticipé sur Steam, et voyez la dernière mise à jour de l'équipe ici. En savoir plus sur Distributed Authority et d'autres solutions multijoueurs Unity, et trouvez des histoires de développeurs Unity sur notre page de ressources.