Traduit par Spyro
Publier une nouvelle version de rFactor 2 est généralement quelque chose que nous faisons avec un journal des modifications à puces classique, mais cette fois, nous avons pensé qu'il méritait un peu plus que cela.
Lors de notre récent événement rF24, des problèmes techniques se sont posés et qui ne nous laissaient pas d'autre choix que de lever le drapeau rouge de la course. Nous avons décidé d’immédiatement regrouper et réorienter nos priorités vers la dissection et la résolution de problèmes qui se posaient depuis longtemps. Ce n’était pas une tâche aisée, mais nous avons retroussé nos manches et mis la main à la pâte. Avec l’aide des équipes participantes, nous avons analysé tous les problèmes et avons pu pour la première fois en reproduire la plupart. Leur cause s’est avérée être des cas extrêmes dans les «reconnexion à la session» et les «changements de pilotes». Nous avons donc poursuivi en essayant de casser ces caractéristiques de toutes les manières possibles.
Bien entendu, une grande partie des résultats reposait sur des tests intensifs et ciblés au cours des dernières semaines. Avoir à revenir en arrière et tester plusieurs scénarios de manière répétée et travailler pour trouver des solutions et des solutions de contournement nécessitaient une approche bien réfléchie avec une compréhension solide des problèmes de toutes les parties concernées, tant du côté des tests que du côté du développement. Cette concentration intense nous a donné un aperçu des nombreuses façons dont les problèmes peuvent survenir dans le feu de l'action. Heureusement, nous avons également bénéficié du soutien massif de la communauté rFactor 2 au travers de commentaires et d’histoires post-course, ainsi que d’exploitation forestière. C’était une aide précieuse et une aide considérable pour aider à trouver la cause profonde de nombre de ces problèmes que rencontrent les gens lors d’événements en ligne. En tant qu'équipe, nous avons examiné méticuleusement chacun de ces rapports et recherché tous les détails spécifiques qui pourraient nous orienter dans la bonne direction.
L'un des principaux domaines sur lesquels nous nous sommes concentrés concernait les problèmes liés au regroupement après une déconnexion au cours d'une session, par exemple lorsque la connexion réseau était interrompue un instant. rFactor 2 a toujours permis à un pilote de rejoindre une course après une panne d'ordinateur ou un problème de réseau, mais dans certains cas, en rejoignant le serveur, il se retrouvait avec un DNF (Did not finished), un DQ (disqualification) ou leur nom apparaissait au bas de la liste simplement comme "en attente d'une session ouverte". Bien entendu, ces résultats sont incorrects et la question qui nous était posée était: qu'est-ce qui déclenche ces scénarios? Nos recherches et nos tests ont rapidement montré que, dans la plupart des cas, ces problèmes étaient liés au fait de se rejoindre et soit a) choisir une voiture totalement différente de la sélection de voitures, b) choisir la bonne voiture avec la mauvaise livrée de la sélection de voitures ou c) choisir la bonne voiture et la bonne couleur, mais avec un package de mise à niveau différent.
Vous pourriez demander: «Pourquoi est-ce un problème, je choisis toujours les bonnes options»? Même si cela peut être vrai dans 99% des cas, c’est le 1% qui nous fait mal ici à la fin. Il est difficile de s’assurer qu’une équipe de plusieurs pilotes choisit toujours les bonnes options. Il s'avère que commettre une erreur cause des problèmes à plus de gens que le conducteur qui le rejoint. Nous devions donc veiller à ce que cela ne se produise plus.
Pour résoudre ce problème, nous avons d’abord examiné le code principal du processus de ralliement afin de nous assurer que toutes les options concernant la voiture et les mises à niveau sont héritées et restent avec chaque pilote, indépendamment des déconnexions ou des échanges de pilotes précédents. Cela signifie que lorsque vous rejoignez la voiture A et que vous effectuez une mise à niveau X, celle-ci est consignée de manière plus robuste, ce qui évite de perdre l'historique du pilote. Nous avons ensuite travaillé à rendre ce processus plus convivial, de sorte qu’il soit impossible de se tromper lors de la réinscription. Nous avons amélioré le protocole réseau pour communiquer à votre client la voiture, les couleurs et les mises à niveau qui étaient utilisées auparavant, afin de pouvoir choisir la voiture qui vous convient. Par exemple, si vous rejoignez une 'BMW M8 GTE' avec le 'package Le Mans' et 'ma livrée', et que vous avez un problème de réseau pendant la course et que vous êtes démarré, au lieu de voir la liste complète des voitures , livrées par équipes et mises à niveau lors de la réunion, vous ne voyez que votre BMW M8 GTE, et l’option de modification du package de mise à niveau n’est plus disponible. Vous récupérez simplement votre voiture!
Cela nous amène à un autre point important et à un effet secondaire des erreurs de réadmission. Rejoindre avec la mauvaise voiture ou la mise à niveau causerait souvent des décalages et des blocages pour tous les autres pilotes déjà sur le serveur, car tout le monde était obligé de charger une voiture différente en temps réel pendant la course (au lieu de la voiture garée dans le garage débranché).
Nous avons constaté un problème récurrent lorsqu’un échange de pilote a lieu, l’intelligence artificielle prenait soudainement le contrôle de la voiture sans avertissement.
Cela a été causé par la tentative de remettre la voiture à un coéquipier qui n'était plus un passager ni même sur le serveur au moment de l'arrêt aux stands. Par défaut, rFactor 2 était alors configuré pour laisser l'IA prendre le relais. Cela s'est avéré être une mauvaise idée et nous avons modifié le code pour ne plus le faire. Cela signifie qu'à partir de maintenant, si le pilote remplaçant n'est plus présent, vous conserverez la voiture à la fin de l'arrêt aux stands. Cela vous permettra de continuer à courir et de réessayer un échange de pilote avec votre coéquipier sans que l’IA prenne le relais et ruine votre course.
Lors de la sélection d'un pilote dans le menu des stands, les noms des passagers restent bloqués dans la liste et peuvent être sélectionnés indépendamment du fait qu'ils aient quitté le serveur ou arrêté de voyager avec vous. Cela signifie que vous sélectionnez votre équipier dans le menu des stands, ils quittent le serveur ou cessent de rouler avec vous, mais leur nom reste dans le menu des stands et peut être sélectionné. Cela entraînait plusieurs problèmes: lors de la déconnexion / du ralliement, vous vous retrouviez souvent avec un DNF, et si le nom d'un pilote sélectionné ne fonctionnait plus ou avait quitté le serveur, l'IA prenait le relais. Nous avons résolu ce problème en supprimant simplement tous les pilotes de la liste des stands qui ne vous accompagnent plus (comme cela aurait dû être le cas depuis le début).
Les déconnexions alors qu'un autre pilote est en train de rouler, en attente d'un échange de pilote ou juste après en avoir terminé un, aboutiraient à un DNF lors du ralliement. Par exemple, vous conduisez sur une piste, votre coéquipier est avec vous et vous obtenez une déconnexion. Au moment de vous rejoindre, vous ne pourrez plus courir et le nom de votre coéquipier apparaît maintenant dans la liste en tant que pilote avec un DNF. Nous avons corrigé ce problème en veillant à ce que, lorsqu’il est déconnecté / rejoint seulement le pilote actuel conserve la voiture, tous les autres coéquipiers restent simplement enregistrés en tant que «passagers» et ne sont pas considérés comme un pilote jusqu’à ce qu’un échange de pilote ait lieu.
Un autre problème que nous avons examiné et que nous avons pu résoudre est l’incapacité soudaine de basculer entre les options du menu des stands après avoir rejoint le groupe. C'était particulièrement un problème si vous rencontriez une coupure avec très peu de carburant et ne pouviez pas demander plus de carburant lors du prochain arrêt au stand, vous finirez par manquer de carburant et terminez la course avec un DNF. Toutes les options de menu de stands en voiture autorisées doivent maintenant être ouvertes à la sélection lors de la réinscription.
Dans le cadre de notre processus de profilage en cours basé sur les journaux envoyés par les utilisateurs, nous avons également découvert que les fonctions d'API «en temps réel» fournies par Steam pouvaient causer de petits problèmes. Nous avons techniquement résolu ce problème en internalisant le plug-in d'origine et en nous assurant d'exécuter de telles fonctions sur un thread d'arrière-plan afin qu'elles ne puissent jamais interférer avec notre boucle physique. Cette modification est effectuée à la fois côté client et côté serveur et cela signifie que vous ne verrez plus un fichier SteamPlugin.DLL dans votre dossier de plugins (et nous nous sommes assurés que s'il est toujours là par accident, il sera ignoré à partir de cette version).
Enfin, nous avons également passé du temps à définir et à optimiser le processus de chargement des circuits et des voitures. Les tests internes ont montré des améliorations de l'ordre de 30 à 50%, ce qui devrait aider les gens en général. Un chargement plus rapide signifie évidemment que vous pouvez rejoindre le groupe plus rapidement et perdre moins de temps.
La version 1114 est la première des deux versions planifiées destinées à résoudre les problèmes rencontrés. Nous avons décidé de scinder le processus en deux, en nous concentrant d'abord sur les bugs majeurs, puis en abordant les plus petits. Nous avons pensé qu’il était important que tout le monde soit mis à jour le plus rapidement possible, mais seulement après s’être assuré que nous ne pourrions plus briser cette structure. Comme toujours, nous encourageons les utilisateurs à mettre à jour leurs serveurs et clients dédiés et à signaler les problèmes éventuels. Nous sommes fermement résolus à corriger cela et à continuer d'améliorer l'expérience en ligne de rFactor 2. Nous espérons pouvoir faire le point sur ces problèmes le mois prochain, mais encore une fois, nous prendrons tout le temps nécessaire pour nous assurer que ces problèmes mineurs seront aussi complètement résolus.
Une idée, une erreur, une suggestion? N’hésitez pas à laisser un commentaire!