par Natvar Jeu 30 Juil - 19:08
Voici une traduction de l'explication donné par Rita (Status Report) sur les obus fantôme issu d'une discussion entre deux développeurs.
Il faut précisé que ceci reste une interprétation de ce qu'ils ont dit.
Brève Description
Le problème ne réside pas dans le serveur, ni dans le client, c'est en réalité une erreur du moteur BigWorld qui débute lorsque le serveur ne parvient pas à calculer une valeur de pénétration. En termes simples, voici le processus (il manque quelques éléments tels que : le temps de voyage de l'obus, la vélocité du char, l'arc du canon, le type de munition, etc etc etc pour des raisons de simplicité):
- Le client tourne
- Le serveur reçoit la commande "commande de conduite" et répond "vous roulez maintenant" et un peu plus tard, il détermine qu'il y a un tank ennemi en vue que et que le client peut le voir, donc il envoie les données en arrière en disant "vous avez un char en vue"
- Le client voit maintenant le char ennemi
- Le serveur reconnaît que le char est là et tous les mécaniques de visées s'applique
- Le client tire sur le char
- Le serveur reconnaît que le client à tiré et déclenche la minuterie de rechargement pour le client tout en traitant la valeur de pénétration de l'obus, de l'angle, RNG (+/- 25%), la zone à endommages et détermine, si il y a pénétration / ricochet ou dommage aux modules internes (la trappe du commandant est touché, le pilote meurt * trollface *!) ou (l'habitacle du conducteur est touché, soudain les chenille sont endommagé * trollface v2 *) (Insider: actuellement ceci est expliqué par ricochets l'intérieur du char, mais on va le laisser à ça ...).
- Le moteur BigWorld qui s'exécute à coté du serveur ne parvient pas à traiter la demande du client et délivre un "null"
- Le serveur: "Hey, mais je viens d'envoyer les données!"
- Le moteur BigWorld: "Oui et je dis que c'est null, maintenant obéit!"
- Serveur: "??? Okay ._."
Le server envoie le ping de retour avec une valeur nulle: "lel, le tank était pas là". Le client affiche un événement d'obus fantôme en retour.
Quelles sont les causes de cette erreur?
Il y a quelques événements clés liés à ce délais de ping, plusieurs facteurs peuvent être en causes tels que des microlags, une perte de paquets très minime (on parle de bits, même pas d'octets) que le serveur peut interpréter comme du "bruit" (paquets partiellement irrécupérables). Cela est influencé par beaucoup de choses, en fonction de la qualité de connexion du client, la distance et même les interférences, des micro surcharges du serveur, etc.
Peut-il être corrigé? Oui, absolument, mais cela ne concerne pas la qualité du serveur ou la connexion (plus d'info un peu plus bas), c'est à propos du moteur BigWorld qui exigerait un patch. Techniquement, le serveur est toujours configuré pour répondre à chaque obus tiré, le bug est en effet, rares parce BigWorld à simplement oublié de recevoir les données à partir du serveur en raison du «bruit».
Ce n'est pas un erreur fatale et on peux dire en toute certitude que près de 90% des cas signalés d'obus fantômes ne sont pas réellement le bogue décrit ci-dessus et sont liés à des lags ou de petites de-synchronisation du client-serveur.
A quel point ce bogue est-il commun ?
Il est extrêmement difficile de donner un chiffre précis, mais dans une estimation approximative, il peut arriver à tout client, quel que soit la géolocalisation ou la configuration du matérielle pas plus d'une fois par jour et ce très rarement. Il se produit pas plus d'une fois par partie (très important: cela n'arrive pas à chaque match, cela signifie simplement que si il se produit, il est presque impossible qu'il se répète pendant ce match).
Alors quel est le problème? Les obus fantômes doivent être fixée dans deux domaines bien distincts:
1 - le bug est causé par les de-synchronisation entre le client-serveur (microlags) (très difficile à résoudre, car une tonne de facteurs sont impliqués, généralement causée par des problèmes de connexion entre les ordinateurs et la connexion du serveurs-client).
2 - le bugs de BigWorld qui peut être corrigées par la psychothérapie ou une mise à jour du moteur avec un correctif à l'avenir.
Chez XBox aucun report à propos de ce bogue.