Focus Jeux : Création et exploitation de jeux connectés avec mise en réseau multijoueurs

Il s'agit du huitième blog de notre série Games Focus , qui met en lumière les initiatives clés en matière de développement de produits pour l'année à venir et au-delà. Dans cet article, nous couvrons l'état d'avancement, les plans de sortie à venir et la vision future de Unity Multiplayer Networking.
Bonjour, je m'appelle Kiki Saintonge et je suis chef de produit au sein de l'équipe multijoueur, celle qui s'occupe de la mise en place de la solution Unity Netcode for GameObjects solution.
Je travaille chez Unity depuis environ un an, mais je suis un développeur Unity amateur et indépendant depuis 2013. Ma passion, ce sont les jeux, et plus particulièrement les jeux que vous créez et qui vous inspirent. Je suis très enthousiaste à l'idée de parler de nos solutions multijoueurs dans ce billet, d'autant plus que vous avez été nombreux à exprimer le besoin et le désir d'avoir une solution plus complète et plus accessible pour le développement multijoueurs. Nous sommes plus proches que vous ne le pensez.

Soyons honnêtes : Créer des jeux multijoueurs peut s'avérer très difficile, de la conception des mécanismes à la mise en œuvre et aux tests. Il faut tenir compte de nombreux facteurs - latence, perte de paquets, gestion des scènes, ce qui doit ou ne doit pas être envoyé sur le réseau - dont la plupart sont difficiles à suivre ou à simuler. Même nos solutions de mise en réseau de tiers nécessitent des outils de tiers (quatrième ?) pour voir ce qui se passe.
La mise en place d'un système de réseau complet pour votre jeu doit être à l'image du jeu lui-même : unique et affiné pour s'adapter à l'expérience de votre jeu.
C'est dans cette optique que nous avons voulu créer une solution de netcode suffisamment flexible pour prendre en charge tous les aspects fondamentaux de votre jeu multijoueur, tout en facilitant l'utilisation d'outils ou de services tiers si vous en avez besoin. C'est l'objectif fondamental de nos solutions netcode.

Il est également important de garder à l'esprit que le développement multijoueur s'accompagne de services et d'échelle, deux choses auxquelles vous n'auriez peut-être pas pensé dans le contexte d'un seul joueur ou d'un jeu coopératif. Unity Gaming Services est notre plateforme récemment lancée qui comprend des services d'hébergement de serveurs de jeux (Multiplay), de Matchmaker, de Relay et de Lobby. Il a été conçu pour vous donner tous les outils dont vous avez besoin pour construire des fondations solides, créer des expériences attrayantes pour les joueurs et stimuler la croissance du jeu, le tout dans un même écosystème intégré.

Cette année, nous avons annoncé la sortie de plusieurs solutions netcode étonnantes. Notre première version majeure de Netcode for GameObjects est maintenant disponible en 2020 et 2021 LTS.
Cette solution Netcode basée sur les GameObjects vous permet de commencer à créer des jeux multijoueurs coopératifs à petite échelle. Cependant, si vous avez construit votre expérience en utilisant DOTS (Entités), nous sommes également heureux d'annoncer notre solution Netcode for Entities à venir au Tech Stream 2022, qui vous aide à vous préparer pour une expérience multijoueur à plus grande échelle. Attendez notre prochain article dans cette série pour en savoir plus sur cette version.
Ces piles couvrent un large éventail de bases pour le développement multijoueur. Ensemble, ils constituent une étape parmi d'autres pour vous permettre de vous familiariser avec les jeux multijoueurs. Ces versions se concentrent également sur des scénarios critiques de mise en réseau, tels que l'abstraction de la communication avec les serveurs et les clients, l'envoi de données d'objets à travers le réseau et la gestion des entrées.
Cette version prend également en charge certains outils essentiels qui vous permettent de suivre la perte de paquets, la taille et la latence des objets en réseau. Network Profiler est une extension du Profiler intégré à l'éditeur, et Runtime Network Stats Monitor (RNSM) est une vue "Profiler" plus légère et personnalisable des états du réseau qui peut être exécutée sur des builds autonomes pour des playtests.
Vous pouvez installer ces outils via notre paquet com.unity.multiplayer.tools dans l'éditeur.
Toutes nos piles Netcode - oui, cela inclut les entités - sont construites sur notre couche Transport. Cette couche est indépendante du code réseau et peut être utilisée avec n'importe quelle solution.
Le protocole de transport Unity (ou UTP) étend le protocole de datagramme utilisateur avec un support supplémentaire pour Unity Relay et une sécurité accrue grâce à DTLS. Cette couche fonctionne sous Windows, Mac, Linux, iOS, Android et toutes les principales consoles.
Nous fournissons également de légères capacités de simulation de réseau grâce aux propriétés du simulateur de débogage de notre paquet de transport. Cela vous permet d'étrangler ou de simuler des problèmes de latence ou de bande passante lorsque vous effectuez des tests dans l'éditeur.
Si vous souhaitez avoir un accès direct à cette bibliothèque de réseau de bas niveau, vous pouvez l'installer directement via le paquetage com.unity.transport.
Bien que Netcode for GameObjects soit relativement récent, des jeux sont déjà en cours de réalisation.

