recent

recent

C'est Quoi Ca ? L’architecture de Destiny

Le dernier CQC portail sur les fusils de précisions. Cette fois ci je tape sur le haut de la pile, je me rend au dernier étage, au delà, ... c'est la galaxie

Je vais tenter de vous expliquer l'architecture technique de Destiny.
Comment, et pourquoi ça fonctionne ainsi.
Qu'est ce qui a motivé les "builders" à faire ces choix et à les mettre en oeuvre.

Le tag [ Jm'Explique ] est un passage durant lequel j'essaye d'être clair. Si là aussi, vous ne pigez pas un broc de ce que je raconte, allez donc faire un tour sur Minecraft :)



Allez ... FEU !

Les FPS Consoles comme COD ou Halo sont basés sur une architecture "peer-to-peer" qui consiste en gros à ce que les joueurs s'échangent des informations. C'est du flux direct entre un point A (un joueur) et un point B (un autre joueur)
Les serveurs servent alors à organiser tout ce beau monde et à diffuser l'information "transverse" (commune à toutes et à tous).
Je prends, je donne, il prend, il donne. Nous prenons, nous donnons ...

Bungie, disposant d'une bonne expérience en la matière (Halo), a décidé d'inventer la poudre en créeant  un système hybride puisque Destiny, ce n'est pas "que" du PvP, et n'est pas "que" un système PvE co-op.
Cette architecture consiste à avoir créé beaucoup de serveurs et de les avoir envoyés dans le Cloud
Chacun d'entres eux a rôle et une capacité à héberger "n" joueurs simultanément. Ces bécanes sont ainsi exploitées par des milleurs de "bulles" (j'explique plus bas) organisant des scripts qui s'executent en boucle jusqu'à que Bungie procède à une maintenance.
En gros il tourne tout le temps.

