BlizzCon 2017 - CodeCraft : Deux conférences passionnantes sur la programmation chez Blizzard

Lona | 07/11/2017 à 13h11 - 14

Voici le résumé d'une conférence pas comme les autres: aller dans les détails du développement chez Blizzard, que ce soit les jeux directement, les outils utilisés, le recrutement dans la programmation... Un article pas comme les autres et technique, pour les érudits des langages de programmation.


Développement chez Blizzard

  • Un des meilleurs moyens de décrocher un job de développeur chez Blizzard est d'avoir un portfolio qui contient des projets terminés. Cela peut être de petits projets, mais il est plus important qu'ils soient terminés que gros.
  • Si vous ne trouvez pas une offre d'emploi qui correspond parfaitement à votre profil, ce n'est pas grave; essayez quand même. Blizzard veut recruter des personnes formidables, même s'ils n'ont pas le poste particulier pour vous. Vous trouverez une place chez eux si vous excellez et êtes passionné.
    • ...et ne laissez pas tomber si la première tentative échoue. De nombreux employés n'ont pas décroché leur emploi du premier coup.
  • Casser quelque chose, ce n'est pas la fin du monde. Le plus important, c'est d'identifier et régler le problème le plus vite possible. Il n'y a pas de stigma sur les développeurs qui créent un bug.
  • La société possède des bureaux à Irvine en Californie, Austin au Texas, Cork en Irlande et Versailles en France. Ils utilisent beaucoup la visioconférence et essaient d'organiser des meetings où les horaires des participants sont raisonnablement accessibles: un peu plus tôt pour certains, un peu plus tard pour d'autres.
  • Les outils de review de code et de source control sont définis par équipe chez Blizzard. Bien qu'il n'y ait pas d'outil global à toute la société, il y a toute de même certaines équipes qui partagent leurs outils, comme l'équipe Battle.net (Android, iOS, PC).
  • La diversité est très importante pour Blizzard, dans leurs jeux comme en interne. La société s'assure de valoriser le recrutement des femmes, particulièrement dans l'ingénierie. En 2018, il y aura aussi une journée "Women at Blizzard" qui sera une bonne opportunité pour parler des sujets de la diversité [qui couvre de nombreux autres domaines, ndlr].
  • Blizzard reçoit beaucoup d'attaques de déni de service. Ils travaillent beaucoup avec les fournisseurs d'accès à internet pour essayer de limiter les effets pour les joueurs au maximum.
  • Il peut être difficile de ne pas trop travailler chez Blizzard, surtout quand on est un passionné des franchises de la société. Mais cela n'est ni bon pour les employés, ni pour la société, car cela n'est pas quelque chose qui peut marcher sur le long terme: les développeurs ne peuvent pas travailler tout le temps à 150%. Du coup il est important de s'imposer du temps "off", où on prend du temps pour jouer, faire des activités extra-professionnelles, ...
  • Les équipes de développement sont aussi responsables du statut du jeu en production. Les équipes d'opération (DevOps) sont en général intégrées directement dans les équipes de développement. Cela permet de garder une grande attention aux bugs en production, car l'équipe doit du coup être responsable des potentielles alertes que le jeu génère.
  • Les données des jeux sont séparées dans différentes base de données, ainsi, si un gros événement survient sur un jeu, cela n'impacte pas les autres franchises. Cela paraît être une évidence, mais il faut y penser tôt dans le développement car il est beaucoup plus dur de faire cette transition plus tard.
  • Les jeux doivent être le plus stable possible, et si une petite partie du jeu ne fonctionne pas, le jeu devrait toujours pouvoir fonctionner sur le reste. Blizzard développe ses franchises de cette manière, afin d'avoir une dégradation de service progressive et non totale lorsqu'un élément de l'architecture ne fonctionne pas.
  • Blizzard participe régulièrement sur des projets open source, comme RabbitMQ, Qt, ... en envoyant des patchs correctifs ou de nouvelles fonctionnalités.
  • Il peut être difficile d'introduire un nouveau langage de programmation dans un projet existant (par exemple: Rust). En général, cela est fait sur les nouveaux projets ou services, mais il est risqué de faire cela pour le code déjà développé.


Plateforme Battle.net

  • La plateforme utilise du SQL classique, mais certaines équipes utilisent aussi parfois des données non normalisées (NoSQL). Chaque équipe est libre de choisir son implémentation, c'est vraiment au cas par cas.
  • Une partie du code de la plateforme est disponible et partagé par multiples jeux pour éviter de réécrire le code plusieurs fois.
  • Lors de la sortie de la version 2.0 de Heroes, l’équipe interne voulait offrir des loot boxes à tous les joueurs qui se connectaient au jeu. Cela allait augmenter le nombre de requêtes sur la plateforme par plus de 100 fois leur plus gros pics de connexion jamais connus. Conséquence: ils ont du faire des tests de charge, modifier l'architecture pour pouvoir absorber ces nouvelles requêtes...


