Лучшее  🚀
13.02.2020 в 11:01 Evernews

Как неправильная сортировка квестов в Destiny 2 привела к потере данных игроков

На самом деле здесь сработало сразу несколько факторов.

Кстати, на сайте читать удобнее

За последние две недели разработчики Destiny 2 дважды восстанавливали данные игроков из бэкапов, откатывая их прогресс на несколько часов назад. В прошлом в игре такого не случалось. Чтобы объяснить, как все произошло, сотрудники Bungie опубликовали большой разъяснительный пост.

Из-за бага в Destiny 2 пришлось откатить прогресс всех игроков

Оказалось, что все началось с неверной сортировки заданий в журнале квестов. В Destiny 2 квесты работают так же, как предметы в инвентаре, и обладают временной меткой: так их можно сортировать в журнале по времени взятия.

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

Когда несколько месяцев назад игроки стали жаловаться на некорректную работу журнала заданий, разработчики обнаружили, что во время чистки инвентаря игра сбрасывала временные метки полученных квестов. Чтобы исправить ошибку, в Bungie решили отключить для квестов соответствующую систему.

Здесь произошла первая ошибка: разработчики отключили обработку не только квестов, но и ряда других объектов. В результате игра стала некорректно рассчитывать капы предметов и удалять те предметы, которые считала лишними. На этапе код-ревью этот баг не заметили, однако его воспроизвели во время тестов.

В этот момент разработчики ошиблись во второй раз. В Bungie решили, что ошибка вызвана некорректным тестированием, а не багом в самой игре. В результате обновление, содержащее ошибку, ушло в релиз и появилось на основных серверах Destiny 2.

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

Проблема не считалась серьезной, разработчики перезапускали проблемные вручную незаметно для игроков. Когда был обнаружен баг с капами предметов, в Bungie не стали полноценно обновлять сервера, а просто выпустили быстрый патч.

Разработчики решили, что проблема устранена — и ошиблись в третий раз. После выхода обновления с событием в честь Дня святого Валентина выяснилось, что на части серверов — тех самых, что перезапускались вручную — запустилась старая версия кода, где не был исправлен баг с капами. Из-за ручных перезапусков проблема осталась незамеченной.

Игроки, заходившие на эти сервера, лишались предметов. Обычно в Bungie тестируют обновление, в том числе, и на основных серверах, но из-за небольшого количества пострадавших серверов тестерам просто не повезло на них попасть.

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

В Bungie пишут, что сделали из этой истории выводы. Разработчики исправили проблему, из-за которой сервера приходилось перезапускать вручную и добавили дополнительные проверки, не дающие запустить старую версию кода.

Кроме того, студия улучшила систему очистки инвентарей игроков. В будущем, надеются разработчики, таких проблем удастся избежать.