Diablo II Resurrected до сих пор страдает от перебоев с серверами. Да, пользователи могут создать офлайн-персонажа и играть без подключения к Сети, но не смогут затем перетащить его в онлайн. Тому, откуда взялись проблемы с соединением, Blizzard посвятила подробный пост на официальном форуме.
Как устроена сетевая часть игры
В общих словах:
- Есть глобальная база данных — она является главным источником всех сведений о персонажах и прогрессе каждого пользователя.
- Чтобы снизить нагрузку на глобальную базу, существуют региональные для каждой из трёх территорий — Северной Америки, Европы и Азии. Они тоже хранят все сведения о персонажах и периодически отсылают их в глобальную базу.
- Большинство действий игроков попадают сначала в региональную базу — весь процесс от этого становится быстрее.
- У глобальной базы существуют бэкапы на случай сбоев.
Откуда взялись откаты сохранений
Откаты персонажей возникали из-за структуры сетевой части: сохранения из разных баз не синхронизировались как надо, игроки получали устаревшую версию своего героя.
- Это последствия решения разработчиков. Когда пошли перебои с серверами, было два варианта: либо отключить онлайн совсем на неопределённое количество времени, чтобы запустить скрипт и сохранить все данные в нужные места, либо оставить онлайн включённым, но откатить прогресс у некоторых пользователей.
- Blizzard посчитала, что во время релиза важнее оставить онлайн включённым. Теперь команда сожалеет о своём решении и приносит извинения тем, кто успел потерять прогресс. В дальнейшем таких бед больше не ожидается: если откат сохранений и возникнет, то он отбросит вас назад лишь на считанные минуты.
Почему сетевая часть так плохо работает
Помимо прочего разработчики рассказали о цепочке событий, из-за которых возникли перебои в работе серверов. Там всё сводится к нагрузке из-за колоссального количества трафика: он превысил ожидания 9 октября, оказался ещё выше 10 октября и вновь побил рекорд 12 октября — в этот день только в одном из регионов онлайн составил несколько сотен тысяч пользователей.
Проблем обнаружилось много, но наиболее важные сводятся к следующему:
- Ощутимая часть программного кода пришла в Resurrected напрямую из оригинала. Один из старых сервисов занимается критически важными функциями, связанными с созданием матчей, присоединением к ним, обновлением списка матчей, проверкой здоровья сервера и чтением персонажей из базы данных.
- Сервис постарались обновить, но он всё равно плохо справляется с поведением современных игроков. Сейчас по Diablo II особенно много руководств, которые рассказывают о «правильных» и наиболее эффективных способах играть. Многие способы требуют взаимодействия с базами — создание, загрузку и уничтожение матчей в быстром темпе. Разработчики предугадали такое поведение, но не смогли верно оценить масштабы по результатам бета-теста.
- Кроме того, данные слишком часто сохранялись в глобальную базу. В этом не было необходимости — данные стоило оставлять в региональной базе и реже переносить их на глобальную. Таким образом нагрузка на сервер уменьшается, однако на изменение архитектуры понадобится некоторое время — новый способ сначала нужно построить, протестировать и только после этого ввести на серверы.
Как будут улучшать сетевую часть
Чтобы оздоровить работу серверов, Blizzard делает следующее:
- Ограничивается частота подключений. Снижается число возможных операций, связанных с созданием матчей и присоединением к ним. Это повлияет на некоторых игроков, если они пытаются быстро выйти из игры и зайти в неё снова. Мера краткосрочная, в будущем её планируют убрать.
- Создаются очереди на соединение. Чтобы диагностировать и эффективно устранять дальнейшие проблемы с серверами, необходимо остановить случаи, когда в игру одновременно пытается войти большое количество игроков.
- Благодаря очередям населённость серверов будет оставаться на безопасном уровне и не станет ронять всю онлайн-составляющую. По мере устранения проблем лимит по населённости станет повышаться.
- Для игроков очередь сейчас выглядит как ошибка аутентификации. Полноценное отображение введут в ближайшие дни на PC и чуть позже — на консолях.
- Критически важные функциональные элементы разбивают на сервисы поменьше. Какие-то задачи из этого сегмента небольшие и уже выполнены, а какие-то займут некоторое время.
PC, PlayStation 5, PlayStation 4, Xbox Series X | S, Xbox One, Nintendo Switch