PUBG - Lettre des dévs : Améliorations des performances des serveurs !

PUBG_France

Pecuarii
Bot
Inscrit
17 Mai 2018
J'aime
7
#1

UNE LETTRE DES DEVS TRES COMPLETE SUR LES PERFORMANCES DES SERVEURS !






Voici pour vous, la lettre des devs sur le FIX PUBG, traduite par Light One ( un de nos modérateurs ).




Chers joueurs,

Dans la lettre de développement d’aujourd’hui, nous souhaitons vous faire part de certains progrès significatifs réalisés dans l’amélioration des performances des serveurs, ainsi que des améliorations supplémentaires sur lesquelles nous travaillons actuellement.



Vue d’ensemble




La version de Unreal Engine que PUBG utilise actuellement est basée sur un modèle Client-Serveur et, par conséquent, le statut de chaque acteur (objets placés sur la map représentant des caractères, des bâtiments, des arrière-plans, des caméras, etc.) doit être mis à jour via le serveur pour chaque joueur.



Les performances du serveur sont généralement indiquées par le « tick-rate » (fréquence de rafraichissement des informations du jeu par le serveur) du serveur et/ou le « frame time » (temps nécessaire à l’envoi d’une information). À mesure que les performances du serveur augmentent, le « frame time » diminue. À mesure que le « frame time » diminue, le temps de réponse du serveur s’améliore également.



Plus le serveur répond rapidement, plus vos actions/mouvements sont rapidement mis à jour. Par exemple, la vitesse à laquelle vous disparaissez de l’écran de votre adversaire après vous être mis à couvert derrière un mur sur le vôtre. Si nous voulons réduire ce que l’on appelle communément la « désync », le temps de réponse du serveur doit être amélioré.



Améliorations apportées par la mise à jour n°14




La structure du processus réseau avant la mise à jour n°14 et les points à retenir

Avant la mise à jour n ° 14, l’échange de données était traité sur le serveur du moteur Unreal, comme indiqué ci-dessous.







Laisseznous d’abord expliquer le flux d’échange lors du processus réseau ci-dessus.



Dans l’étape « Net Dispatch », le paquet reçu du client est traité par le serveur. Par exemple, vous avez des informations entrantes telles que des tirs, déplacements, etc. Les éléments traités pendant cette étape sont généralement transmis à d’autres clients sous deux formes: RPC (Remote Procedure Calls) et Replication. Après cela, les éléments du jeu, comme les déplacements d’objets/joueurs, sont traités au cours de la phase « Simulate & Render » et le résultat est transmis à tous les clients via « Net Flush ».



Toutefois, lorsque les RPC sont envoyés à la suite du processus « Net Dispatch », ils ne sont pas envoyés immédiatement, mais mis en file d’attente dans la mémoire tampon.



Les nombreuses choses stockées dans la mémoire tampon sont envoyées à tous les clients au cours de l’étape « Net Flush » et le tampon est alors vidé. Il n’y a donc pas de transmission entre les étapes « Net Dispatch » et « Net Flush ».



Dans cette structure, il n’y a donc pas de transmission entre les étapes « Net Dispatch » et « Net Flush » et cela provoque donc un retard. Unreal Engine a peut-être été structuré de cette manière pour minimiser le nombre de paquets livrés par UDP. Quoi qu’il en soit, lorsque le nombre de paquets à envoyer est réduit, le réseau fonctionne plus efficacement.



La nouvelle structure et les améliorations du processus réseau

Nous avons décidé que l’amélioration du temps de réponse du serveur était plus importante que la diminution du nombre de paquets pour PUBG. Par conséquent, l’équipe a repensé la structure comme indiqué ci-dessous dans la mise à jour n°14. L’équipe a ajouté une étape « Net Send Flush » avant l’étape « Simulate & Render ».







A l’étape « Net Send Flush », toutes les données UDP stockées dans le tampon seront envoyées et le tampon sera vidé. Grâce à ce nouveau flux, le temps nécessaire pour « Simuler et rendre » n’est plus nécessaire, ce qui réduit le délai. Pendant la phase « Net Send Flush », il n’y a pas de calculs approfondis pour la réplication des acteurs et les données UDP en attente sont vidées.



Comme il y a deux mises à jour réseau, « Net Send Flush » et « Net Flush » dans la nouvelle structure, le taux de mise à jour du réseau a doublé après la mise à jour n°14, ce qui a amené certaines personnes à penser que le « tick-rate » avait augmenté.



Cependant, ce n’était pas le taux de réponse du serveur, mais le taux de mise à jour du réseau qui avait grimpé à 60, car la 2nde mise à jour du réseau est fournie au cours du traitement du serveur Tick.



Comme vous pouvez le voir dans le tableau ci-dessous, lorsque 40 personnes sont en vie, le délai moyen d’un tir est réduit de 94,5 à 77 ms (diminution de 18%).







Améliorations pour la mise à jour n°19




Résultats des analyses avant la mise à jour n°19 et une nouvelle hypothèse

Le détail des données avant la mise à jour PC n°19, mesurées lorsque 90 joueurs sont en vie le 25 juin 2018, sont les suivantes :







Le temps nécessaire à l’étape « Net Flush » est de 43,2 ms, soit 41% du temps total de la trame. Une grande partie de ce temps est utilisée pour la « sérialisation » afin de répliquer chaque acteur sur le client. « Sérialiser » est un processus d’écriture de données dans un ordre en mémoire pour fournir le statut d’acteur au client via le réseau.



Comme nous recherchions la méthode d’optimisation basée sur le résultat obtenus ci-dessus, nous avons pensé « si nous sommes en mesure de réduire le nombre d’acteurs répliqués, en particulier les personnages, le temps total de Net Flush diminuera de manière significative ».



