scholar_vit: (knot)
scholar_vit ([personal profile] scholar_vit) wrote2016-11-26 09:58 am
Entry tags:

Программистское: Махатма Ганди и ядерный апокалипсис

Прочитал интересную статью о баге в игре Civilization. В первой версии этой игры, если среди AI был Махатма Ганди и игра доходила до поздней стадии (с атомными бомбами), то Индия устраивала ядерный апокалипсис.

Причина оказалась следующая. У каждого AI был задан уровень агрессии, на который отвели один байт. У непротивленца Ганди этот уровень был равен единице. На поздней стадии игры цивилизации переходили к демократии, и при этом уровень агрессии понижался на два пункта. Но так как переменная была unsigned, попытка вычесть 2 из 1 давала 256-1=255. После чего гиперагрессивный Ганди взрывал к чертовой бабушке планету.

Баг нашли и исправили, но по традиции во многих версиях игры Ганди в определенных ситуациях (например, при поражении на переговорах) сходит с ума и начинает кидаться атомными бомбами. Этакое пасхальное яйцо для старых игроков.

Иногда мне кажется, что ошибки в наших моделях делают последние гораздо реалистичнее.

vladimir000: (Default)

[personal profile] vladimir000 2016-11-26 03:41 pm (UTC)(link)
В первой цивилизации ядерную войну можно было вести хоть доупора, никакого взрыва планеты не происходило:)

[identity profile] kray-zemli.livejournal.com 2016-11-26 05:09 pm (UTC)(link)
Ядерный взрыв оставлял загрязнения. Если загрязнения долго не вычищать, наступало глобальное потепление. Оно приводило к заболачиванию местности.
vladimir000: (Default)

[personal profile] vladimir000 2016-11-26 05:20 pm (UTC)(link)
Но выиграть-то это не мешало:)

[identity profile] qkowlew.livejournal.com 2016-11-27 08:45 am (UTC)(link)
Глобальное потепление и заболачивание и так наступало, если просто долго продолжать играть после отлёта корабля.

Я как-то развлёкся, взорвав около 2 сотен атомных бомб по городам.
"Неубедительно".

[identity profile] kray-zemli.livejournal.com 2016-11-27 11:07 am (UTC)(link)
Может, у меня версия была другая? Насколько помню, была чёткая связь между глобальным потеплением и квадратиками с Pollution, которые появлялись не только вокруг ядерного взрыва, но и время от времени сами по себе, от дымящих фабрик.

Если все ваши 200 бомб попали в одну воронку, то квадратиков с загрязнением получилось как от одной.

[identity profile] qkowlew.livejournal.com 2016-11-27 11:38 am (UTC)(link)
Ну некоторыми да - в одну цель.
В целом я тогда обеспечил атомными ударами все города, кроме своих. :)

Загрязнение - да, просто от промышленности, тоже было, конечно.

[identity profile] kray-zemli.livejournal.com 2016-11-27 11:19 am (UTC)(link)
Global warming occurs when Pollution is allowed to stay on the map, beginning in the Industrial age. (http://civilization.wikia.com/wiki/Global_warming_(Civ1))