Fallout 4: баг показал в инвентаре 4 млрд стимуляторов

Редакция Press F News, выпускающий редактор Виктор Шмыгов
Игрок Fallout 4 нашёл в инвентаре 4 294 967 295 стимуляторов. Виновато целочисленное переполнение, а не моды.

Один из игроков Fallout 4 открыл инвентарь и увидел там 4 294 967 295 стимуляторов. Модов он не ставил и столько шприцев никогда не собирал. Как пишет Shazoo, виновником оказалась классическая ошибка переполнения: игра вычла единицу из нуля и получила почти 4,3 миллиарда.

Источник: Shazoo

Число выглядит случайным, но на деле это 2³² – 1, предельное значение беззнаковой 32-битной переменной. Счётчик предметов не рассчитан на отрицательные числа. Когда код пытается опустить его ниже нуля, значение перескакивает на максимум. Один из комментаторов объяснил это через старую технику:

Раздачи игр — первыми в Telegram — бесплатные игры Epic, Steam и GOG и главное за деньПодписаться

«Представьте старый механический одометр с барабанами. Если на отметке 000000 заставить его крутиться назад, он мгновенно покажет 999999».

Сложнее было понять, как вообще потратить стимулятор, которого уже нет. Разгадку нашли почти случайно. На герое была силовая броня с модификацией, которая сама колет стимулятор, когда здоровье падает. Похоже, последний шприц в одном и том же кадре использовали и броня, и игрок, а проверки на ноль в коде не оказалось.

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

Для Fallout такие сбои почти традиция. Спидраннеры Fallout 4 давно эксплуатируют переполнение намеренно, только с переносимым весом:

  • надевают стопку одинаковых элементов брони с бонусом к переносимому весу;
  • переименовывают их на верстаке, чтобы стопка разделилась;
  • снимают вещи поштучно — бонус каждый раз вычитается заново, и значение уходит в минус.

В обсуждении всплыла и легенда о «ядерном Ганди» из Civilization: якобы из-за того же переполнения миролюбивый лидер становился главным агрессором. История красивая, но выдуманная. Сид Мейер и Брайан Рейнольдс давно её опровергли — в оригинальной игре такого бага не было.

Вышла почти ирония: броня исправно спасала героя, а подвела его собственная бухгалтерия.

Fallout 4

В Steam с 9 ноя. 2015 г.

Реакции: