Passer au contenu principal

2022 Feb: UE5 & Network Authority!

· 10 minutes de lecture
Gabriel T. Nardy
nanos world developer (SyedMuhammad)

Aperçu Unreal Engine 5, nouveau système d'autorité réseau, API magasin et plus encore

Autorité Réseau

Comme tout le monde le sait, nanos world repose sur une solution "sans serveur" pour la physique et d'autres opérations dans le monde. Toute la synchronisation repose sur le partage de données entre les joueurs et la réplication dans chaque client. Cette approche apporte plusieurs avantages et bien sûr quelques inconvénients, dans les avantages que nous pouvons inclure un serveur très léger, où nous avons tout le contrôle dessus, sans avoir besoin de compter sur l'exécutable du serveur d'Unreal ou la façon dont il gère le réseau.

D'un autre côté, nous avons eu quelques défis sur la façon de distribuer des informations sur la physique et d'autres choses. Ensuite, au début, nous avons créé notre premier système d'Autorité de Réseau dans lequel chaque joueur est responsable du partage d'un ensemble spécifique d'entités du serveur à d'autres, similaire à Roblox.

Cependant, tout comme dans Roblox, certains problèmes deviennent plus visibles quand nous avons beaucoup de joueurs connectés avec de nombreux pings différents. Comme certains joueurs recevront l'"autorité réseau" sur les entités plus rapidement que d'autres, ils vont commencer à partager leur emplacement/rotation à d'autres joueurs alors que la "vieille" autorité du réseau a toujours l'autorité dessus parce qu'elle n'a pas encore reçu le message "perte d'autorité réseau".

Nous avons créé ce diagramme pour illustrer le problème :

Comme vous pouvez le constater, il y a un "vide" et un "chevauchement" lors du changement d'autorité de réseau si nous avons des différences entre les joueurs, provoquant plusieurs comportements bizarres sur des objets physiques.

Compte tenu de cela et après beaucoup d'études, nous avons amélioré notre système d'autorité de réseau pour le rendre plus robuste, cette nouvelle façon vise à combler les lacunes et à ignorer les chevauchements :

Bien que toujours dans une version "beta", avec ce nouveau système, nous avons l'intention d'améliorer tous les "avertissements" et les glitchs qui se produisaient depuis, tous les commentaires sont appréciés!

Nouveaux Modes de Débogage

Avec l'ajout du nouveau système d'autorité de réseau, nous ajoutons une nouvelle section Debug dans les paramètres.

Un paramètre cool est le Draw Network Debug qui utilise toutes les informations sur le réseau dans le monde:

Vous pouvez trouver plus d'informations sur la page Autorité Réseau.

Vous pouvez également faire une fausse "perte de paquets" qui simulera des données de synchronisation qui seront ignorées.

API du Magasin

Le mois dernier, nous avons publié notre Magasin, un endroit où partager et télécharger des assets de la communauté & Packages, intégrés au jeu.

Maintenant nous libérons l'API duMagasin: Vous pouvez télécharger, envoyer et éditer vos ressources via des requêtes HTTP, consultez la documentation de Swagger sur https://api. anos.world/boutique/docs. Plus de tutoriels à venir bientôt™.

Modifications de la Documentation

Modules

Nous avons ajouté un nouveau tutoriel pour la création de votre propre module C. Vous pouvez le consulter à la page Modules.

Unreal Engine 5 : Aperçu

Il y a une semaine, Epic Games nous a donné la merveilleuse nouvelle qu'ils sortaient Unreal Engine 5: Preview. Une version Preview signifie que la plupart des fonctionnalités sont déjà présentes et presque prêtes pour une version finale de production.

Et nous, en tant que bons enthousiastes, et en plus de nos autres actualités sur le blog (Novembre : Unreal Engine 5 ?) avons décidés de faire un nouvel essai de conversion de nanos world vers Unreal Engine 5. Et passons à nos impressions :

Migration de nanos world

Cette fois-ci la migration du monde nanos vers Unreal Engine 5 : Preview était plus difficile, nous avons encore plus de méthodes obsolètes et certaines fonctionnalités ont été modifiées et/ou supprimées, ce qui a nécessité un travail plus dur pour convertir et déboguer ce qui a changé.

Nous avons dû mettre à jour beaucoup plus de code et de fichiers que la version "Early Access" pour pouvoir simplement lancer le projet. Les véhicules ont également dû être désactivés en raison du nouveau moteur Chaos, qui change complètement la façon dont les véhicules doivent être implémentés et nous ne voulions pas nous soucier de les convertir dès maintenant.

Graphismes

Unreal Engine 5 introduit Lumen, une nouvelle méthode dynamique d'éclairage global, et jouer avec est très cool, et impressionnant. Voici quelques captures d'écran tirées de notre carte Testing Map :

tip

Vous pouvez voir comment les couleurs de l'objet peuvent se refléter dynamiquement dans les lumières d'environnement.

tip

Ici, nous pouvons voir la contribution des matériaux émissifs à l'environnement.

Une fonctionnalité cool est que nous pouvons activer l'accélération matérielle pour le calcul de Lumen (qui remplace le Ray Tracing matériel), et testé avec une RTX 3070 le rend encore plus beau à un coût GPU vraiment bas.

Technique

Sur le plan technique, les plus grands changements qu'Unreal 5 apporte sont :

  • Lumen (Illumination globale dynamique)
  • Nanite (Virtualisation du maillage)
  • Chaos (nouveau moteur physique)
  • et pas moins important, les nouvelles fonctionnalités concernant la création du monde/niveau (One File Per Actor et World Partition)

