WORLD OF WARCRAFT

Тема: Разработчики WoW Classic в деталях рассказали о работе системы «шардов» и «слоев»  (Прочитано 1850 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Wishko

  • noob-club.ru
  • Легенда
  • *
  • Сообщений: 44603



Одна из самых частых текущих жалоб от игроков "Сезона открытий" заключается в проблемах работы системы слоев и задержках во время события Кровавой луны в Тернистой долине. На выходных разработчики WoW Classic внесли некоторые изменения, что должны улучшить ситуацию, а старший продюсер World of Warcraft Том Эллис в огромном сообщении детально рассказал, как именно работают "шарды" и "слои" и из-за чего возникают связанные с ними затруднения.:cut:

Цитата: Tom Ellis
Предупреждаю, что здесь не сообщается о каких-либо изменениях, это просто интересная информация для тех, кому нравятся такие вещи.

Часть 1: погружение в слои и шардинг

Итак, в том, что мы называем "основной версией игры" (современная игра, последнее дополнение), со времен Warlord of Draenor используется технология под названием "шардинг". Когда-то давно игровой мир запускал одну копию каждой зоны локально на своем собственном оборудовании. Если вы бежали за кем-то и он переходил в другую зону, то вы следовали за ним и все оказывались в одном месте. Вы могли свободно водить существ и делать задания на сопровождение НИПов, преодолевая границы зон.

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

Все это произошло в Warlords of Draenor, когда после очень успешного запуска начальные зоны дополнения оказались совершенно неспособными справиться с нагрузкой. Печально покинувший нас Кертис МакКатерн (нет, он не умер, просто ушел из Blizzard...) работал три дня и ночи (мы больше не потворствуем такому поведению!) и создал первую версию шардинга. Эта новая технология позволила нам запустить несколько копий мира и разделить людей между ними. Наконец-то мы могли запускать несколько копий Дренора и распределять нагрузку между ними.

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

Хорошие были времена. Теперь появился Classic, и у нас снова возникли проблемы.

Запуск Classic был в значительной степени ориентирован на #БезИзменений, ведь мы хотели, чтобы игра была как можно более близка оригинальной версии. Шардинг был явно исключен, но также существовала твердая уверенность в том, что запуск будет большим (но не настолько большим, как в итоге оказалось ;)), а интерес к игре быстро спадет, когда люди получат свой удар в лицо от ностальгии и пойдут играть в другие игры дальше. В этих условиях мы не хотели запускать сотни игровых миров с крохотной вместительностью, которую мы тогда использовали, и получить множество мертвых миров месяц спустя. Поэтому нам нужно было найти способ использовать современную вместительность игровых миров, но при этом не загромождать зоны игроками. Кроме того, были еще две заметные технологические проблемы с шардингом, которые нужно было решить для поддержки классического поведения: существа не могут пересекать границы зон в шардинговом мире, ведь каждый шард (копия зоны) может работать на совершенно разных дата-центрах, поэтому, хотя технически это и решаемо, очень дорого и сложно пытаться заставить все работать таким образом, и, наконец, в PvP-ситуациях очень хотелось, чтобы пересечение границы зоны не позволяло бы сбежать и оба человека должны продолжить преследовать друг друга в новой зоне, а в шардинговом мире они могли оказаться на разных целевых шардах.

Следуя по стопам легендарного, Омара он взял шардинг и начал сшивать шарды в нечто, что стало известно как "слои". Да, слой – это просто склеенный кучей изоленты шардинг. Склеив эти осколки вместе, стало возможно передавать сообщения и обрабатывать перемещающихся между зонами существ, а игрокам присваивался определенный слой, так что если два человека находились в Западном крае и попали в Сумеречный лес, то оставались на одном слое и каждый оказывался в той же копии Сумеречного, что и другой. Ура, большой успех! Эта технология была необходима, чтобы иметь хоть какую-то надежду на открытие врат Ан'Киража. Ух! *содрогается* Но это уже совсем другая история.

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

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

Помните, для чего были созданы слои? Для попытки сделать полупостоянную копию мира, в которой вы будете жить в течение недели. Но люди не стали играть в эту игру таким образом. Родился Asmonlayer, и согласно мета-игре, если Альянс блокирует Черную гору на первом слое, то Орда вместо этого пытается переместиться на второй. Игра стала развиваться вокруг существования слоев, и хотя раньше считалось, что слои практически незаметны в обычной повседневной игре, они стали неотъемлемой частью игрового процесса Classic.

Ладно, с историей покончено, что происходит сейчас, и почему слои вдруг стали горячей темой в "Сезоне открытий"?

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

Но, как и многие другие наши ранние предположения, это не соответствовало тому, чего люди хотели на самом деле. Они хотели видеть других людей (шокирующее зрелище в MMO, я знаю), они хотели иметь возможность создавать случайные группы с незнакомцами, они хотели, чтобы в мире было достаточно людей, чтобы он был заполнен независимо от времени. В "Сезоне открытий" мы впервые включили технологию, которая сворачивает слои по мере падения нагрузки, поэтому она пытается сохранить каждый слой значительно заполненным. Это изменение было *почти* успешным, но у него есть некоторые особенности, которые мы хотели бы изменить (перемещение вас несколько раз, потенциальное разделение групп и т.д.). Но в результате теперь вы чаще наблюдаете перемещение на слой друг на друга. Обычно это происходило по желанию – если вы присоединялись к группе с кем-то на другом слое, то ожидали перемещения к нему. Теперь же впервые в Classic вы могли быть перемещены на другой слой случайным образом без предупреждения.

Самая большая проблема, с которой мы столкнулись в тот момент, заключалась в том, что некоторые ранние условности кода для слоев стали очень проблематичными. Все зоны слоя имеют одинаковое количество игроков, которое может находиться в них. Мы не можем, например, сказать: 500 человек в Ясеневом лесу и 1000 человек в Оргриммаре – все они используют одно и то же значение. Когда зоны работают очень по-разному, в зависимости от того, что игроки делают в этой зоне (безделье меньше загружает процессор, чем гигантское PvP-побоище) – это кошмар. Наличие нескольких слоев также очень дорого с точки зрения аппаратного обеспечения: например, если весь сервер отправится в Тернистую долину во время Кровавой луны, мы запустим целые слои для обработки дополнительных копий локации – в итоге мы можем запустить 16 пустых копий каждой другой зоны только потому, что нам нужно 16 копий Тернистой долины, и это отвратительно. Кроме того, в мире со слоями у зон нет множества возможностей, которые имеют место в шардинге основной версии игры: например, шардинг основной версии игры может создавать локации под режим войны с 50/50 балансом фракций, и у нас есть разные цели населенности на основе PvE и PvP.

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

Ребенок только что проснулся, так что я прекращаю болтать здесь и возвращаюсь к #ОтцовскимДелам, счастливого воскресенья!

Часть 2: Конфликт дизайна и проектирования!

Это драматичное название, но на самом деле никакого конфликта здесь нет. Итак, что же происходит с учащением обсуждений слоев в "Сезоне открытий".

На самом деле мы ничего не меняли: в Classic, The Burning Crusade и Wrath of the Lich King Classic используются одни и те же технологии.

Команда Classic пытается добавить в Classic контент, который "кажется" принадлежащим к Classic. Одна из таких вещей – PvP в открытом мире. Например, Мельница Таррен против Южнобережья – это культовое место, которое большую часть оригинального WoW фактически было постоянным полем боя PvP в открытом мире. Поэтому было создано событие в Ясеневом лесу, а теперь и событие Кровавой луны в Тернистой долине, как попытка придать такому поведению дополнительную остроту и интерес. В целом, когда все работает, людям все нравится и это хорошо. Но почему это оказалось настолько проблематичным с точки зрения слоев?

Игроки столкнулись с тремя проблемами:

1. Задержки.
2. Невозможность сгруппироваться на одном слое.
3. Перенос со слоя, на котором вы находились, посреди боя.

Давайте разберемся в каждой из них, и начнем с задержки.

1. Задержка, о котором мы говорим, – это задержка в самой симуляции, то есть вы нажимаете на кнопки, но игра долго распознает эти нажатия. Эта задержка вызвана в первую очередь нехваткой времени процессора. Есть некоторые отдельные потоки, которые могут работать только на одном ядре, и если это ядро работает на 100%, то оно не может работать быстрее, а если работы больше, чем оно может обработать за один такт сервера, то обычный такт в 50 мс займет 500 мс, и вы начнете замечать задержки.

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

Таким образом, PvE-сражения в группе – это дорого, PvP – очень дорого. Но мы только что создали контент, который делает именно то, что серверу удается хуже всего! Ах! Это не провал дизайна. Blizzard не руководствуется инженерными соображениями, когда дело доходит до геймплея. В целом, работа инженеров заключается в том, чтобы позволить дизайнерам создавать все, что делает игру наиболее интересной (конечно, есть ограничения и ресурсы не бесконечны). Так, когда в Ясеневом лесу впервые начались проблемы с задержками, первым делом было решено уменьшить количество игроков в зонах (помните, что все зоны в слоях имеют одинаковое количество игроков, так что это означало, что у нас останется меньше игроков во *всех* зонах). Меньше игроков – меньше работы для сервера, меньше задержек. На протяжении первого этапа мы подбирали значения, чтобы найти то, которое позволяет собрать в зоне как можно больше игроков без падения (некоторая задержка в массовом PvP вполне ожидаема, ведь игроки хотят видеть море врагов).

2. Хорошо. Вот люди не могут объединяться в группы и при формировании рейда люди как сумасшедшие разбрасываются на разные слои, почему так? Система слоев имеет несколько значений, одно из них – "целевое" количество людей, которое мы хотим видеть в данной зоне, другое – "максимальное" количество, которое мы можем видеть в ней же.

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

Как только зона достигает своего целевого значения, мы начинаем игнорировать резервирование слоя. В принципе, если вы на неделе были назначены на слой 1, отправляетесь в Тернистую долину и игра обнаруживает, что слой 1 превысил свое целевое значение, мы поместим вас в менее населенную копию этой зоны (и слой, поскольку зоны = слои в Classic). Это может быть первой причиной, которая может помешать вам объединиться в группу с друзьями.

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

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

Это одна из главных проблем, с которой вы сейчас сталкиваетесь в Тернистой долине. Поскольку все формируют группы по 5 человек и обычно один человек приходит раньше остальных, это приводит к превышению максимального значения для зоны и не позволяет остальным членам вашей группы попасть на ту же копию зоны. Представьте: если зона может выдержать 500 человек и впускает их всех, а затем каждый из них приглашает еще 4 человека – ах, черт, сейчас мы упадем. Поэтому мы все же должны иметь жесткое ограничение.

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

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

Как всегда, если вы находите подобные вещи увлекательными, подумайте о карьере дизайнера или инженера! Игры – это забавные и ужасно сложные звери, с которыми приходится работать, но очень приятные.
« Последнее редактирование: 19 Февраля, 2024, 19:03:05 by Wishko »

k0valski

  • Старожил
  • ***
  • Сообщений: 1558

  • Варкрафт: +
    • Класс: Монах
    • Сервер: Гордунни
Я считаю, что должен, не читая даже весь этот текст, от всего сердца поблагодарить тех, кто занимается оптимизацией этих слоев. Благодаря непосильному труду этих 2,5 человек я за полчаса до старта ивента, вместо отупляющего тик-тока, пытаюсь всякими ухищрениями попасть на 1 слой с другими людьми в пачке. Спасибо за мое ментальное здоровье!

Порше

  • Завсегдатай
  • **
  • Сообщений: 332
Цитировать
Все это произошло в Warlords of Draenor, когда после очень успешного запуска начальные зоны дополнения оказались совершенно неспособными справиться с нагрузкой. Печально покинувший нас Кертис МакКатерн (нет, он не умер, просто ушел из Blizzard...) работал три дня и ночи (мы больше не потворствуем такому поведению!) и создал первую версию шардинга. Эта новая технология позволила нам запустить несколько копий мира и разделить людей между ними.

Собственно что и требовалось доказать. Люди когда-то работали, вон 1 чел за 3 суток технологию сделал. А сейчас за 3 месяца толпой ничего толкового сделать не могут.

xALEKSx

  • Старожил
  • ***
  • Сообщений: 1041
Цитировать
Все это произошло в Warlords of Draenor, когда после очень успешного запуска начальные зоны дополнения оказались совершенно неспособными справиться с нагрузкой. Печально покинувший нас Кертис МакКатерн (нет, он не умер, просто ушел из Blizzard...) работал три дня и ночи (мы больше не потворствуем такому поведению!) и создал первую версию шардинга. Эта новая технология позволила нам запустить несколько копий мира и разделить людей между ними.

Собственно что и требовалось доказать. Люди когда-то работали, вон 1 чел за 3 суток технологию сделал. А сейчас за 3 месяца толпой ничего толкового сделать не могут.
Всё так) раньше при трудоустройстве была конкуренция, а сейчас - квоты.

