Команда WoW рассказала на BlizzCon 2018 про философию принятия решений и процесс воссоздания World of Warcraft Classic. Разработчики объяснили технические трудности, которые им приходится преодолевать, и поделились планами на будущее.
Если вы пропустили, на церемонии открытия BlizzCon 2018 объявили ориентировочную дату выхода World of Warcraft Classic — лето 2019 года. Играть смогут все, у кого оплачена существующая подписка на World of Warcraft.
Техническая основа
В начале презентации старший программист World of Warcraft Омар Гонзалез рассказал о технической структуре игры и первых этапах работы над World of Warcraft Classic.
- World of Warcraft с технической точки зрения состоит из трех основных элементов: базы данных, игровых ресурсов и исходного кода.
- База данных — это информация о количестве очков здоровья противников, характеристиках предметов, местах и таймерах появления существ и т.д.
- Игровые ресурсы — это все 3D-модели, текстуры, анимации, звуки и т.д., который определяют внешний вид игры.
- Исходный код — это своего рода клей, который все объединяет и руководит процессом, в результате чего игра может работать.
- Исходный код хранится в репозитории, который запоминает все изменения. К счастью, в репозитории World of Warcraft хранятся версии исходного кода начиная с 16 апреля 1997 года. Это не означает, что World of Warcraft так долго находится в разработке, просто он использует какие-то элементы, разработка которых началась еще тогда.
- Дата первой исправленной ошибки в репозитории — 25 апреля 1997 года.
- С базой данных все не так просто. Когда игра только вышла, разработчики использовали очень простую структуру: версия игры в разработке и текущая версия игры. Когда рабочая версия выпускалась, она перезаписывала данные текущей версии, а затем разработчики начинали работу над следующим обновлением, перезаписывая данные рабочей версии.
- Со временем эту структуру переработали, потому что она позволяла работать одновременно только над одним обновлением.
- Разработчики перепроверили как давно они начали использовать новую систему и с радостью обнаружили, что у них сохранилась база данных версии 1.12.0.
- С игровыми ресурсами возникла проблема, потому что они хранятся на локальном сетевом хранилище, которое постоянно перезаписывается. К сожалению, Blizzard обнаружили, что на руках у них были игровые ресурсы только из современных версий игры.
- Разработчики обратились в архив и запросили самые старые резервные копии сетевого хранилища игровых ресурсов, которые хранятся на магнитных лентах за пределами кампуса Blizzard. Полученная резервная копия была датирована 2008 годом и разработчики сначала расстроились, но затем обнаружили приятный сюрприз — папку с название «Финальные данные версии 1.12». Благодаря счастливой случайности команда нашла резервную копию внутри другой резервной копии.
- В итоге разработчики нашли исходный код, базу данных и игровые ресурсы версии 1.12, что позволило собрать игру.
- Хотя версия 1.12 работает, при ее использовании возникает множество много проблем. Она несовместима с современными облачными серверами, приложением Battle.net, службами аутентификации, управления учетными записями и технической поддержкой. Но самое плохое — она уязвима для всех старых недоработок, эксплойтов и хаков. Она не отражает стандарты качества Blizzard.
- Разработчики еще раз присмотрелись к составным элементам и осознали, что их полностью устраивают старая база данных и графические ресурсы, а проблемы создает только исходный код. Поэтому была высказана безумная идея: совместить элементы старой и новой игры.
- В качестве эксперимента был сделан прототип, в котором исходный код и игровые ресурсы версии 7.3.5 были совмещены с базой данных 1.12. Хотя получился жуткий монстр, многое работало как надо, и это стало доказательством того, что идея может сработать.
От прототипа к демоверсии
После этого на сцену вышел ведущий программист World of Warcraft Classic Брайан Бирмингем, который рассказал про путь от грубого прототипа к демоверсии, в которую сейчас могут поиграть обладатели билетов на BlizzCon 2018.
- Брайан отвечал за инструментарий разработчиков и конвертацию данных между дополнениями, поэтому он делал знакомую работу, но наоборот.
- Различные комбинации трех основных элементов (исходного кода, базы данных и игровых ресурсов) создают окружение, игровой процесс, анимации и освещение.
- Окружение — это ландшафт, расположение деревьев и объектов, вода и т.п.
- В первых прототипах у разработчиков что-то более или менее работало только в Дун Мороге, потому что эта зона не была затронута Катаклизмом. В других зонах все было очень странно: некоторые враги в буквальном смысле плавали в воздухе, где должна быть вода, деревья росли из пустоты и т.п.
- Проблема была в том, что старый и современный клиент по-разному обрабатывают данные окружения, поэтому некоторые составные части (высота ландшафта, вода, трава, расположение объектов) неправильно отображались.
- Здесь пригодился опыт Брайана в работе над инструментарием. Оказалось, что современные инструменты для разработки все еще могут открывать окружение в старом формате и сохранять его в новом, поэтому процесс конвертации прошел быстро и безболезненно.
- Для разработчиков очень важно, чтобы инструменты для разработки работали с World of Warcraft Classic и современной версией игры одновременно, потому что классическая версия будет иметь полную поддержку команды World of Warcraft.
- Некоторые проблемы возникли из-за того, что старый клиент содержал ошибки, которые нельзя было заметить невооруженным взглядом. Яркий тому пример — фонари в Западном краю, которые почему-то начали светить фиолетовым цветом. Оказалось, что со времен 1.12 разработчики изменили цвет ошибки в графических ресурсах: раньше они отображались белым, а теперь — фиолетовым. У фонарей не был выбран цвет освещения, но эту ошибку было невозможно заметить. Разработчикам приходится вручную проверять каждую 3D-модель (которые иногда бывают очень похожи друг на друга) и исправлять такие моменты.
- Часть функций не работала, потому что для них есть данные, но убрана поддержка в исходном коде. Например, у охотников не работало обучение питомцев и система настроения, поэтому пришлось переносить функционал из старого исходного кода в новый.
- В современном World of Warcraft нет навыков владения оружием и защиты, поэтому все формулы вычисления результатов ударов совсем другие. Это также пришлось переносить из старого кода.
- У существ отображались анимации по умолчанию, поэтому жена Манкрика в Степях ожила.
- Хотя были доступны правильные комбинации рас и классов, экран создания персонажа использовался из современной версии игры. Его пришлось переделать, в ходе чего разработчики столкнулись с тем, что некоторые классические спецэффекты (например, туман) неправильно работали.
- В самой игре возникли проблемы с освещением, которые разработчики постепенно исправляют.
- Команда не обещает, что получится воссоздать все с точностью до пикселя, но они постоянно сравнивают старую и новую версии и делают все, что в их силах.
- Здесь может возникнуть закономерный вопрос: а не проще ли было просто доработать клиент версии 1.12? На самом деле нет, потому что все проблемы версии 1.12 — невидимые, они касаются сугубо технических моментов. В то же время любое несоответствие переработанной современной игры видно невооруженным взглядом.
- Разработчикам предстоит проделать еще много работы. У них пока не готовы столицы (банк, аукцион, почта), подземелья и рейды (способности боссов, интерфейс рейда) и PvP (поля боя, система чести, награды за честь).
Философия разработки
В завершение геймдиректор Ион Хаззикостас рассказал о философии принятия решений при разработке World of Warcraft Classic.
- При разработке постоянно приходится принимать решения о том, нужно ли убирать или повторно реализовывать тот или иной функционал или даже недоработки.
- Команда руководствуется тремя основными принципами:
- Аутентичное воссоздание — если вы очнулись после 12-летней комы, вы должны не сразу заметить отличия. Кроме каких-то странных широкоэкранных мониторов.
- Высокий приоритет возвращения социального взаимодействия — разработчики будут убирать все, что может его подорвать.
- Максимальное избегание внесения правок в данные 1.12 — это как Ящик Пандоры, потому что любое изменение в современном контексте может повлечь за собой непредсказуемые последствия.
- После создания прототипа был составлен список несоответствий старой версии из сотен пунктов.
- Некоторые решения было принять очень легко:
- Автоматический поиск подземелий — естественно нет.
- Кросссерверный группы — никогда.
- Полеты — издеваетесь?
- Достижения — нет.
- Объединенный аукцион Альянса и Орды — неа.
- Другие вопросы потребовали обдумывания (некоторые из них не имеют окончательного ответа):
- Ограничение на максимальное количество негативных эффектов на противниках. Изначально противник мог иметь не более 8 негативных эффектов, потом этот лимит был повышен до 16 вплоть до выхода The Burning Crusade. Хотя изначально это было сугубо техническое ограничение, при его отмене придется перебалансировать весь старый контент, а разработчики не хотят вносить правки в данные версии 1.12. Поэтому в World of Warcraft Classic будет лимит в 16 негативных эффектов.
- Мгновенная передача почты между разными персонажами одного игрока. Раньше все письма шли час реального времени, поэтому передавать предметы было сложнее. Это неудобство создавало дополнительное социальное взаимодействие, когда можно было попросить друга помочь что-то передать. Поэтому мгновенную почту уберут.
- Некоторые небольшие улучшения интерфейса, вроде возможности быстро забирать предметы из писем, практически не влияют на игровой процесс. Разработчики считают, что нет смысла тратить ресурсы на то, чтобы их убрать, когда игроки все равно потом вернут их обратно при помощи модификаций интерфейса.
- Возможность передавать предметы другим игрокам в течение 2 часов после получения. Изначально это функция была добавлена, чтобы решить проблему, когда тот или иной предмет случайно отдавали не тому игроку. Даже в оригинальной версии игры можно было написать в техническую поддержку и попросить передать предмет, но это происходило не мгновение, а в течение нескольких дней. Финальный результат остается неизменным, но данная функция позволяет значительно разгрузить службу технической поддержки и дать ей возможность заниматься более важными вопросами, поэтому это изменение из поздних версий игры попадет в World of Warcraft Classic.
- Модификации интерфейса. Здесь пока все очень туманно, и разработчики ждут отзывы игроков. С одной стороны, модификации из классической версии имели доступ к большому количеству функций автоматизации, которые были убраны в The Burning Crusade. Если их оставить, в сочетании с современными знаниями можно будет сделать модификации, которые будут сами играть за человека. С другой стороны, современный API дает много функций для коммуникации между модификациями, что может потенциально подорвать социальное взаимодействие. Этот вопрос в еще в работе, но разработчики надеются в итоге придти к усредненной версии, в которой игроки смогут использовать привычные и ожидаемые модификации, но не будет неожиданной трансформации игрового процесса.
- Разработчики понимают, что World of Warcraft — это игра в первую очередь про сам процесс, поэтому контент будет выпускаться постепенно.
- Точные сроки выхода контента будут определяться после запуска на основе готовности игроков.
- Контент будет выходить в четыре этапа:
- Этап 1: Огненные недра, Ониксия, Забытый город, Казаак, Азурегос (март 2005)
- Этап 2: Логово Крыла тьмы, поля боя и награды за PvP, Зул’Гуруб (июль 2005)
- Этап 3: Ан’Кираж (включая Открытие врат), комплект T0.5, контент в Силитусе, Драконы кошмара (январь 2006)
- Этап 4: Наксрамас, Вторжение Плети (июнь 2006)
- Возможно, разработчики что-то забыли, поэтому подробности выпуска контента будут корректироваться на основе отзывов сообщества.
Источник