Восстановление истории: пересказ панели о создании WoW Classic

aaf60a60c2028b1249266566acf7d4f9

В рамках выставки BlizzCon 2018 компания Blizzard предоставила возможность посетителям мероприятия, а также владельцам виртуальных билетов, ознакомиться с “классической” MMORPG World of Warcraft, запуск которой состоится летом 2019 года. Однако многие пользователи даже не представляют, каких усилий для разработчиков стоит создание подобного проекта, поэтому директор игры вместе с программными инженерами решил подробнее рассказать о своей работе. Мы же предлагаем вам ознакомиться с полным переводом посвященной этому статьи.

 

“На BlizzCon 2018 сообщество WoW получило возможность пощупать World of Warcraft Classic собственными руками. Дабы помочь игрокам понять, что требуется для создания подобной игры, придерживаясь стандартов качества Blizzard, программные инженеры Брайан Бирмингхэм и Омар Гонзалез вместе с игровым директором Йоном Хаззикостасом вышли на сцену субботним днем и поделились своим опытом.

 

 

 

Поиск составных частей

 

До того, как мы начали путь, позволяющий нам с точностью воссоздать ощущение от игры в оригинальный WoW, команда разработчиков WoW Classic должна была поближе присмотреться к элементам оригинальной игры, с которыми нам предстояло работать. В конечном итоге все свелось к трем основным частям: базе данных, игровым ресурсам и исходному коду.

  • База данных содержит в себе игровые аспекты, вроде количества здоровья существ, количества выносливости, которое дает определенный предмет, локации спавна существ в мире и миллионы других элементов.
  • Игровые ресурсы включают в себя все, от внешнего вида ночного эльфа, когда тот активирует «Слиться с тенью» и звука Пиробласта, до анимации удара орочьего топора.
  • В исходном коде содержатся инструкции по воспроизведению игры, процессу ввода и соединению игроков.

В самом начале нам было необходимо понять насколько стар исходный код, хранящийся в наших архивах. Мы узнали, что самый старый кусок кода, который мог быть связан с WoW, датировался аж 1997 годом, что было задолго до того, как World of Warcraft начал разрабатываться.

 

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

 

Наконец, мы смогли отыскать игровые ресурсы на старых ленточных накопителях, и они соответствовали сохраненным данным из базы.

 

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

 

 

 

Классический геймплей в современном мире

 

Несмотря на то, что у нас на руках была рабочая версия игры, впереди оставалось еще немало нерешенных проблем. Технология, поддерживающая игру, ушла довольно далеко со времен выхода World of Warcraft, включая такие новшества, как облачная поддержка, компьютерное приложение Blizzard Battle.net, улучшение службы клиентской поддержки, а также множество исправлений багов и эксплоитов.

 

Чтобы справиться с этими трудностями команда решила взглянуть поближе на все, что мы смогли найти и конкретно определить, что нам нравится (ресурсы и данные) и что не нравится (код). Мы хотели попробовать объединить классические игровые ресурсы с нашим модернизированным кодом и добиться их гармоничной связи в игре. Сначала все складывалось не слишком удачно, но методом проб и ошибок мы смогли сколотить пробную версию и получить что-то играбельное. Это вселило в нас уверенность, что мы могли создать игру, удовлетворяющую требованиям Blizzard по качеству, используя современную платформу.

 

От прототипа к демоверсии

 

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

 

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

 

К счастью, современный редактор WoW способен производить необходимые изменения данных, а данные ландшафта мы могли переработать, используя тот же редактор, что мы задействовали при разработке Битвы за Азерот. Современный редактор «знает» как загружать старый формат и как трансформировать его в новый формат ландшафта, а так же как экспортировать его в модернизированный движок. Это избавило нас от проблемы подводных костров и сожженных деревьев, вдобавок ко всему прочему.

 

 

