За чашкой кофе с разработчиками: классическая версия World of Warcraft
Blizzard Entertainment, June 15th в 7:00pm

Всем привет! Работа над классической версией World of Warcraft продолжается, и мы рады поделиться с вами подробностями о встававших перед нами вопросах и способах их решения, которые мы сейчас прорабатываем. Как уже упоминалось на прошедшем BlizzCon, процесс реставрации классической версии игры сопряжен с рядом нюансов. Мы не жалеем времени и прикладываем максимум усилий, чтобы все получилось как надо. Наша работа включает анализ различных версий, данных, алгоритмов и числовых показателей, а также тщательную оценку изменений, внесенных на протяжении многих лет. Команда разработчиков, занимающаяся классической версией World of Warcraft, трудится в поте лица, чтобы воплотить проект в реальность.


Первый этап: выбор версии WoW

Одним из первых — и наиболее важных — решений, которые нам требовалось принять, заключалось в том, чтобы выбрать, какую версию игры мы возьмем за основу. Как многие из вас уже отмечали, классический период WoW длился два года, и за это время игра серьезно изменилась. В рамках отдельных обновлений мы добавляли поля боя и многие известные подземелья и рейды. По размышлении мы решили остановить свой выбор на версии 1.12, также известной как «Барабаны войны» (Drums of War), так как она представляет собой наиболее полное собрание классических материалов.

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

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


Второй этап: путь вперед

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

Мы задумались — а можно ли с помощью современного кода, претерпевшего ряд усовершенствований и изменений на стороне серверов, воссоздать классический игровой процесс на основе версии 1.12? Хотя это на первый взгляд и не слишком очевидно, такой подход позволил бы реализовать классические системы, такие как уровень счастья питомцев, развитие навыков владения оружием, классические таланты и так далее. С другой стороны, более современные возможности вроде битв питомцев, систем поиска групп и достижений в таких условиях просто не ввести. После долгих недель разработки и трудоемких этапов подготовки мы преисполнились уверенности, что нам удастся воссоздать классические материалы и игровой процесс WoW, сохранив результаты работы тринадцатилетней работы над серверной составляющей игры.

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


Углубимся в подробности

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

  • Данные баз: эта информация практически всегда выражена в цифрах. Она включает данные о запасе здоровья существ, прибавках к силе от предметов, точках и времени появления противников. Мы также можем сохранять и принудительно устанавливать связи между различными элементами.
  • Данные файлов: как правило это массивные данные вроде трехмерных моделей, текстур, анимации и ландшафта. Пользовательский интерфейс создан на основе файлов XML и LUA. Многие файлы, отвечающие за визуализацию, сохраняются в форматах, отличных от тех, что использует соответствующий инструментарий. Мы обрабатываем их таким образом, чтобы оптимизировать для считывания и использования системами игры.
  • Алгоритмы LUA: некоторые функции опираются на алгоритмы LUA, созданные дизайнерами, что позволяет прорабатывать особые варианты операций на серверах, не имея обширных знаний в области программирования.

Как изменилась работа программистов

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

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

ID

Название

Первый эффект

Второй эффект

Третий эффект

Первая аура

Вторая аура

Урон от первого эффекта

Урон от первой ауры

Урон от второй ауры

1

Огненный шар

Наносит урон

Применяет ауру

Ничего

Ничего

Наносит периодический урон

30

Ничего

3

2

Ледяная стрела

Наносит урон

Применяет ауру

Ничего

Ничего

Замедление

20

Ничего

Ничего

Как видите, многие графы забиты «ничем». По мере развития WoW мы совершенствовали системы обработки данных и привели многие базы к общему знаменателю. Сейчас подобные данные распределяются вот так:

Название таблицы: заклинание

ID

Название

1

Огненный шар

2

Ледяная стрела

Название таблицы: эффект заклинания

ID

ID заклинания

Эффект

Урон

1

1

Урон

30

2

2

Урон

25

Название таблицы: аура заклинания

ID

ID заклинания

Аура

Урон

1

1

Наносит периодический урон

3

2

2

Замедление

Ничего

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


Взгляд в будущее

Наш труд в итоге позволит воссоздать настоящий классический игровой процесс на базе более производительной и стабильной платформы, в результате чего повысится скорость обмена данными и надежность работы игры. В число усовершенствований также войдут современные системы выявления нарушений и использования ботов, интеграция службы поддержки и возможностей Battle.net, а также другие улучшения, связанные с повышением удобства.

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

Идет загрузка комментариев…

Сбой при загрузке комментариев.

Battle For Azeroth
Игра выходит через
Игра вышла!
Дн.
Час.
Мин
Сек