Passer au contenu principal

Feb: UE5 & Network Authority!

· 10 minutes de lecture
Gabriel • SyedMuhammad
lead developer™

Unreal Engine 5 Preview, new Network Authority System, Store API and more

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. Then in the beginning we created our first Network Authority system in which each player is responsible for sharing a specific set of entities from the server to others, similar to Roblox Solution.

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

With the addition of the new Network Authority system, we are adding a new Debug section in the Settings.

A cool setting is the Draw Network Debug which draws on World all network information:

You can find more information in the Network Authority page.

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

API du Magasin

Last month we released our Store, a place to share and download community Assets & Packages, integrated with the game.

Now we are releasing the Store API: You can download, upload and edit your resources through HTTP requests, check it the Swagger documentation at https://api.nanos.world/store/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. You can check it out at the Modules page.

Unreal Engine 5 : Aperçu

A week ago, Epic Games gave us the wonderful news that they were releasing 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.

And we, as good enthusiasts, and in addition to our other blog news (November: Unreal Engine 5?) decided to give another try on converting nanos world into 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 introduces Lumen, a new dynamic Global Illumination method, and playing with it is very cool and impressive. 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 (Dynamic Global Illumination)
  • Nanite (Mesh Virtualization)
  • Chaos (new Physics Engine)
  • and also not less important, the new features regarding World/Level creation (One File Per Actor and World Partition)

While Lumen, Nanite and World features can be toggled on or off (we can choose to use it or not), the same truth is not valid for Chaos. Unreal is completely removing PhysX and replacing by it's new Physics Engine: 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 👎

  • Gameplay Bugs related to Physics, objects jumping, flickering, bad collisions happening, objects passing through floor/walls due 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.
  • New World/Level tools which allows creating big maps and also improves a lot the co-creations pipelines using the One File Per Actor system and 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. Come to our Discord to discuss this idea with us! 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 released it's brand new EGUI library. Un package pour créer des interfaces à partir de scripting! It also contains it's own complete documentation!

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