Alors que les fonctionnalités de Lumen, Nanite et World peuvent être activées ou désactivées (nous pouvons choisir de l'utiliser ou pas), la même vérité n'est pas valable pour Chaos. Unreal enlève complètement PhysX et le remplace par son nouveau moteur physique : Chaos. Bien que nous soyons ouverts à de nouvelles choses, Chaos ne semble malheureusement pas être totalement en bon état, ni au moins au même niveau/stabilité que PhysX.

Nous pourrions faire l'expérience de plusieurs bugs de collision, tels que des glitchs d'objets, de mauvaises "boîtes de collision", vols à travers les murs, bugs avec Rope (Cable), objets dormant aléatoirement, appels d'événements de mauvais coups et ainsi de suite.

Pour la plupart des problèmes nous avons pu trouver une solution (comme appliquer une force à certains objets pour qu'ils ne dorment pas, ou trouver un contournement dans les paramètres des câbles), mais le problème principal que nous avons trouvé en utilisant Chaos sont les événements de retours de "Hit" qui sont totalement incohérents, parfois déclenchés avec la force 0, ce qui peut perturber les sons de succès et aussi les événements Hit de nanos world peuvent ne pas être déclenchés, et cela peut casser les fonctionnalités de gameplay/scripting.

Sans parler des objets qui glitch / disparaissent / perdent leurs collisions, ce qui donne une très mauvaise impression sur la qualité du jeu.

Et on n'a même pas commencé à implémenter les nouveaux véhicules de Chaos, on attend de voir ce qu'on va y trouver 😅.

Stability

En fait, cette version d'Unreal nous a surpris positivement, elle avait moins de crashes que dans un accès anticipé, mais en avait quand même quand nous stressions le jeu de manière importante en utilisant énormément de ballons, câbles et accessoires volants. Bien que j'ai été un peu déçue car la plupart des bogues que j'ai trouvés dans l'accès anticipé étaient toujours là dans cet aperçu et n'ont pas encore été corrigés.

Aussi quelques bugs rares pourraient être remarqués, comme celui d'être soudainement téléporté à l'emplacement 0, 0, 0, et auquel nous n'avons pas encore trouvé la raison.

L'UE5 en vaut la peine maintenant ?

Résumé: nous avons créé une liste de points positifs et négatifs selon notre point de vue concernant la migration vers Unreal 5 "maintenant":

En outre, un autre point à considérer : nous allons migrer vers Unreal Engine 5 bientôt ou plus tard, la décision est "quand". 😉

Points négatifs 👎

  • Bugs de Gameplay liés à la physique, les objets qui ont des glitchs/sauts, de mauvaises collisions se produisent, les objets passant à travers le plancher/murs en raison de Chaos.
  • Artefacts visuels, non seulement liés à Lumen, mais aussi aux méthodes standard de rendu.
  • Crashes d'Unreal aléatoires, que nous ne pouvons pas réparer nous-mêmes.
  • Mises à jour Unreal plus fréquentes, nous allons probablement avoir une autre version d'aperçu, et après la sortie de l'UE5, nous allons obtenir plusieurs correctifs, et chacun de nous devra très probablement reconstruire tous ses Assets et publier une nouvelle version de ceux-ci, sinon ils ne fonctionneront pas dans les nouvelles versions. Cela signifie que les Asset Packs ne fonctionneront pas dans les nouvelles versions Unreal.
  • L'utilisation de Lumen a ses inconvénients, comme la performance, qui peut toucher de 25% à 50% des FPS (mais peut être activé/désactivé).

Points positifs 👍

  • Nous allons être les premiers à explorer Unreal Engine 5 (qui peut être mauvais parce que certains problèmes n'ont encore été identifiés par personne, mais personnellement, j'aime explorer de nouvelles fonctionnalités et utiliser de nouveaux outils).
  • nanos world aura un grand potentiel d'auto-marketing, et peut aussi amener de nombreux nouveaux enthousiastes sur UE5 à connaître, jouer et créer avec le jeu.
  • Lumen est amusant et magnifique.
  • Les nouveaux outils World/Level qui permettent de créer de grandes cartes et aussi d'améliorer beaucoup les pipelines de co-création en utilisant le système One File Per Actor et World Partition!
  • Le nouvel éditeur d'Unreal a un look plus moderne et agréable.
  • De nombreux nouveaux outils et technologies à utiliser, y compris Nanite, Chaos Destructions, Des outils d'animation (qui peuvent nous aider à relier dynamiquement votre Animation Blueprint personnalisé) et le nouveau MetaSounds.
  • Il est vraiment difficile de convertir nanos world de zéro à chaque mise à jour pour tester sa stabilité, Je ne peux pas réutiliser la conversion précédente parce que de nombreux changements sont faits en Blueprints (UI) que je ne peux pas fusionner et beaucoup ont changé depuis. Donc en commençant la conversion maintenant nous pouvons déjà commencer à creuser, corriger des choses et les prochaines mises à jour d'Unreal seront plus faciles et plus rapides à tester et à maintenir.

Contrairement à l'accès anticipé, cette version semble avoir plus de points positifs que des points négatifs, et cela semble être une meilleure occasion qu'avant de migrer officiellement nanos world. Venez sur notre Discord pour discuter de cette idée avec nous ! Nous allons faire un sondage afin de prendre en compte tous les commentaires de la communauté!

Spotlight de la Communauté

Ici, nous aimerions partager toutes les choses incroyables que notre communauté fait ces dernières semaines!

Timmy fait un travail incroyable, et partage son nouveau système d'inventaire :

Timmy a également créé un système de météo avec des transitions fluides :

MegaThorx a publié sa toute nouvelle bibliothèque EGUI. Un package pour créer des interfaces à partir de scripting! Il contient également sa propre documentation complète!

Voltaism a partagé une implémentation très cool de Bots jouant à son mode de jeu VZombies entre eux, sans joueurs :