Extrait de l'émission CPU release Ex0118 : Logiques, stratégies et jeux.
« Civilization » est un jeu de plateau créé par Francis Tresham en 1980 qui met en scène le bassin méditerranéen. Chaque joueur prend en main les destinées d'une civilisation antique, tentant de la faire progresser malgré les calamités et les guerres avec les autres joueurs. Le chef de tribu peut faire progresser son peuple en jouant de la diplomatie, du commerce et du progrès scientifique. Le jeu a connu quelques extensions, demandant plusieurs tables et bien plus qu'une après-midi pour y jouer.
Le jeu de plateau sera adapté sur ordinateur en 1991 par Sid Meier, d'abord sur IBM PC, et très vite porté vers une multitude de plateformes allant de l'Atari ST à la Super NES. Si une bonne partie des principes du jeu de plateau y sont adaptés, la première version de ce jeu se jour exclusivement en solitaire, les opposants sont en fait des adversaires logiciels à l'image d'une personnalité historique de la civilisation qu'il contrôle.
Ainsi Gandhi représente l'Inde, et à l'image de la personnalité historique, son script est le plus pacifiste possible, cherchant le plus souvent à négocier plutôt qu'à guerroyer.
Au fur à mesure que la partie avance, de nouvelles technologies sont découvertes et les armées sont plus en plus puissantes. Afin d'équilibrer les forces et donner une petite chance à l'humain, les caractéristiques d'agressivité des leaders logiciels sont réduits pour éviter que ceux-ci ne se montrent trop agressif. Ce score est représenté en interne par un octet, allant donc de 0
à 255
.
Plantage !
Après une dizaine d'heures de jeu, lorsque le joueur humain atteint l'avancée technologie Démocratie
, Gandhi devient brutalement violent, cherchant à acquérir le plus vite possible les technologies nucléaires pour asservir les autres civilisations.
Le code appliquant la réduction tente de soustraite 2
à une valeur de 1
, et l'applique sans vérification. Le résultat attendu serait de -1
, mais on obtient 254
avec un octet non-signé, un classique bug de dépassement d'entier.
Et du coup, l’agressivité de la persona pacifiste.
Ce revirement fonctionnel n'a pas été vu lors des tests, et fut découvert par les joueurs pris au dépourvu par un tel revirement.
Sid Meier a considéré un premier temps ce comportement comme un bug, ce qu'il est, effectivement. Mais quand de nouvelle versions du jeu furent mis en chantier, ce twist rigolo fut gardé comme feature
, et le personnage eut un surnom officieux de Nuclear Gandhi
.
Une bonne leçon de stratégie laissée par l'équipe de Sid Meier : Il faut toujours se méfier de l'eau qui dort.
Texte : DaScritch
Illustration : Civilization VI has been announced! with more Warlord Gandhi, par theyseemescrolling (?) via imgur D.R., détail