Comme la seule ligne de code ancien pendant six mois a rendu les développeurs de MMORPG fous


Le plus souvent, les développeurs de jeux peuvent entendre une phrase très simple: il est surprenant que les jeux sortent généralement. Les jeux sont des monstres compliqués et indomptés reliés par une sorte de ruban électrique numérique. Pas étonnant qu'ils se désagrègent.

Aliens: Colonial Marines était problématique pour de nombreuses raisons, mais est rapidement devenu une risée lorsque des clips viraux similaires sont apparus dans lesquels des xénomorphes errent inutilement à travers les niveaux. Ce mois-ci, le développeur du mod a découvert que la raison du comportement stupide des «extraterrestres» de l'IA était une erreur dans le code du jeu. (À ce sujet, il y avait un article sur Habr.) Oups. Mais ce n'est pas le seul cas cette année où le jeu s'est avéré humilié en raison d'une faute de frappe sur le clavier. Début 2018, les fans ont découvert que Civilization VI AI attaquait de manière suspecte une religion: il s'est avéré que le mot «céder» dans le code était écrit «yeild» .

Par conséquent, il n'est pas surprenant d'apprendre que dans le développement de jeux est plein de tels moments.

Lea Miller a travaillé pendant plusieurs années en tant que designer dans un ancien développeur de jeux MMO Mythic Entertainment. Elle a été impliquée dans les scripts, le contenu et la conception de systèmes pour Dark Age of Camelot et Warhammer Online: Age of Reckoning . Au moment de la sortie, le studio a commencé à recevoir des plaintes des fans: le jeu semblait lent et ne répondait pas. Les joueurs ne pouvaient pas déterminer quelle était exactement la raison.

Était-ce juste ... une sensation?

«L'équipe de développement a examiné le système de combat pour le rendre plus rapide et a recherché des opérations côté serveur inefficaces qui pourraient être éliminées», explique Miller. "Mais de toute façon, les critiques étaient trop vagues, personne ne pouvait dire exactement quelle était la raison. Était-ce un défaut dans la conception globale du jeu? "De nombreux changements ont été apportés pour améliorer l'expérience de jeu, et même si beaucoup d'entre eux étaient de réelles améliorations, la racine de tous les problèmes n'a pas pu être corrigée."

image

Warhammer Online n'a pas rassemblé un large public et a donc été fermé en 2013.

En fouillant dans le code pendant six mois, l'équipe de développement n'a pas pu trouver de solution.

L'un des programmeurs relativement nouveaux a étudié le code Age of Reckoning et a découvert quelque chose d'étrange. Il avait toujours une ligne du précédent studio MMO, Dark Age of Camelot . Elle manipulait des joueurs sur un dailap. Oui, sur dailap. Dark Age of Camelot a été lancé en 2001, à une époque où le haut débit n'était pas encore la norme. À cette époque, les joueurs devaient s'assurer que personne ne décrochait le téléphone, sinon la connexion serait rompue. (Le jour où ma famille a acheté un modem 56K était magique.)

«Il a travaillé dans l'entreprise assez récemment et ne connaissait pas le code», explique Miller. "Et c'est peut-être pour cela qu'il a étudié ce fragment plus attentivement que les autres avant lui."

Après avoir supprimé la ligne, le problème a disparu. Le jeu redevint fluide.

Que s'est-il donc passé? Les ordinateurs sont puissants de nos jours et Internet est rapide. Mais au début de l'ère des MMO, tout était différent, c'est-à-dire que les jeux devaient faire des compromis.

«Il n'y avait qu'une seule ligne dans le code de réseau Dark Age of Camelot qui ralentissait artificiellement la fréquence de transmission d'un certain type de données par le client et le serveur», explique Miller. «Je suppose que l'objectif principal était d'optimiser la charge du réseau, mais cela faisait peut-être partie d'un système conçu pour rendre les joueurs se connectant via Dailap compétitifs en PvP. Ce retard était presque invisible pour les joueurs de Dark Age of Camelot , car le combat du jeu était réglé sur la bande passante et la puissance de traitement standard de cette époque. Seul un très petit pourcentage de joueurs disposaient de systèmes capables de traiter les données plus rapidement qu’elles n’étaient envoyées et reçues.


Contrairement à Warhammer Online, Dark Age of Camelot est toujours à flot.