[ Jm'Explique ]

Prenons un Warzat sur Mars. Que la zone concernée, sur le serveur concernée, soit visité ou pas par des joueurs, le Warzat se déclenchera comme prévu.

Il existe donc des serveurs dédiés à la gestion des Missions quotidiennes, d'autres aux Assauts Épiques, d'autres à la Nuit noire, d'autre aux espaces sociaux (Tour, Récif, Phare) et bien évidemment, d'autres aux Raids.

La règle de taillage montage est de 10 000 joueurs par serveurs.
Ce qui peut vouloir dire qu'ils sont organisés en "cluster vituel" (VMWare par exemple) et que des serveurs s'ajoutent et/ou se retirent automatiquement en cas de FORTE fréquentation ou inversement CHUTE de la fréquentation.
[ Jm'Explique ]
Dit plus simplement, au début de l'an 2, le nombre de serveurs devaient être conséquent tant dis qu'avant la màj d'Avril, il devait avoir été réduit.

Voilà une des 1ères explications de pourquoi Bungie ne prend pas directement en charge l'hébergement de leurs infrastructures.
Si on dit que Destiny c'est plus de 20 000 000 de gamers cross plateformes, et si on divise bêtement ce chiffre par 10 000 ...  on a donc plus de 2 000 machines virtuelles et/ou physiques à héberger, superviser, exploiter. C'est énorme

Ps : je travail dans un grand groupe international qui plug un CA de plus de 5 Milliards / an, et nous n'avons "que" 600 machines à gérer

The big one truc qui fait la diff dans leur système est le changement constant de hôte de partie ...
Sachez que sur PS4 par exemple, il est observé qu'un joueur change de hôte environ toutes les 160 secondes

Bungie atteste que les joueurs ne se rendent pas compte de se switch régulier de rôle d'hébergeur, hébergé. C'est pas faux. L’écran ne scintille pas, pas de message qui l'indique MAIS ...

Pour en revenir à leur cible, Bungie voulait un jeu d'action à Co-Op permanente Et avec la possibilité d'y croiser des étrangers (d'autres joueurs) ainsi qu'un liberté d'exploitation.

Par point, j'essaye alors de vous donner la mécanique de ...Accrochez vous

Jeu d'action :
Ils se sont clairement inspirés d'Halo du point de vue du ressenti. Cette culture FPS (qu'on peut retrouver aussi dans Call Of), cette nervosité, l'effet de style etc ...
C'est même sur la base technique d'Halo qu'ils ont commencé à monter l'AT (Architecture Technique) de Destiny. Ils voulaient que le joueur soit au coeur de l'action et qu'il ait l'impression d'être unique dans sa manière d'aborder le gameplay.


Co-op permanente :
L'idée principale est de pouvoir tout partager avec ou sans ses potes
Que la progression de l'un, n'influe pas sur la progression de l'autre, etc etc ... Tout ça, il faut que l'architecture le pense et le traite.

[ Jm'Explique ]
Je suis sur la Lune un Event se lance. Si mes potes ne sont pas dans mon escouade, mais qu'ils sont sur la Lune aussi au même endroit, il y a de forte chance qu'ils ne vivent pas la même chose que moi
SAUF Si  ... comme par miracle ils ont rejoint le serveur sur lequel je suis :)
C'est d'ailleurs une pratique fréquente sur le Cuirassé pour faire de la cours d'Oryx.
Tiens, un exemple ... que ce passe-t-il à cet instant là ?

J'arrive sur le Cuirassé, je suis donc sur un serveur qui gère la zone sur laquelle je suis (par l'intermédiaire de bulles publiques ... calmes toi, je m'explique plus bas)
Je me dirige vers la Cours d'Oryx, j'ai un petit chargement : Je suis en train de changer de serveur qui a pour rôle de gérer la Cours d'Oryx

Croiser des inconnus :
On pense que c'est simple mais non, ça ne l'est pas !
Je suis en Mission sur Venus (donc sur un serveur) et j'y croise un ou des mecs qui sont là pour quelques choses de complètement différent. J'ai l'impression qu'ils sont en exploration ces cons là ! (donc sur un autre serveur)
Ca veut dire qu'il y a des zone commune ?! Et oui ils sont en train de traverser une zone "transverse" qu'on appelle "bulle publique" (susceptible d'être utilisée par une mission ou un assaut) du coup, au sein d'une mission du jour ou d'un assaut, je peux switcher d'un serveur à l'autre. Ce qui me permet de croiser des inconnus
On n'y fait pas gaff, mais c'est tout de même quelque chose

Liberté d'exploration :
Ce point aussi n'est pas "rien". Contrairement à une Co-op disons traditionnelle sur laquelle on oeuvre à plusieurs d'un point A vers un point B, sur Destiny, à cause ou grâce à ce que j'énumère plus haut, en pleine assaut, mission ou autre (sauf PvP) on peut décider de faire autre chose (farming de ressources, contrats journaliers etc)
Là aussi l'architecture est pensée et structurée pour permettre ça.

Ces 4 points constituaient le cahier des charges de Bungie pour le design de l'architecture. Vue que je parle au présent, il est facile pour moi de faire le constat de réussite ou d'échec de ces choix.
Il faut simplement ajouté de l'honnêteté dans tout ça.

Sachez que Bungie pense Destiny en 2010 avant même que la X1 soit annoncée.
L'architecture quant à elle a été mise en oeuvre en 2014. A ce moment là et pendant cet intervalle là, la technologie avait un certain avancement, une certaine maturité
Les lois de sécurité et de compression réseau étaient ainsi faits mais depuis, tout cela à bougé.

Et c'est quoi ces bulles alors ? 
Des bulles dictant des règles de répartition et de synchronisation (!!!)
Ce qui permet à votre esquade d'être ensemble sur Terre mais de jouer sur plusieurs serveurs différents. (?!)
Ces Bulles sont ces éléments qui font l'organisation des gamers dans le monde Destiny et l'interraction qu'ils ont avec l'environnement, les modes, les séquences (!!!)
Une instance publique qui organise une zone de 6 Joueurs et 25 ennemies pourrait être multipliées par 1 000 000 cela était nécessaire (franch'ment même moi en me relisant ...)


Sur ce schéma, on imagine le parcourt d'une mission avec des bulles publiques (on y croise d'autres joueurs) et privées (mon esquade et moi).  Le tout, dans un environnement qui peut nous amener à faire autre chose (un assaut, une patrouille, etc ...)

Repartez avec ça : Une bulle englobe une zone qui peut contenir "n" joueurs et "n" ennemie et "n" scripts d'actions.
Une fois la bulle pleine, vous consommerez une autre bulle (remarquerez que vous n'avez pas très souvent plus de 25 ennemies apparents là où vous êtes)

Les serveurs sont dédiés à des rôles, ils peuvent accueillir 10 000 joueurs. Ces joueurs consomment des bulles contenant des scripts

D'un point de vue réseau et rôle sur le réseau, ces instances (les bulles) ont-elles un patron ? Un Hébergeur à la Halo qui host pour d'autres joueurs ?
En fait, non pas comme ça car le Host qui se déconnecte peut foutre un sacré bordèle (écran noir, perte de la sauvegarde en cours, perte du loot, etc)
C'est là que les 160 Secondes en moyennes de switch de host ré interviennent
Nous changeons tout le temps de host quand nous sommes dans ces "instances".

Parfois, la migration du host se passe sans problème, parfois ça se ressent un tout petit peu.
Quand tout es ok, le changement commence sa préparation 10 Secondes avant le point de migration. Le transfert est alors fluide, le joueur ne se rend compte de rien.
Le pire des cas, c'est si, le nouvel host déconnecte de la game (disons une déconnexion réseau violente) au moment de la migration. Là, on peut ressentir une latence de 10-15 secondes avant que le jeu ne nous redirige ailleurs. Ce qui peut aussi, planter le décor (au sens propre)
Ca pourait foutre en l'air un event sur lequel vous étiez ou autre activité interactive avec le jeu.

[ Jm'Explique ]
Je suis dans un Assaut d'Omnigule. J'enclenche l'ouverture de la porte qui me mène à elle
J'arrache mon câble ethernet. Alors que la bulle que je partage avec les autres joueurs, enregistre le fait que l'hôte a bien ouvert la porte, c'est tout à fait possible que les autres ne reçoivent jamais l'info et se retrouvent bloqués devant une porte "virtuellement" fermée mais pourtant ouverte dans le script.

Heureusement, en faisant ce choix de mécanisme, Bungie a réussi à régulier "au mieux" la répartition des hosts afin d'éviter le pire à chaque fois qu'un con se déconnecte brutalement de sa console

Ce principe de "bulle" fait du Caveau de Verre un Raid unique en sont genre
En effet, la bulle qui gère l'ouverture du Caveau est publique. C'est la raison pour laquelle vous pouvez y croiser d'autres joueurs qui ont autre chose à faire.
D'ailleur puisqu'elle est publique cette bulle, les scripts dits d'actions (ceux qui permettent de déclencher des choses) sont publiques également.
Si l'esquad de 3 que vous croisez arrive à construire le monolithe vous verrez bel et bien le Caveau de Verre s’ouvrir. par contre, la bulle publique ne va pas bien loin ensuite, mais ça ... vous le savez certainement

Hey si vous avez suivi le principe des bulles publiques/privées avec un désigné "host" qui enclenche les scripts d'actions.
Ca ne vous fait pas penser à des bugs à la con qu'on a tous exploité un jour ?


Au début du raid de La chute de Cropta, l'hôte de la session déconnectais le jeu au moment où Cropta mettait un genou à terre
Le Script d'action pétait un plomb et c'était arrêté à "C'est bon, l'autre grand con est au sol, vous pouvez l'allumer"
Mais ne donnait jamais la main au script qui disant "Wouoh ! C'est bon, il est debout, un a un shield vous pouvez faire poper les ennemies"


Je terminerais par ce résumé.
En PvE, Bungie a réinventé une poudre jusqu'ici pas trop mauvaise mais qui limitait les développeurs à aller bien loin. Le procédé est unique et ce système de swtich de host, de répartition de serveur rôle, de bulles publiques et privées et de scripts d'actions
Il faut le dire : ça fait le job.
Malheure aux petits malins qui ont compris le fonctionnement exacte de certains scripts actions :)

Au sujet du PvP, bien que les serveurs Bungie organisent les sessions, gèrent la synchronisation des événements transverse, c'est bel et bien en Peer-to-peer que le gros du gros se produit.
On dépend donc encore de la bonne ou de la mauvaise connexion des participants.

Soyons clair, ceux qui un mauvais PING vont galérer ... pardon à l'échelle humaine, pour qu'un PING soit distingué il faut qu'il dépasse les 1 000 millisecondes ... On est tous des mytho avec nos ping à 200ms soit disant inacceptables !
Donc pour jouer à Destiny et avoir le droit de contribuer à la diffusion d'une partie, une ligne de 1 mega, suffit ^^

Par contre, si ..; dans la session, des gens ont moins OU mettent moins à disposition (rappelez vous, principe du Peer to Peer, je donne et je prend) et bien ils risque de mettre un certain temps (encore une fois à l'échelle humaine ...) à synchroniser leurs infos
Ceux qui ont une grande capacité à emmètre/recevoir vont à peine s'en rendre compte, tant dis que ceux (1mo) à la connexion capricieuse, vont avoir beaucoup de mal et par ricochet, finirons par, à leur tour, envoyer de l'information à retardement.



Question : Les mecs qui s'amusent avec le lag Switch... en plus de s'avantager ... ils ne seraient pas en train de foutre un bordel pas possible ??
Tout à fait mon cher petit mec !!
Puisque le mec diffuse de la merde à qui en a besoin

[ coucou je suis là, devant cette caisse je suis en train de faire un tripple saut avec mon chasseur abyssale et je porte une doctrine du passage, ma vie est full ...]

celui qui l'a reçoit, va la partager à son tour

{ j'ai croisé un chasseur abyssale avec une doctrine il est à côté de la caisse // à non il est devant la caisse et il me tir dessus // a nan il est en train de sauter et il se déplace } 

va également diffuser de la merde

( un mec m'a dit qu'il venait de croiser un chasseur abyssale et qu'il était en train d'aller vers ... non attend ... il sautait enfin pas sûr AH ? ! je le vois il est contre un mur ) 

Repartez avec ça : Ce n'est pas la taille de la ligne qui fait la co' dans Destiny. C'est sa Stabilité
D'où le fait que les mecs pratiquant le Lag Swtich foutent le bordele grandement
En situation prenons ce qui se produit TRES souvent ...


"Il tire à travers les murs"

A ce moment là il y a une différence entre ce que vous voyez et ce que votre opposant voit. C'est tout.
Lui vous voit à côté de la caisse et vous tir dessus.
Vous, vous êtes derrières la caisse. Cette information n'est pas encore synchronisée OU elle est intervenue après celle de l'adversaire.


"Attention, Connexion au serveurs Destiny"

Soit vous avez un Upload instable et en baisse à cet instant
Soit beaucoup d'informations se sont retrouvées désynchronisées et stockées après avoir été libérées d'un coup.
La fibre optique s'en tape royalement, quant aux connexion <2Mo, elles ont la capacité à recevoir ces informations MAIS elles ne l'ont pas à confirmer la reception au serveur
"C'est bon j'ai reçu l'info qui disait que les lourdes étaient dispo"
"C'est bon j'ai reçu l'info qui disait que mon collègue m'avait vengé"
"C'est bon j'ai reçu l'info qui dit qu'un ennemie approche mon secteur"
"C'est bon, j'ai reçu l'info qui dit qu'un mec me scope et me tir dessus et que je suis weak" ... a merde top tard !!!


J’espère avoir été clair dans ce que j'ai tenté d'expliqué. Si vous n'avez rien entraver àc e que j'ai écris : tant pis pour vos tronches.

En vrais, posez moi la question j'y répondrais si je comprends la question.

Mes sources : mes différentes lectures ici et là + un rapport d'intervention d'un architecte technique de chez Bungie.
C'est Quoi Ca ? L’architecture de Destiny Reviewed by Scalap on 09:53:00 Rating: 5

1 commentaire:

  1. Ma connexion 4,4mb/s 356,4kb/s qu'est-ce que tu en penses sachant que ma barre de co sur le jeu a tendance à faire l'ascenseur

    RépondreSupprimer

All Rights Reserved by Destiny by Scalap © 2014 - 2015
Powered By Blogger, Designed by Sweetheme

Formulaire de contact

Nom

E-mail *

Message *

Scalap. Fourni par Blogger.