Overwatch

  • Le jeu est déployé en utilisant le déploiement rouge/bleu. C'est un système qui possède deux environnements de production en parallèle, ce qui permet de déployer la nouvelle version du jeu entièrement sans impacter celle qui tourne actuellement, puis de basculer sur la nouvelle version après que les tests ont été effectués. C'est aussi un moyen pour ne pas avoir de maintenance qui impacte la disponibilité du jeu.
  • Pour garantir une latence faible sur le jeu, l'équipe dépend de l'infrastructure globale de Blizzard qui possède des datacenters partout dans le monde aujourd'hui, ce qui n'était pas le cas aux débuts de la société. Ils travaillent également énormément avec les fournisseurs d'accès à internet pour router les paquets le plus tôt possible pour pouvoir absorber des millions de connexions simultanées avant même qu'elles n'arrivent en situation réelle.
    • La collection de statistiques est primordiale pour pouvoir détecter les points faibles de l'infrastructure et réagir en conséquent. Blizzard a ajouté énormément de code d'analyse du réseau à cet effet dans les derniers mois/années.
  • Overwatch tourne sur deux clouds différents: un, privé, développé par Blizzard, et un autre, public. Cela leur permet d'être disponible à des endroits dans le monde qui ne seraient pas disponibles autrement car la société n'a pas de datacenter dans ces régions.


World of Warcraft

  • Quand un joueur acquiert une pierre mythique, des informations supplémentaires sont enregistrées avec: niveau de la pierre (dépendant du niveau de pierre maximal que le joueur a atteint), affixes, dans quelle instance la pierre peut être utilisée. Les différentes possibilités sont définies par les designers chez Blizzard, mais la combinaison exacte est aléatoire. Quand la pierre est appliquée à un donjon, le système envoie ces informations à tous les autres systèmes pour qu'ils modifient le comportement du jeu en conséquence. Par exemple, de nouveaux effets peuvent se déclencher à la mort des ennemis, etc. Chaque entité d'un donjon reçoit les effets de la pierre au moment de l'évaluation des effets des sorts, attaques, défenses, ... et peut modifier le résultat en conséquent. Cela fonctionne aussi au moment de donner les récompenses.
  • L'équipe a beaucoup appris du système rouge/bleu d'Overwatch. Une mise à jour qui pouvait prendre jusqu'à huit heures auparavant prend dorénavant seulement une à deux heures. Pour permettre cela, l'équipe installe la nouvelle version en parallèle de la version actuelle, désactive l'accès à l'ancienne version, vérifie que la nouvelle version se lance correctement, puis active l'accès à la nouvelle version.
  • L'intelligence artificielle d'Overwatch utilisée pour créer une partie avec des bots sera réutilisée pour générer des combinaisons intéressantes pour les joueurs qui visitent les îles inexplorées et éviter la répétition des parties.


Heroes of the Storm

  • Au début, l'intelligence artificielle était un énorme fichier scripté d'automate fini (state machine) sans hiérarchie et avec 200 états possible. Un ingénieur a travaillé sur celui-ci pendant un an pour que l'intelligence artificielle génère des comportements basés sur les objectifs; ces objectifs sont construits dans des unités de science dynamiquement en regardant la carte pour faire ses décisions.
  • Le match making du jeu est basé sur de l'apprentissage automatique (machine learning): le jeu analyse les matchs à haut rang pour déterminer qu'est-ce que les joueurs devraient faire dans une partie, et se base sur ces informations pour évaluer les joueurs et les placer dans des groupes qui jouent similairement.


Support client

  • L'apprentissage automatique (machine learning) est utilisé pour déterminer quels articles de l'aide Blizzard pourraient correspondre à une question posée par un utilisateur. Quand ces articles répondent effectivement à la question et sont validés par les représentants du support, ils sont alors proposés directement sur la page de support.


Diablo

  • Lors de la sortie du Nécromancien, Blizzard avait pré-chargé les fichiers de configuration de la boutique Blizzard en jeu avec les données du Nécromancien. Cela n'était pas un problème car les serveurs qui lisaient la configuration ne savaient pas ce que le Nécromancien était donc ne le renvoyait pas aux clients. Néanmoins, cela générait de nombreux messages d'avertissement dans leurs outils d'analyse, du coup pour éviter ces messages un ingénieur a eu l'idée de modifier les serveurs en production pour qu'ils gèrent ce cas particulier avec seulement deux lignes de modification de code. Bien que la correction était simple, elle a immédiatement impacté tous les achats en Chine: plus personne ne pouvait faire d'achat sur la boutique en ligne. Cela a pu être rollback relativement rapidement, mais l'apprentissage de cet événement a été: testez toujours, même si la modification paraît être bénigne.
  • Il y avait un bug dans le code de vérification des clés: parfois la clé était enregistrée sur 64 bits, mais le code l'évaluait avec des valeurs exprimées sur 32 bits. Parfois, la clé correspondait à un autre compte (sur 32 bits) qui était banni, ce qui renvoyait un message "Votre compte a été banni.", ce qui n'était évidemment pas vrai.
14 commentaires - [Poster un commentaire]


Chargement des commentaires...

Poster un commentaire

Vous devez vous identifier pour poster un commentaire.
Nombre de visites sur l'accueil depuis la création du site JudgeHype : 146.270.946 visites.
© Copyright 1998-2024 JudgeHype SRL. Reproduction totale ou partielle interdite sans l'autorisation de l'auteur. Politique de confidentialité.