Ravenhold

  • Завсегдатай
  • **
  • Сообщений: 616
Больше костылей богу костылей!

Malstrime

  • Старожил
  • ***
  • Сообщений: 1951
  • Мику

  • Варкрафт: +
    • Имя: Агеа
    • Класс: Жрица
    • Сервер: РФ
Цитировать
Все это произошло в Warlords of Draenor, когда после очень успешного запуска начальные зоны дополнения оказались совершенно неспособными справиться с нагрузкой. Печально покинувший нас Кертис МакКатерн (нет, он не умер, просто ушел из Blizzard...) работал три дня и ночи (мы больше не потворствуем такому поведению!) и создал первую версию шардинга. Эта новая технология позволила нам запустить несколько копий мира и разделить людей между ними.

Собственно что и требовалось доказать. Люди когда-то работали, вон 1 чел за 3 суток технологию сделал. А сейчас за 3 месяца толпой ничего толкового сделать не могут.
Так вы попробуйте сначала толпой что-то сложное сделать. Более того, с какого-то момента добавление новых людей в команду перестает увеличивать производительность этой самой команды.

Я не оправдываю существующие проблемы, но делюсь собственным опытом.
Отрекшиеся от Света, помните, что Тьма может поглотить вас. Свет есть! Помните о нём! Верьте в него! И тогда даже сквозь кромешную Тьму да пробьется его озаряющий луч.

