Экономика Diablo III, сломанная целочисленной ошибкой переполнения

Diablo III У долгожданной онлайновой RPG от Blizzard, выпущенной почти год назад, есть свои технические трудности. От Ошибка 37 Blizzard потратила весь прошлый год, чтобы отстать от всплесков, которые могут привести к потере сотен часов, чтобы улучшить игровую среду, чтобы лучше обслуживать миллионы активных игроков.

Diablo III также известен своей экономичностью, с акцентом на региональный аукционный дом, где игроки могут торговать предметами «один на миллион» за миллионы и миллиарды золота. (инфляция сумасшедшая). Кроме того, Diablo III подчеркнула использование Аукционного дома в реальном мире, где игроки могут продавать золото или предметы за реальные деньги.

Сегодня был запуск Патч 1.0.8 патч, который обещал улучшения в развитии персонажа. Проведя несколько недель в Public Test Realm, где игроки добровольно вызвались протестировать патч, чтобы убедиться, что были взломанные игры, патч был выпущен успешно.

За исключением одной заметки о патче, которая была добавлена ​​в последнюю минуту и ​​не проверена в PTR. И это патч, который разбил экономику на мелкие кусочки.

Примечания к патчу из финальной сборки содержали это изменение:

Размер стека продаж золота на аукционе был увеличен с 1 миллиона до 10 миллионов.

Обычно на аукционе реальных денег игрок может продавать деньги только с шагом в 1 миллион золота. В версии 1.0.8 игрок может продавать ее с шагом 10 миллионов. Итак, что происходит, когда игрок пытается положить абсурдную сумму денег на аукционе?

Reddit пользователь tyropro имеет хорошее объяснение :

Золотая «обманка» заключалась в создании аукциона RMAH на миллиарды золота, при этом он находился под лимитом в 250 долларов. Пример, который я видел в видео, был 6 миллиардов золота (600 x 10 000 000 по 0,39 долл. За стек, 234 долл.). Когда они разместили этот аукцион, оказалось, что на продажу выставлено всего ~ 1,7 миллиарда, а остальные «пропали без вести», пока они не отправили его в свой тайник и не получили больше, чем начали. Точные цифры из дублирующего видео:

Создайте аукцион RMAH за: 6 000 000 000 золота. Аукцион отображается как: 1 705 032 704 золота. 4 294 967 296 золота Недостающее количество, разделенное на 2: 2 147 483 648 золота

2,147,483,648 (или 231) - это максимальное значение, которое вы можете сохранить в int32 при программировании. Я не программист, но я взял один класс в старшей школе, и меня учили об ограничениях различных типов переменных. Увидеть:

Проще говоря, их код продажи золота RMAH не был написан для правильной обработки чисел свыше 2 147 483 648, и в результате дублирование золота добавлялось в тайники людей.

4,294,967,296 - это также 232 или предел целое число без знака , который был бы интересным выбором реализации со стороны Blizzard.

Итак, дуперы создали эти аукционы с 6 миллиардами золота, которые, по-видимому, продаются только за 1,7 миллиарда (и, следовательно, из текущего баланса было вычтено только 1,7 миллиарда), отменили их и полностью возместили 6 миллиардов за чистую прибыль. разница (4,2 млрд). Повторите до тошноты .

Популярный игровой стример демонстрирует эксплойт. Последовали другие растяжки. Это было легко воспроизводимо и все знали, как это воспроизвести ,

Веселье последовало.

Да, это 420 миллиардов золота.

После покупки всех дублированных предметов в Аукционном Доме, предметы были проданы в Аукционном Доме на Реальные Деньги. За реальные деньги И люди их купили.

Это определение наихудшего сценария для Diablo III. Все из-за непроверенного патча. Что может сделать Blizzard? Выполнение отката уничтожило бы весь прогресс, полученный игроками за день патча, что привело бы к большому количеству плохого пиара. Но если оставить экономику как есть, все предметы в игре обесценится (а Diablo III - это получение предметов).

В конце концов, Blizzard не сделал откат , но вместо этого забанить любого, кто обманул , а также возмещены Любой, кто потратил реальные деньги. Ошибка была временно исправлена ​​путём отмены патча, который вызвал весь беспорядок.

Пусть это будет уроком о том, что происходит, когда вы включаете непроверенное изменение в последнюю минуту. Вы можете сломать всю экономику. Эх, ничего страшного.

Если вам понравился этот пост в блоге, я настроил Patreon чтобы финансировать мои потребности в машинном обучении / углубленном обучении / программном / аппаратном обеспечении для моих будущих сумасшедших, но при этом классных проектов, и любые денежные взносы в Patreon приветствуются и будут использованы для творческого использования.

Похожие

Анонс мобильного компаньона Diablo3
Diablo 3 Blizzard - последний нарушитель производительности, социальной жизни и самосохранения. Он побил рекорд самой продаваемой компьютерной игры (более 3,5 м за 24 часа) и по очень веской причине. Проще говоря, это боевик RPG. Игрок создает персонажа, и со временем персонаж проходит через историю, получая уровни и приобретая предметы, чтобы сделать его / ее более сильным. Blizzard недавно выпустила API для доступа к данным игрока, и, таким образом,
Итак, что происходит, когда игрок пытается положить абсурдную сумму денег на аукционе?
Что может сделать Blizzard?