La merveilleuse équipe de Fika Productions et Team17 travaille sur un jeu magnifiquement dessiné à la main, Ship of Fools. Il s'agit d'un jeu coopératif multijoueur au rythme soutenu, de type nautique, entièrement développé en Netcode pour GameObjects.
Nous cherchons constamment à combler les lacunes et à démystifier ce qui se passe sur le réseau à l'aide d'outils multijoueurs.

Le mode de jeu multijoueur serait un premier pas important pour faire du développement multijoueur une expérience de premier ordre pour l'éditeur.
L'objectif de cet outil multijoueur est de "fonctionner" une fois que l'on entre dans le mode de jeu. Il offre la même expérience que le flux de travail en mode solo, mais il est désormais possible de faire tourner jusqu'à quatre clients dans la même session de l'éditeur, chacun recevant ses propres informations sur la console et pouvant être différencié grâce à un système d'étiquetage basé sur le réseau.

Le simulateur de réseau est une autre fonctionnalité que nous aimerions retirer de la couche Transport et développer pour en faire un outil plus fonctionnel avec une interface utilisateur qui vous permet d'introduire des pics de lag, de définir des taux de ping, de déclencher des connexions/déconnexions à volonté, et même de personnaliser certains scénarios de réseau à exécuter pendant les playtests.
Nous cherchons à mieux intégrer notre paquet Transport avec Burst, ainsi qu'à prendre en charge les WebSockets.
Disposer d'un serveur dédié est au cœur de nombreux jeux multijoueurs, et cela s'accompagne de la nécessité d'un contrôle plus fin du type de serveur headless que vous construisez.
Nous avons commencé à étudier le flux de travail des serveurs dédiés. Cela commence par vous donner plus de contrôle et de clarté sur les actifs que vous voulez dans un serveur et ceux que vous ne voulez pas. Essentiellement, vous sélectionnez le contenu que vous voulez dans vos constructions de serveurs, ce qui vous permet d'économiser du temps et potentiellement de la bande passante à long terme.
Pour connaître l'état d'avancement de ces fonctionnalités et d'autres sur Netcode for GameObjects, consultez notre feuille de route pour les réseaux multijoueurs afin de savoir ce qui est inclus dans la version 1.0 et ce qui est prévu pour les versions ultérieures. Vous pouvez également consulter notre récente session sur la feuille de route Unite 2022 pour avoir une vue d'ensemble de l'écosystème Unity.
Créer des jeux multijoueurs n'est pas chose aisée, et il est courant de se sentir dépassé lorsqu'on explore le développement d'un jeu multijoueurs - même avec la documentation SDK fournie.
Notre objectif est de vous équiper et de vous soutenir avec les outils nécessaires pour créer des expériences de jeu multijoueurs exceptionnelles pour vos joueurs. Une partie de cette promesse consiste à fournir non seulement la technologie de réseau de base, mais aussi la documentation et les modèles éducatifs, tels que Boss Room, dont vous aurez besoin pour comprendre son application.
Il existe de nombreuses ressources disponibles aujourd'hui que vous pouvez utiliser pour en savoir plus sur les solutions multijoueurs Unity.

Boss Roomest un projet d'exemple de jeu coopératif à petite échelle construit avec Netcode for GameObjects. Il est conçu pour être utilisé dans son intégralité afin de vous aider à explorer les concepts et les modèles qui sous-tendent le déroulement d'un jeu multijoueur.

Nous continuons également à développer des projets internes afin de mettre en avant de nouvelles fonctionnalités et les capacités générales de ce que vous pouvez faire avec Netcode for GameObjects.
Notre dernier jeu est Galactic Kittensun jeu de tir en 2D, multijoueur, jouable, open source et coopératif.
Pour commencer, consultez ces articles de blog pour en savoir plus sur la suite multijoueur d'Unity :
- Favoriser les expériences multijoueurs avec Relay et Lobby
- Enter the Boss Room : notre nouvel échantillon de jeu multijoueur
- État des comportements perturbateurs dans les jeux multijoueurs
- Choisir le bon netcode pour votre jeu
De plus, des ressources extraordinaires ont été créées par notre incroyable communauté :
Nous espérons que vous continuerez à participer à notre série Games Focus en nous faisant part de vos commentaires. Postez vos questions et commentaires sur ce blog dans le forum multijoueur ou dans ce fil de discussion dédié.
Visitez notre tableau des produits pour plus de détails sur la feuille de route. Vous devrez vous connecter avec votre identifiant Unity et accepter d'utiliser les cookies fonctionnels. Chaque carte de ce tableau interactif est cliquable, ce qui vous permet d'obtenir plus de détails sur chaque sujet tout en vous donnant la possibilité de faire part de vos commentaires. Cliquez sur une carte, sélectionnez le niveau d'importance du sujet pour vous, ajoutez votre point de vue et soumettez. Ce retour d'information est ensuite directement acheminé vers les équipes de produits concernées.
Netcode for GameObjects est une solution de netcode capable, mais si vous cherchez à construire quelque chose de beaucoup plus grand - pensez à des galaxies ou des MMOs multi-serveurs avec des milliers de joueurs actifs en même temps - vous voudrez rester à l'écoute pour la publication de notre prochain blog dans la série des Game Focusqui traitera de la création de mondes plus vastes et d'environnements plus riches.