Еще одной трудностью, которую предстояло преодолеть, стал процесс хранения и объединения наших данных. Для World of Warcraft всегда одновременно разрабатываются несколько обновлений или патчей, каждый из которых находится на разных стадиях разработки. Если игровой ресурс или ландшафтный файл добавляется к патчу, то дизайн системы таков, что он автоматически добавляется и к последующим патчам. Это означало, что если бы мы просто так поставили новый патч на WoW Classic в его текущем виде, то мы бы переписали такие вещи, как ныне сломанная плотина в Лок Модане, заменив ее прежней версией, где она не была сломана. Как вы можете представить, это вызвало бы проблемы для Битвы за Азерот.

 

Чтобы избежать этого, команда «научила» наши инструменты новым трюкам, благодаря которым мы могли бы обновлять WoW Classic, не затрагивая при этом текущую версию игры. Мы скопировали данные из патча 1.12 в новый проект, научили инструменты отличать их друг от друга, и теперь, когда команда, занимающаяся WoW Classic, ставит патч, все изменения остаются внутри классической цепочки и никак не взаимодействуют с данными текущей версии игры. Это может показаться легкой задачей, как просто папку скопировать, но сложность состояла в том, что нам нужно было научить инструменты понимать разницу, чтобы в будущем редактирование происходило автоматически. Возможность использовать все наши студийные инструменты чрезвычайно важна, и мы хотели сделать так, чтобы Классика имела доступ ко всей инфраструктуре и данным WoW.

 

Классические модели и анимация

 

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

 

Оригинальная анимация также была восстановлена, но возникли сложности из-за того, что система анимации WoW тесно связана с геймплейным кодом. Нам пришлось внести изменения в данные и в код, чтобы вернуть анимации тот вид, который был в патче 1.12. Мы столкнулись с рядом багов, например, модели, которые должны были отображаться в лежачем положении, вместо этого отображались стоящими, но нам удалось избавиться от этих багов после нескольких исправлений.

 

Восстановление классовой системы

 

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

 

 

 

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

 

Пользовательский интерфейс и освещение

 

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

 

В качестве еще одного примера работы над освещением можно привести Элвиннский лес. В один момент существования Warcraft мы переработали все расчеты, связанные с освещением, из-за чего нашим художникам пришлось доработать все зоны, чтобы улучшить освещение и по полной использовать новые технологии. Чтобы воссоздать оригинальный внешний вид игры, нам нужно было откатить эти изменения. Сначала мы восстановили старые данные, связанные с освещением. Это приблизило нас к оригинальному освещению и после некоторых изменений формулы прорисовки на дальних расстояниях, дыма и кое-каких доработок теней, нам удалось практически полностью вернуть игре старое освещение.

 

Когда будет готово?

 

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

 

После года работы над этим проектом, за который мы проделали немалый путь сквозь различные баги и трудности, мы четко поняли, что существует явная разница между тем, что у нас имеется и тем, чего мы хотим добиться. Если взглянуть на сегодняшний World of Warcraft, то разница между современной игрой и классической налицо. Если бы мы просто попытались обновить имеющийся клиент, то нам пришлось бы учитывать множество «невидимых» изменений, вроде эксплоитов, которые точно будут использоваться, крашей, которые не проявляются, пока на сервер не зайдут миллионы игроков одновременно, и так далее. Мы решили подойти к работе таким образом, чтобы наша задача была ясной и понятной, а не излишне сложной и завуалированной.

 

 

 

И хотя вы можете играть в демоверсию WoW Classic уже сегодня, наша работа еще не закончена. Нам предстоит разобраться с фичами столиц, такими как банки и аукционы. Нам нужно протестировать подземелья и рейды, и убедиться, что способности боссов работают корректно. Нам необходимо перепроверить все наши ПвП-системы. Но как бы то ни было, мы обязательно доработаем все это и многое другое по мере того, как мы продолжим восстанавливать классическую игру.

 

Принципы и планы на будущее

 