YouTube
Логи

banantra

  • Завсегдатай
  • **
  • Сообщений: 583
Офигительные истории о которых невозможно молчать. Что то их прорвало в последнее время на такие истории.

Arasikage

  • Завсегдатай
  • **
  • Сообщений: 332
Хорошо, что у нас на шедоустрайке слоёв нет.
Но пинг вроде как повышается во время ивента.

Горнило ненависти

  • Старожил
  • ***
  • Сообщений: 3899
Цитировать
Все это произошло в Warlords of Draenor, когда после очень успешного запуска начальные зоны дополнения оказались совершенно неспособными справиться с нагрузкой. Печально покинувший нас Кертис МакКатерн (нет, он не умер, просто ушел из Blizzard...) работал три дня и ночи (мы больше не потворствуем такому поведению!) и создал первую версию шардинга. Эта новая технология позволила нам запустить несколько копий мира и разделить людей между ними.

Собственно что и требовалось доказать. Люди когда-то работали, вон 1 чел за 3 суток технологию сделал. А сейчас за 3 месяца толпой ничего толкового сделать не могут.
Эх, вот бы сейчас 72 часа подряд работать, а не домой приходить и кино посмотреть вечером. Не жизнь, а мечта, согласен.

Kozman

  • Завсегдатай
  • **
  • Сообщений: 104

  • Варкрафт: +
    • Имя: Абдырвалг
    • Класс: Жрец
    • Сервер: Гром
В очередной раз говорю, что эта система убила ВоВ.
Что дала система слоев =
1. Отсутствие игроков в локации.
2. Перескакивание со слоя на слой, чтобы убежать от противника, или пофармить мобов и тп

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

 

закрыть