Donjon à Pâté Profond Coopération en ligne à trois joueurs dans Unity

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.
Apprenez comment l'équipe de deux personnes de Behold Studios a construit l'aventure coopérative en ligne Deep Dish Dungeon avec Netcode for GameObjects, Lobby, Relay, Vivox et Unity 6.3.
Comment une équipe de deux personnes sans ingénieur réseau dédié construit-elle un jeu coopératif en ligne ?
Fondé à Brasília, au Brésil, et basé à Toronto, au Canada, Behold Studios crée des jeux avec Unity depuis plus d'une décennie. Leur dernière sortie, Deep Dish Dungeon, est un jeu de rôle coopératif de donjon pour un à trois joueurs. Pour la majorité du développement, seulement deux personnes ont travaillé sur Deep Dish Dungeon: Le directeur du studio Saulo Camarotti a géré la conception, la programmation, les affaires et le marketing, tandis que l'artiste Carolina Baumgarten a créé tous les visuels, de l'art conceptuel aux modèles 3D, aux textures, à l'interface utilisateur et plus encore.
Deep Dish Dungeon était très attendu, dépassant 500 000 souhaits Steam avant le lancement, et il est maintenant disponible sur Steam et Xbox Game Pass avec crossplay. Lisez l'étude de cas pour apprendre comment Behold Studios a économisé du temps et des ressources avec Unity Services et Unity 6.3, et comprenez les décisions de conception qui ont rendu possible ce projet ambitieux.

Deep Dish Dungeon | Behold Studios | Raw Fury
Les résultats:
- Plus de 500 000 listes de souhaits sur Steam avant le lancement, dont 65 000 dans les premiers jours après la bande-annonce de l'annonce
- Un prototype en ligne Multiplayer jouable dès le premier jour de développement
- Crossplay entre Steam et Xbox sans code réseau supplémentaire
- Localization dans 11 langues
- Joueurs arrivant en retard mis à jour sur chaque ennemi, objet et élément dans une donjon partagé

Transformer les contraintes Multiplayer en forces
Behold Studios a déjà lancé des jeux Multiplayer, y compris un jeu Facebook en 2011 et Out of Space en 2020. Pour Deep Dish Dungeon, Saulo a délibérément gardé l'équipe petite. Il a embauché Carolina pour le projet parce qu'en tant qu'artiste multidisciplinaire, elle pouvait couvrir le 3D, le 2D, les logos, l'illustration et l'art conceptuel.
Étant le seul programmeur, Saulo savait qu'il devrait faire très attention à garder le projet dans le cadre. « Le mode Multiplayer ajoute beaucoup plus de complexité à un projet, et généralement les gens ont des ingénieurs dédiés pour travailler sur ces problèmes », dit-il. Ce n'est pas juste une équipe de deux, c'est juste moi en tant que programmeur. J'ai donc eu besoin de créer un jeu qui utilise les limitations du Multiplayer comme facteur de conception.

Deep Dish Dungeon | Behold Studios | Raw Fury
Cela a conduit à une série de choix délibérés qui ont transformé ces limitations en forces :
- Co-op uniquement, pas de PvP : Parce que les joueurs sont des Friends du même côté, le jeu peut faire confiance à chaque client.
- Peer-to-peer, sans Dedicated Server: Le joueur qui crée le jeu agit comme hôte.
- Tolérant à la latence : Un ping élevé ne gâche pas l'expérience, donc le jeu n'a pas besoin de prédiction de mouvement complexe.
- Un look délibérément simple: Le jeu s'affiche à un tiers de la résolution de sortie pour un style pixélisé qui correspondait au savoir-faire de Behold Studios et évitait les effets visuels et le travail de shaders lourds.
Le style artistique a également joué un rôle dans l'établissement des attentes pour le joueur. « Même l'esthétique nous aide », explique Saulo. « Vous vous attendez à ce que certaines choses ne soient pas complètement lissées. »

