«Игроки PC #Fallout76 B.E.T.A.: Мы в курсе проблемы с клиентом и разбираемся с ней. Пожалуйста, не нажимайте пока никаких кнопок в клиенте-лаунчере.»
— Поддержка Bethesda (@BethesdaSupport) Октябрь 30, 2018
Поучительная история, наделавшая немало шуму, приключилась на этой неделе с компанией Bethesda. Игры Bethesda всегда славились большим количеством багов; сегодня компания по-прежнему продолжает следовать заветам Buggerfall (TES II Daggerfall) и, кажется, на этот раз смогла выйти на новый уровень.
Речь идет о старте бета-теста PC-версии Fallout 76 — многопользовательском спин-оффе известной ролевой серии, больше напоминающему по своему духу Rust – который состоялся на этой неделе, 30 октября. По факту, бета представляла собой стресс-тест из четырех коротких сессий длительностью 4-5 часов — и стресс-тестом (для CDN и пользователей) ее можно назвать не только в прямом, но и в переносном смысле.
Разработчики умудрились просмотреть в лаунчере игры баг, из-за которого ее клиент самовольно удалял все файлы игры с компьютера пользователя при запуске лаунчера и/или клику по любой кнопке в нем. В результате, когда долгожданная бета (ради которой игроки и оформляли предзаказ) наконец стартовала, десятки тысяч пользователей, загрузивших игру заранее, были вынуждены снова целиком скачивать установочные файлы игры (почти 50 гБ), причем скорость скачивания упала до минимальных значений (около 1Mb/s). Когда 4 часа спустя бета закончилась, большинство из них в итоге так и не смогло попасть в Fallout 76.
Если учесть, что всего неделю назад компания разослала игрокам-подписчикам письмо, в котором предупреждала, что в бете им предстоит столкнуться с невиданными доселе багами, то можно сказать, что Bethesda не подвела.
Суть проблемы
Когда компания Bethesda анонсировала свою новую игру Fallout 76 на выставке E3, то сразу объявила, что на этот раз для распространения игры Steam использоваться не будет — вместо него компания решила использовать собственный лаунчер Bethesda.net.
Причина такого решения очевидна — при таком подходе Bethesda не нужно платить отчисления Valve — для крупных компаний, издающих в Steam AAA-игры, это около 20-25% (все зависит от контракта с конкретной компании — но меньше, чем для большинства разработчиков). Впрочем, директор компании Пит Хайнс заявил, что это решение было принято с целью «упрощения коммуникации с сообществом игроков» — поскольку теперь игроки должны были обращаются с фидбеком напрямую на форумы Bethesda, минуя форумы (и обзоры) Steam.
Общественность некоторое время сильно возмущалась тем, что теперь игрокам придется держать у себя на компьютере еще один лаунчер, и за счет этого пророчила игре провал в продажах. Забегая вперед, можно сказать, что самые пессимистические прогнозы не оправдались — судя по весьма оживленному форуму, игра уже успела вызвать некоторый ажиотаж; к тому же в самой Fallout 76 активно используются ассеты и игровые механики Fallout 4, что значительно снижает стоимость производства подобного эксперимента. Последнее неудивительно, ведь бытует мнение, что этим проектом Bethesda прощупывает почву для использования модели «игра-как-сервис» в своих последующих проектах — ведь сложно придумать, куда еще можно было бы портировать Skyrim после Amazon Alexa.
Казалось бы, лаунчер и инфраструктуру можно было обкатать год назад — во время бета-тестирования Quake Champions, участники которого жаловались на различные проблемы еще тогда — но, судя по всему, их было решено полностью проигнорировать.
И вот назначенный день X для PC-игроков наконец-то настал. Тех, кто следил за таймером обратного отсчета в лаунчере игры, первое разочарование ждало уже тогда, когда выяснилось, что таймер отработал на два часа раньше положенного — кнопка «Играть» разблокировалась, однако, запустить игру не удавалось.
По проблеме таймера Bethesda отреагировала достаточно быстро и дала разъяснение: дескать, программист, отвечавший за таймер обратного отсчета, живет по Mountain Standard Time (MST), горному времени (это время, соответствующее часовому поясу Горных штатов, одному из семи часовых поясов США; оно на два часа позже Восточного поясного времени) — добавив, что этого программиста уже сбросили до «заводских настроек», и подобное не должно повториться.
Однако, начиная с этого момента, лаунчеры игроков стали массово стирать уже установленную игру и загружать установочные файлы снова. Столкнувшись с тысячами недовольных игроков, компания отреагировала тем самым твитом, который процитирован в начале поста. «Пожалуйста, не нажимайте никаких кнопок в лаунчере». Он, увы, теперь удален — но быстро разлетелся по сети, и его оригинал можно увидеть, например, в статье Kotaku.
Впрочем, по свидетельствам игроков, нажимать было ничего и не надо — достаточно было просто запустить лаунчер, как файлы игры исчезали или затирались. Те, кто узнал о проблеме раньше и успел сделать резервную копию файлов, пытались подсунуть их лаунчеру, но их тоже ждало разочарование — потратив полчаса на проверку этих файлов, лаунчер все равно начинал скачивать файлы установки с нуля.
Здесь расстроенных игроков ждал очередной подвох. Скорость скачивания внезапно упала до 0.5-1 MB/s — и ни у кого из них не осталось практически ни единого шанса скачать клиент за отведенные на бету 4 часа.
Спустя пару часов техподдержка компании опубликовала твит, в котором утверждалось, что проблема устранена — однако раздраженные игроки продолжали жаловаться на трудности с загрузкой игры, и его быстро удалили.
И даже на этом мучения отдельных пользователей не закончились. По окончанию скачивания файлов лаунчер мог выдать ошибку «Недостаточно прав для установки игры в выбранную директорию», после чего… думаю, вы уже и так догадались. В конечном итоге, отдельные «счастливчики» были вынуждены выкачать клиент полностью 3 раза.
Закончилось все тем, что Bethesda расширила период следующего дня бета-теста расширили на четыре часа.
Возможные причины и стоимость ошибки
К сожалению, никакой официальной информации о причине ошибки от компании так и не поступило, однако есть некоторые предположения.
На самом деле, она может быть вполне тривиальной — скорее всего, неправильно отработал механизм обновления игры. Допустим, в обновлении требовалось заменить поддиректорию, и для этого требовалось ее рекурсивно удалить, распаковав сюда же новую папку. И способов «накосячить» здесь было более, чем достаточно: перенос файлов мог отработать с ошибкой; где-то мог быть неправильно прописан относительный путь к папке; неправильно была задана переменная окружения или указан путь; для беты могли быть установлены специальные временные флаги в коде, которые забыли сбросить…
Попробуем примерно подсчитать, сколько эта ошибка могла стоить Bethesda. В качестве CDN Bethesda использует AWS CloudFront. Можно предположить, что такое сильное падение скорости скачивания было связано с throttling и некорректно настроенными параметрами конфигурации. Допустим, компания платит 0.10$/Gb; каждый человек, который загружает игру, стоит им примерно 50 центов. Если, допустим, загружать игру заново пришлось миллиону человек, то это ошибка обошлась компании в 500 000 $. Вопрос здесь в том, какое число пользователей это затронуло — и ответить на него трудно. Для сравнения, Fallout 4 за первые 24 часа после релиза на Steam продался тиражом в 1.2 миллиона копий, пиковое число пользователей составило 470 000 человек.
И это даже не считая отмененных раздраженными покупателями предзаказов цифровых и физических копий игры, которые ради возможности поиграть в бету брали отгул с работы.
Постскриптум
Справедливости ради, стоит отметить, что Bethesda вовсе не первопроходцы в данном «жанре» — истории известны и более серьезные ошибки.
Старожилы Хабра могли слышать о проблеме обновления EVE Online, которое удаляло у игроков файл C:boot.ini. За нее разработчики из CCP извинились, заодно подробно рассказав о причине ошибки.
В свое время, первый Half-Life (в релизной версии 1.0, которая была записана на диске) включал в себя Sierra Utilities, которые при деинсталляции игры удаляли не только папку, в которую была установлена сама игра, но еще и ее родительскую директорию. Нетрудно представить, какая «радость» поджидала тех, у кого была установлена в c:gamesHL, c:program fileshl или c:hl…
Источник