バグの説明
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/09 03:32 UTC 版)
伝説によれば、『シヴィライゼーション』における各指導者のAIには攻撃性を1から10のスケールで表すパラメータがあり、1が最も攻撃性が低く、10が最も攻撃性が高かった。他の情報源によれば、1から12のスケールがあった。インドの指導者マハトマ・ガンジーは攻撃性の評価が最も低い1を持つゲーム中唯一の指導者であり、その結果、防衛戦争しか行えなかった。AIが政治体制をインドなどの平和な国が好む民主主義に変更すると、攻撃性が2減少する。ガンジーの場合、これは負の攻撃性である-1に繋がる。しかし、攻撃性は0から255の範囲の値しか格納できない8ビットの符号なし整数型変数として格納されていた。そのため、負の値は算術オーバーフローを引き起こし、値は255として格納され、ガンジーは最も攻撃性の高い指導者の25.5倍の攻撃性を持つようになった。『シヴィライゼーション』の技術ツリーでは、一般的に核兵器は民主主義の後にアンロックされるため、インドが核武装するころには既にガンジーの攻撃性は急上昇していた。これによってインドは突然核ミサイルで他の文明を攻撃するようになった。このバグは後のバージョンで修正されたとされているが、開発者はこのバグをとても気に入ったので、イースター・エッグやジョークとして後のゲームに再実装することにした。他の情報源によれば、このバグは『シヴィライゼーションII』で最初に現れた。 実際には、『シヴィライゼーションII』のリードゲームデザイナーであるブライアン・レイノルズ(英語版)によれば、『シヴィライゼーション』の攻撃性は3段階しかなく、ガンジーのAIは最も低い攻撃性だったが、それは全指導者の3分の1と同じだった。さらに、レイノルズは『シヴィライゼーション』のソースコードの記憶に基づいて、コードのこの部分には符号なし変数はなく、攻撃性が255の指導者は攻撃性が3の指導者と同じように行動するため、指導者は最も攻撃性の高い指導者より攻撃的に行動することはないと述べた。シド・マイヤーによれば、『シヴィライゼーション』と『シヴィライゼーションII』のプログラミング言語であるCとC++では全ての整数型変数はデフォルトで符号ありのため、ガンジーの攻撃性が-1に設定されていてもオーバーフローは発生しなかった。また、政治体制はAIの攻撃性に全く影響を与えないため、ガンジーの攻撃性はゲーム中ずっと同じままだった。戦争中、インドは他の文明と同じように核兵器を使用することができたが、ガンジーがエイブラハム・リンカーンや他の平和的な指導者よりも頻繁に核兵器を使用することはなかった。この伝説の由来の1つとして考えられるのは、インドは平和的かつ科学的性質の文明のためほとんどの敵よりも前に核兵器を発見する傾向があることだ。
※この「バグの説明」の解説は、「核ガンジー」の解説の一部です。
「バグの説明」を含む「核ガンジー」の記事については、「核ガンジー」の概要を参照ください。
- バグの説明のページへのリンク