Contrairement à d’autres jeux qui utilisent un serveur dédié sur Unreal Engine, jusqu’à 100 joueurs jouent simultanément dans PUBG, ce qui signifie que le nombre d’acteurs est beaucoup plus élevé. La grande taille des données des acteurs est un problème, mais le volume des acteurs est le plus gros problème.



Alors que nous réfléchissions à des moyens de réduire le nombre total d’acteurs, nous avons pensé que la réplication de caractères distants à une fréquence inférieure serait utile. Étant donné que les caractères éloignés ne sont pas pertinents à cette distance, le nombre d’acteurs sérialisés peut être considérablement réduit sans affecter le jeu. Par conséquent, le temps de « Net Flush » peut être réduit.



Processus de développement: système de diminution de réplication

À partir de l’idée ci-dessus, nous sommes arrivés à la conclusion d’implémenter un système qui ignore les demandes de réplication à une fréquence plus appropriée en fonction de la distance entre le client et l’acteur. Nous l’avons nommé le système « Replication Interleaving ».



Tout d’abord, nous avons extrait la section où les acteurs sont répliqués et abaissé les fréquences de réplication des personnages éloignés. Ensuite, nous avons analysé les problèmes et les types de changements visuels.



Une fois que nous avons pu résoudre les problèmes qui se sont produits lorsque la fréquence de réplication a été abaissée, nous avons vérifié jusqu’où nous pouvions aller et nous sommes arrivés à la conclusion que l’abaissement des fréquences de réplication au quart du niveau initial n’avait toujours pas d’impact.



– Le système de diminution de réplication terminé a été implémenté comme suit:



Étape 1 : Ignorez 1 trame sur les joueurs situés à plus de 70m

Étape 2 : Ignorez 2 trames sur les joueurs situés à plus de 400m



(Remarque: il s’agit du réglage actuel sur les serveurs, et cette valeur peut changer à l’avenir pour améliorer les performances des serveurs et faciliter les mouvements)



Résultat de l’amélioration

Les performances du serveur ont augmenté de 20% après la mise en œuvre du nouveau système. Dans le diagramme ci-dessous, nous avons suivi la fréquence d’images d’un serveur de région NA lorsque 85 joueurs étaient en vie. Après la mise à jour, le « tick-rate » du serveur a augmenté de 22%, passant de 18,5 à 22,9.



D’autres régions ont également affiché une augmentation moyenne de 20%.







Ce qui est encore mieux, c’est le changement qui s’est produit dans le temps de réponse.







Dans le tableau ci-dessus, vous pouvez voir que lorsque 85 joueurs sont en vie, le délai moyen de tir a diminué de 58%, passant de 149,4 ms à 61,6 ms, ce qui indique que vous devriez être nettement moins victime de désynchronisation.



Grâce à d’autres améliorations, en plus de la diminution de la réplication, le tick-rate du serveur a augmenté de 20% et le délai du réseau a diminué de 50% lorsque plus de 80 joueurs sont en vie.



En conclusion




L’amélioration du taux de réponse du serveur depuis le lancement de PUBG a été une priorité constante pour l’équipe. Outre la résolution des problèmes logiciels, des améliorations ont également été apportées au matériel. Toutefois, nous savons qu’il n’y a pas eu d’amélioration notable des performances au cours des derniers mois précédant la mise à jour n°19.



Au cours du programme FIX PUBG, nous avons doublé l’amélioration des performances des serveurs et continué à rechercher et à expérimenter différentes idées, mais cela prend du temps.



Pour mettre en œuvre une fonction unique, des recherches préliminaires doivent être effectuées et, une fois la fonction implémentée, un grand volume d’analyse, de vérification et de test est requis. Il est difficile de résoudre tous les problèmes en peu de temps. Beaucoup d’efforts et de temps doivent être constamment investis dans chaque problème.



Une nouvelle fonctionnalité mal implémentée peut causer de plus gros problèmes. Par conséquent, de nombreuses précautions doivent être prises avant l’implémentation.



Cela dit, après avoir appliqué les améliorations dont nous avons déjà parlé, nous travaillons maintenant à l’optimisation de l’étape « Net Dispatch » du processus. Selon notre analyse, la majeure partie du temps est consacrée au traitement des mouvements de joueurs, et nous avons identifié quelques opportunités pour l’optimiser.



Le mouvement des personnages a un impact important sur le gameplay. Par conséquent, cette tâche nécessite une attention particulière afin de garantir que les améliorations apportées n’affectent pas de manière anormale les joueurs.



Nous expérimentons déjà quelques idées et nous anticipons une diminution du temps requis pour l’étape « Net Dispatch » de plus de 50% par rapport aux 41,8 ms actuels si ces idées ne doivent pas être modifiées par ce que nous trouverons pendant les phases de test.



La stabilisation de la fonctionnalité après la mise en œuvre de ces nouvelles idées devrait prendre plus d’un mois, mais nous continuerons à travailler rapidement et à l’implémenter dès que possible.



Le but ultime est de toujours garder le tick-rate du serveur à 30, du début de la game jusqu’au chicken dinner. Nous continuerons à travailler dur pour atteindre cet objectif afin que nous puissions continuer à vous offrir la meilleure expérience possible de Battle Royale.





Thank you,

Sang-kyun Kim
Directeur du développement, PUBG Amsterdam​



J’espère que cette lettre aura répondu à vos questions.



Merci à tous, bon jeu !



Surtout restez connectés sur nos réseaux sociaux Twitter et Facebook.



Pour trouver des teammates allez sur notre Discord.

L’article Lettre des dévs : Améliorations des performances des serveurs ! est apparu en premier sur PUBGFRANCE.

Lire la suite...
 
Haut