Dev Jam #19 – Reconnexion

Dans ce Dev Jam, LeftOfNever nous parle d’une fonctionnalité qui est attendue depuis un bon bout de temps : la reconnexion en partie.

 

Pourquoi les déconnexions arrivent

Premièrement, pourquoi les déconnexions arrivent en premier lieu? Tout tourne autour des données… Comme vous le savez, Robocraft est un jeu en ligne de combat de robots fait de pièces et de cubes. Robocraft a besoin que beaucoup de données transitent entre votre ordinateur et les serveurs de jeu quand vous êtes en train de jouer, Les robots que vous construisez sont stockés sur les serveurs et sont livrés à vous (le client) quand vous jouez au jeu, récupéré des robots depuis le CRF (L’Usine), ou les éditez.

Chaque cube est de la donnée, chaque couleur est de la donnée, la position de chaque cube par rapport aux autres est de la donnée, et combien de dégâts chaque cube ou pièce prend est de la donnée. Il y a également une multitude d’autres données qui transitent, comme par exemple la partie sociale (chat, avatars, …) et également très important : votre position sur la carte, la position de vos alliés, de vos ennemis, et les données de tous les cubes des robots a besoin d’être transféré en continu pour assurer une bonne expérience. Ces données doivent rester synchronisée avec le serveur et tous les autres clients, et quand un client n’arrive pas à envoyer / recevoir les données de manière correcte, une déconnexion peut arriver.

 

Diagramme de connexion pour Robocraft

Schéma montrant toutes les interactions pour une partie avec 10 joueurs

Les déconnexions n’arrivent pas à tous le monde; certains joueurs ne se font jamais déconnecter, d’autres de temps en temps, et d’autres encore quasiment tout le temps. Un joueur qui ne se fait jamais déconnecter pourrait quand même être affecté une fois par cela, et cela lui vaudrait un combat perdu.

Robocraft a besoin d’une connexion continue pour jouer; si vous avez un Wifi de mauvais qualité, ou que vous utilisez la 4G de votre téléphone, vous pouvez être confronté à des déconnexions (NDA : OUI, même si vous êtes connecté en fibre ou autre, et que vous avez une connexion « ultra rapide ». Ce qui compte, c’est les données, et si vous en perdez, vous pouvez être déconnecté). Votre position dans le monde / la distance depuis les serveurs peuvent aussi contribuer à vous faire déconnecter, car les données ont besoin de transiter à grande vitesse pendant un combat. Et les développeurs doivent également s’assurer que leur netcode (nom donné au système de réseau pour les jeux en ligne) fonctionne aussi bien que possible, et évite le plus possible ces déconnexions.

Reconnexion

Que vont faire les développeurs pour permettre au joueur de rejoindre la partie s’ils ont été déconnectés? Freejam a promis il y a de cela un bon moment qu’ils introduiraient une option pour se reconnecter, et c’est ce qu’ils vont faire. Si un joueur se fait déconnecter en partie, il aura la possibilité de se reconnecter ou de quitter la partie

Un menu offrant la possibilité de quitter ou de se reconnecter

La partie est toujours en cours
Vous avez été déconnecté de la partie.
Souhaitez-vous la rejoindre?
[Quitter]      [Se reconnecter]

Choisir de quitter la partie, ou ne pas avoir fait de choix avant que la partie s’arrête résultera en une pénalité. Si vous essayez de vous reconnecter à une partie qui s’est terminée, vous serez devant un autre message :

Si vous n’arrivez pas à rejoindre la partie avant qu’elle ne se termine, vous ne recevrez aucune récompense associée à cette partie (NDA : Je suppose néanmoins que ne pas arriver à rejoindre une partie de ligue fera quand même perdre du MMR, pour éviter de l’abus).

Cette partie ne peut plus être rejointe
[Annuler]

Une des questions les plus demandées au sujet de la reconnexion est :

Pourquoi ça a pris autant de temps?  Il suffit juste d’ajouter un bouton, pas vrai?

Malheureusement, non, ce n’est de loin pas aussi simple que de juste ajouter un petit bouton, et d’écrire 4,5 lignes de codes.

L’option de reconnexion a demandé aux équipes de Freejam de réécrire la quasi-totalité de leurs code réseau, et ils ont eut besoin de recruter des codeurs spécialisés là-dedans. Il faut encore ajouter à cela quelques problèmes de développement, bugs, … et cela a pris de plus en plus de temps.

Mais au bout du compte, la reconnexion devrait très bientôt arriver.

 

Réduire la quantité de déconnexions

Ajouter une fonction de reconnexion n’est pas la seule façon de résoudre les problèmes de déconnexions,  les devs travaillent également pour améliorer le netcode afin de tenter de réduire les déconnexions dans un premier temps. Ed de l’équipe travaillant sur Robocraft Royal (EN) [Pour le moment une expérience pour voir si le style de Robocraft mêlé à un mode de jeu Battle Royal fonctionnerait, nous sortirons un article dessus lorsqu’il passera en phase de tests publiques], et Alex faisant partit de celle travaillant sur Robocraft Infinity sont tous deux en train de tester de nouveaux netcodes pour leurs jeux, et si les résultats sont concluants, ils seront ajoutés à Robocraft. L’objectif est d’ajouter le nouveau netcode avant d’introduire la reconnexion.

Quand est-ce que la reconnexion va arriver?

Soon™ 😉 … very soon.

Très bientôt. La reconnexion est en phase finale de test, et une fois que tous les bugs seront corrigés et le nouveau netcode appliqué (si possible), elle sortira.

Pistou

Modérateur en jeu, et sur le Discord, cela fait plus de 2 ans et demis que je me suis embarqué dans cette aventure qu'est Robocraft. Codeur / Bidouilleur a mes heures perdues, je passe également plus de temps sur le chat qu'en jeu.

1 réponse

  1. Aztanox dit :

    Génial c cool ça