Deep Dish Dungeon | Behold Studios | Raw Fury
Concevoir pour le Multiplayer dès la première ligne de code
Saulo avait une expérience antérieure avec des stacks Multiplayer dédiés comme Photon. Même ainsi, il s'est donné un budget de prototype de trois mois pour tester si la pile Multiplayer de bout en bout de Unity 6 tiendrait la route.
« Quand nous avons vu Netcode for GameObjects, nous avons réalisé que c'était exactement ce qu'il fallait », dit-il. « Nous pourrions utiliser la logique de base d'Unity – la façon dont nous créons des choses et gérons nos objets – et ajouter une couche Multiplayer par-dessus. »
Il a commencé par les exemples de code dans la Documentation Unity pour Lobby et Relay et a progressé rapidement. « La première ligne de code implémentait déjà le système de Lobby et de Relay Multiplayer », dit-il. Le premier jour, je jouais déjà à un jeu Multiplayer.
Penser au Multiplayer dès le début du développement signifiait qu'il n'y a jamais eu de base de code solo à refactoriser. Saulo a vu d'autres équipes passer de un à six mois à ajouter du Multiplayer à un projet existant.

Deep Dish Dungeon | Behold Studios | Raw Fury
Connecter les joueurs au Lobby et au Relay
Pour le joueur, rejoindre un ami est un clic. L'hôte choisit un ami de sa liste d'Friends Steam et envoie une invitation qui contient un ID de Lobby. L'ami accepte, rejoint le même Lobby (en entrant un mot de passe si l'hôte en définit un), et se connecte à l'hôte via Relay.
La partie la plus difficile se passe en coulisses. Un ami peut se joindre à une session déjà en cours, il doit donc rattraper tous les objets en réseau du donjon, tels que quels ennemis sont morts, leurs points de vie restants et quels objets ont été ramassés. Saulo voulait éviter de construire une gestion de scène personnalisée. Au lieu de cela, Deep Dish Dungeon sérialise la scène dans un fichier de sauvegarde lorsque la session commence. Lorsqu'une personne rejoint, les objets de la scène sont supprimés et chargés dynamiquement à partir de l'état synchronisé de l'hôte. Les joueurs revenant réapparaissent à leur point de réapparition enregistré.
Saulo dit que le problème le plus difficile était de gérer l'état, pas de connecter les joueurs.
« Dans un jeu solo, vous savez avec certitude que les choses se passent dans un certain ordre », dit-il. En Multiplayer, vous ne savez jamais exactement quel sera l'état des variables et des objets si quelqu'un rejoint au milieu de quelque chose. Les objets doivent savoir quoi faire s'ils sont appelés alors qu'ils sont dans le mauvais état.

Deep Dish Dungeon | Behold Studios | Raw Fury
Faire de la voix un mécanisme avec Vivox
De nombreux joueurs coopératifs utilisent déjà des outils comme Discord pour la messagerie vocale, mais Saulo a choisi Vivox parce qu'il voulait que la voix soit intégrée à l'expérience de l'exploration du donjon lui-même.
« Je voulais que les joueurs ressentent le donjon, et la solitude du donjon aussi », dit-il. « Je voulais qu'ils sentent que leurs Friends étaient laissés pour compte. »
La voix dans Deep Dish Dungeon est positionnelle et filtrée par l'espace autour de chaque joueur. Environ 15 haut-parleurs d'interphone placés dans toute la crypte peuvent être utilisés pour diffuser la voix d'un joueur à tout le monde. Cela permet à un ami de rester au camp pour cuisiner pendant qu'un autre part chercher des provisions et radio les besoins en ravitaillement. Parler compte également dans le bruit auquel les ennemis réagissent, tout comme sauter, brandir une torche ou s'agiter en armure.
« Maintenant, les joueurs réfléchissent à comment et quand utiliser cette fonctionnalité », dit Saulo. Cela ajoute beaucoup de couches à l'interaction.

Deep Dish Dungeon | Behold Studios | Raw Fury
Améliorer le gameplay avec Analytics
Deep Dish Dungeon est un bac à sable non linéaire sans carte, sans boussole et plusieurs solutions pour la plupart des obstacles. Cela a rendu les tests de jeu difficiles. « Chaque fois que nous regardions quelqu'un jouer, il se comportait différemment », dit Saulo.
Il a construit une stratégie Unity Analytics autour de cette liberté. Il suit comment les objets se déplacent dans le jeu, et il enregistre chaque coup, rencontre de combat et mort ainsi que l'inventaire du joueur et s'il a mangé. Ce dernier point de données s'est avéré important.
Dans Deep Dish Dungeon, la nourriture n'est pas une potion de soin. C'est un renforcement, dit-il. J'ai vu beaucoup de joueurs explorer le ventre vide, et ce sont ces joueurs qui signalaient que le jeu était trop difficile.
La découverte a conduit à la création d'un nouveau système de jeu : un compteur de faim qui diminue les PV des joueurs lorsqu'ils ne mangent pas assez longtemps. Grâce à cette mécanique, les joueurs peuvent plus facilement comprendre pourquoi ils doivent manger avant de s'aventurer dans le donjon.

Tableau de bord Analytics pour la démo Deep Dish Dungeon
Débusquer les bugs avec le Diagnostic
Sans équipe d'assurance qualité propre avant que son éditeur, Raw Fury, ne rejoigne l'aventure, Saulo a utilisé Diagnostics pour trouver des plantages et des erreurs qu'il ne pouvait pas reproduire sur ses propres machines. Cela l'a également aidé à les classer par fréquence et par plateforme.
Un rapport a commencé par des joueurs disant qu'ils ne pouvaient pas attaquer les ennemis. « L'attaque fonctionne bien, l'ennemi fonctionne bien – qu'est-ce qui se passe ? » Saulo dit. Les données de diagnostic ont montré une chaîne d'événements qui a commencé beaucoup plus tôt, avec un inventaire faisant référence à un article qui n'existait plus. Nous aurions pu attraper le problème bien plus tôt.

Tableau de bord de diagnostic pour la démo Deep Dish Dungeon
Tester le Multiplayer dans Unity 6.3
Pour un programmeur solo, configurer des sessions de test Multiplayer peut prendre beaucoup de temps. Multiplayer Play Mode dans Unity 6.3 a supprimé la plupart de ce travail. Saulo peut entrer en Mode Jeu et exécuter deux ou trois clients dans l'éditeur Unity en même temps, que ce soit dans le donjon complet ou dans des scènes de test dédiées.
« Je peux tester n'importe où dans le jeu avec deux ou trois joueurs en appuyant sur un bouton », dit-il. Et faire fonctionner le jeu local est quasiment la même chose que de passer par Relay et Lobby. C'est le même code.
La stabilité améliorée de Unity 6.3 comptait tout autant. Saulo se souvient de crashs presque tous les jours dans les anciennes versions. Après la mise à niveau vers Unity 2023 puis Unity 6, il se souvient : « Il m'a fallu un certain temps pour réaliser qu'il s'était écoulé plus d'un mois depuis mon dernier crash. »
Traduire avec le package Localization
Les jeux précédents de Behold Studios dépendaient de plug-ins de Localization tiers, qui ne suivaient pas toujours les nouvelles versions d'Unity. Cette fois, l'équipe a utilisé le package de Localization de Unity 6. Il fournit des tables de chaînes qui se synchronisent avec Google Sheets et une chaîne de substitution de polices qui essaie une deuxième police lorsque la première ne peut pas afficher une langue. Deep Dish Dungeon se lance dans 11 langues : Anglais, portugais brésilien, français, allemand, espagnol, espagnol latino-américain, polonais, russe, japonais et chinois simplifié et traditionnel.
Le conseil de Saulo ici est de planifier les longues traductions le plus tôt possible. « Il est très sage de commencer à penser à la Localization tôt et de créer une interface utilisateur qui en tienne déjà compte », dit-il.

Deep Dish Dungeon | Behold Studios | Raw Fury
Conseils de départ
Pour les petites équipes envisageant le Multiplayer en ligne, le principal conseil de Saulo concerne la conception, pas la technologie.
Créez un jeu où vous pouvez faire confiance au client. Créez un jeu coopératif. « Créez un jeu où la latence n'est pas un problème – si vous avez 500 millisecondes de latence, le jeu fonctionne toujours grâce à la conception », dit-il. Du point de vue du design et de la production, c'est plus important que la technologie réelle que vous allez utiliser.