Восстанавливая классический World of Warcraft мы руководствовались тем, что нашей целью было предоставить игрокам неизменное чувство старой игры. Игра может работать чуть лучше и техника стала мощнее, но игра должна выглядеть и ощущаться, как тот самый World of Warcraft из 2006 года. Такие элементы, как боевые формулы, оригинальные модели и навыки охотника являются неотъемлемой частью этого, но не стоит забывать и о таких вещах, как социальная динамика. Зависимость от других игроков, необходимость самостоятельно собирать группу и как это влияло на ваш поход в подземелье — все это является частью классической игры, и мы хотели это воссоздать.

 

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

 

Другие решения были чуть сложнее. Когда-то в WoW существовал лимит на 8 дебаффов на одной цели. Позже этот лимит был увеличен до 16, а сейчас этого лимита нет вообще. Эти изменения радикально изменили баланс классов и стратегии, применяемые игроками при использовании этих дебаффов в прохождении контента. Дабы сохранить этот баланс и избежать постепенного скатывания в патч 1.12, чтобы компенсировать подобные новшества, мы собираемся оставить лимит в 16 дебаффов в WoW Classic.

 

Почтовые письма, отправленные согильдийцам, теперь доходят мгновенно, но в прошлом существовал лаг в 1 час, так же, как и при отправке писем незнакомцам. Мгновенная почта стала более удобной, но убрала необходимость социального взаимодействия, при котором приходилось встречаться с другим игроком, чтобы провести торговлю, если вы не хотели ждать целый час. Поэтому мы решили вернуть этот временной лаг. Прочие изменения, повышающие удобство, вроде автозаполнения имен и быстрого очищения почтового ящика, мы оставили. Это решение показалось нам простым, так как кто-нибудь все равно мог создать аддон, делающий то же самое, и мы не считаем, что подобные удобства отражаются на фундаментальном «классическом» духе игры.

 

 

 

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

 

Классы, зависящие от восстановления энергии, вроде разбойников, тоже претерпели множество изменений со времен классической эры. Энергия восстанавливалась скачками, зависящими от серверного «пульса». Поэтому, чтобы восстановить 20 энергии требовалось полных две секунды. К сегодняшнему дню система была доработана и 1 единица энергии восстанавливается каждую десятую долю секунды. Это изменение повлияло на возможность использования некоторых способностей. То, что может показаться небольшим изменением, на самом деле оказало серьезное влияние на течение боевых ротаций и взрывной урон в классической версии. Мы посчитали, что эту особенность нужно было вернуть, чтобы восстановить старое ощущение от игры.

 

Возможности аддонов сильно изменились с прошествием лет и стали намного более обширными, так как авторы набрались опыта и знаний. Мы пока не уверены на все сто, как именно это повлияет на WoW Classic, но мы точно можем сказать, что не будем откатывать API аддонов до версии 1.12. Если бы мы это сделали, то это открыло бы возможность полностью автоматизировать бой, создавая ботов, которым совершенно нет места в игровом процессе WoW. Этого мы точно хотим избежать. С другой стороны, современный API обладает дополнительными возможностями для создания социальных фич, которые также нарушали бы ощущение классического геймплея. Мы все еще пытаемся определиться с деталями и ищем золотую середину. Мы будет внимательно следить за отзывами от сообщества и авторов аддонов, определяя где следует поставить границы.

 

План по выпуску контента

 

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

  • Стадия 1: Расплавленное ядро, Ониксия, Ужасающий молот, Каззак, Азургос
  • Стадия 2: Логово Чернокрыла, Поля боя и ПвП-награды, Зул’Гуруб
  • Стадия 3: Ан’Кираж (включая ивент открытия), Тир 0.5, контент в Силитусе, Зеленые драконы
  • Стадия 4: Рейды Наксрамаса, вторжение Плети

Эти планы еще могут измениться, но мы хотели показать, что собираемся делать в будущем. Мы с нетерпением ждем ваших отзывов и продолжаем работать над воскрешением классической версии WoW.”

gamesjoy.ru