Pendant le développement de Dark Age of Camelot, son code réseau a également évolué et a été engagé dans des fonctions telles que la gestion des valeurs de latence de pointe, la connexion aux serveurs et d'autres tâches. Après une décennie de Dark Age of Camelot , Mythic a décidé de porter le même code sur Age of Reckoning .

Il s'est avéré qu'il a cassé la fonctionnalité dans un endroit complètement inattendu.

Au moment où Mythic a résolu le problème, la plupart des joueurs étaient revenus sur World of Warcraft . Ce bug n'était pas la seule cause des problèmes d' Age of Reckoning , mais il y a contribué.

Miller m'a écrit lorsque j'ai demandé publiquement à Twitter de raconter d'autres histoires horribles, même si les exemples ne concernaient pas seulement des absurdités telles que des fautes de frappe. La discussion a coïncidé avec des discussions dans d'autres cercles après l'incident avec les Marines coloniaux , et je voudrais partager les histoires les plus marquantes.


Brian Sharp: littéralement chaque fois que j'écris le mot «a c quired», je fais l'expérience d'un flashback post-traumatique avec Deus Ex 2, dans lequel nous avons nommé par erreur le dossier de ressources AquiredDataText, et nous n'avons pas pu le renommer. J'ai dû écrire aquired pendant trois années consécutives.


Dempsey's Trick: Juste avant la sortie de Red Dead Redemption: Undead Nightmare, l'itérateur du script d'appât zombie dynamite n'a pas commenté la ligne qui dirigeait les acteurs directement vers l'appât. Par conséquent, elle a soudainement commencé à travailler sur Marston lui-même (le personnage principal).
Une touche d'intrigue inattendue!


Matt Lacey: J'ai sorti un jeu PSP (c'est-à-dire sans possibilité de le patcher), qui plantait complètement si l'année était une année bissextile ...


Ailey: les fautes de frappe qui restent dans le code pour toujours sont INCROYABLEMENT courantes. De plus, très souvent, ils sont difficiles à éliminer, car pour ne pas ajouter de nouveaux bugs, vous devez tout renommer d'une seule manière. C'est pourquoi dans le logiciel médical sur lequel je travaille, le mot Su rig cal est utilisé partout (au lieu de Su rgi cal).


Andrew Eike: Une fois que j'étais à une démonstration sérieuse, j'ai cliqué sur un bouton avec les mots "maintenant vous verrez une boule bleue", et une énorme boule verte est apparue. J'ai oublié d'appliquer la fonction. J'ai essayé de discuter de ce fichier, mais personne ne l'a acheté.


Dolph Ziegler: Il y a quelques jours, @cukiakimani m'a informé que le jeu Semblance a soudainement commencé à fonctionner à 19 images par seconde.

Il s'est avéré qu'une ligne de mon code dévore 41 FPS. Je pense que c'est absolument incroyable.


Essayer de son mieux: j'avais un projet qui devait être terminé avant minuit, mais il ne fonctionnait pas correctement. Il ne restait qu'une heure, j'attendais l'assistant du professeur depuis trois heures et j'étais prêt à pleurer. Finalement, l'assistant est venu, a regardé mon code pendant une demi-minute et m'a dit de changer une variable sur une ligne. Tout fonctionnait parfaitement.

Je voudrais souligner une faute de frappe qui vient de faire exploser mon cerveau .

Enfant, j'étais obsédé par Super Mario 64 . C'était le premier jeu auquel je jouais en japonais, grâce au magasin d'importation, situé à côté du cinéma, auquel nous allions souvent. (Ils ont pris de l'argent aux gens pendant une heure pour jouer une copie importée du premier jeu de plateforme 3D sur Mario! Et cela en valait la peine.) Quand j'ai finalement réussi à obtenir ma propre copie de Super Mario 64 à la maison, j'étais l'une des nombreuses personnes qui ont collecté 120 étoiles et recherche Yoshi se demandait pourquoi il était si incroyablement difficile de nager à travers les anneaux sous-marins. Et la raison a été trouvée!


Vincent Kinian: Ce bug peut être vu dans plusieurs jeux sur Mario. Chez Super Mario Bros. Lakitu était censé lancer des tortues épineuses épineuses directement sur le joueur, mais cela ne s'est pas produit en raison d'une faute de frappe dans le code. Et il y a ce bug dans Super Mario 64: https://t.co/GddMkpMZh4 .

Génial. Il n'est pas clair comment les jeux vidéo existent même.

Source: https://habr.com/ru/post/fr418829/


All Articles