WORLD OF WARCRAFT

Тема: Игроки поспорили о том, является ли клиент WoW однопоточным или нет  (Прочитано 3119 раз)

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

Wishko

  • Модератор
  • Легенда
  • *
  • Сообщений: 53271



Как же красив Оргриммар на минимальных настройках графики и без лишних объектов!

Среди игроков сообщества расхоже мнение, что клиент World of Warcraft использует лишь один поток и это не позволяет игре в полной мере использовать все возможности процессоров и демонстрировать высокую производительность. Хотя у этого, возможно, есть какие-то преимущества, например позволяющие игре достойно работать даже на старых устройствах, это может негативно сказываться на владельцах мощных ПК, которые не видят ожидаемых показателей.:cut:

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

Цитата: Slightly_Famous
Правда ли, что FPS в WoW ограничен 1 ядром процессора?

В этом году я подсадил своего друга на WoW, и он жаловался на низкий FPS в рейдах и Дорногале. Я спросил, как сильно у него нагружается процессор, и он ответил, что нагрузка низкая и это вообще никак не связано... Сегодня я зашел к нему домой и увидел, что у него сильно забито 1 ядро и из-за этого он не может достичь 60 FPS в Дорногале. Его компьютер не является "высокотехнологичным", но все равно это как-то глупо.

reddit

Вот такой ответ по этому поводу он получил от модератора сообщества:

Цитата: YourResidentFeral
Хочу прояснить некоторые заблуждения/дезинформацию, потому что мы серьезно к этому относимся. WoW является многопоточным. Уже долгое время. Клиент игры по сути своей на данный момент представляет "Корабль Тесея".

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

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

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

Коротко: клиент WoW многопоточный. Главный поток обрабатывает аддоны. Если загрузка аддонов высокая или они выдают много ошибок, вы столкнетесь с проблемами.

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

Впрочем, с этим заявлением согласились далеко не все:

Цитата: solace2k
WoW на 90% однопоточный. "Он многопоточный" ничего не значит, если 99% нагрузки по-прежнему приходится на один поток. Главный поток отвечает не только за аддоны. Вы несете чушь. Основной движок разработан с учетом работы в один поток, и это не изменится без полного обновления движка. Если вы думаете иначе, вы дезинформированы. Отключите все аддоны и проверьте, как используется ваш процессор. В рейде на абсолютно топовом ПК я все равно имею 30 FPS.

Цитата: FuryxHD
WoW не является многопоточной игрой. Если бы это было так, вы бы не увидели, что одно ядро работает на максимуме. Даже в 2025 году движок по-прежнему загружает 99% работы, игровых функций/вычислений и аддонов в один поток. Именно поэтому процессоры X3D имеют огромное преимущество в этой игре, поскольку дополнительный кэш помогает выгрузить информацию/процесс гораздо быстрее, чем процессоры Intel.

В какой-то степени обилие аддонов и WeakAura действительно влияют на ситуацию, но основная проблема в том, что мы по-прежнему используем лишь один поток для выполнения 99,9% работы, а оставшиеся 0,1% – многопоточные. Это все равно что пойти в магазин и купить сок манго/апельсин, где содержание апельсина – 99,9%, а манго – 0,1%, но при этом на картинке есть огромное изображение манго.

DX12 в какой-то степени помог проблеме, но движок сильно устарел. Я использую Lossless Scaling для добавления Frame Generation, но если они смогут добавить Frame Generation в эту игру с помощью Nvidia или AMD, это тоже немного ее разгрузит. (Но даже в этом случае вам все равно понадобится мощный процессор X3D, чтобы иметь хороший минимальный FPS).

Игра сильно привязана к процессору, моя видеокарта в основном бездействует, а вентилятор никогда не раскручивается, так как она никогда не нагревается. (Играю на RTX 4090 с разрешением 3440x1440)

Цитата: Eternal-Alchemy
Обилие аддонов может вносить свой вклад в общую нагрузку, влияющую на отрисовку кадров, но кадры не ждут окончания вычислений аддонов на текущем кадре перед отрисовкой следующего. Игра не зациклена на том, чтобы пользовательский интерфейс был подхвачен, а отрисовка пользовательского интерфейса отделена от отрисовки игрового мира, и они не связаны друг с другом.

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

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

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

« Последнее редактирование: 29 Июня, 2025, 21:32:04 by Wishko »

doger92

  • Новичок
  • *
  • Сообщений: 79

  • Варкрафт: +
    • Имя: Самбуил
    • Класс: паладин
    • Сервер: гордуни
а че тут спорить вов старый кусок овна, который нормально работает только в открытом мире, даже с хорошим железом в рейде очко

Amberian

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

  • Варкрафт: +
    • Имя: Amberian
    • Сервер: Draenor
а че тут спорить вов старый кусок овна, который нормально работает только в открытом мире, даже с хорошим железом в рейде очко
а можно нам другого эксперта?

Morlang

  • Завсегдатай
  • **
  • Сообщений: 190
Ну переработка движка не невозможна, она нерациональна. Во всяком случае по мнению близов уж точно. Но если они хотят эксплуатировать игру еще 2 десятилетия, то наверняка придется. И чем чаще игроки будут жаловаться на производительность, тем активнее будут работать. Я кстати полагаю работа в этом направлении уже идет. Во всяком случае видно что они пытаются привести в порядок ID объектов.
« Последнее редактирование: 29 Июня, 2025, 21:45:57 by Morlang »

Kordan

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

  • Варкрафт: +
    • Имя: Кордан
    • Класс: Рыцарь смерти
    • Сервер: Ревущий Фъорд ЕУ
Товарищ, который рассказывает сказки про аддоны, видимо, давно не пробовал открывать сумки на персонаже.

Malstrime

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

  • Варкрафт: +
    • Имя: Atreya
    • Класс: Жрица
    • Сервер: Deathwing
Вообще сделать что-либо многопоточным -- задача нетривиальная. Представьте, что вы идете на кухню завтракать: для этого вам нужно сделать чай и подогреть себе еды.

Если делать последовательно, то

Для чая:
1. Вам нужно налить воду в чайник
2. Поставить чайник на место
3. Включить чайник
4. <свободное время когда можно заняться едой>
5. Положить пакетик в кружку
6. Налить горячую воду в кружку

Для еды:
1. Открыть холодильник
2. Достать завтрак из холодильника
3. Закрыть холодильник
4. Поставить завтрак в микроволновку (разгореваться)
5. <свободное время когда можно заняться чаем>
6. Достать еду из микроволновки

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

А если бы мы параллелили эти этапы, то левой рукой мы бы наливали воду в чайник, а правой открывали холодильник одновременно. Доставали еду и ставили чайник на место. Закрывали бы холодильник и нажимали на кнопку "включить" на чайнике.

(показать/скрыть)

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

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

YouTube
Логи

Grenadier

  • Завсегдатай
  • **
  • Сообщений: 649
  • Туп, жаден, прожорлив, ленив. Характер скверный.
а че тут спорить вов старый кусок овна, который нормально работает только в открытом мире, даже с хорошим железом в рейде очко

R5 7600 + 4060 ti = все хорошо, полет нормальный. Может вам к доктору сходить?

Велёф

  • Старожил
  • ***
  • Сообщений: 1031
Вообще сейчас основная проблема не в "однопоточности", а в том, что у клиента очень высокая нагрузка на оперативную память. При прочих равных (ASUS TUF B650m / 32Gb RAM 6000 CL40 / MBA RX 6950 XT) R7 7700x (который на ~10% мощнее в однопотоке) выдаёт на 30-40% фпс меньше, чем его собрат с большим L3-кэшем ака 7800x3d. Также можно поиграться с таймингами памяти, что тоже даёт серьезный прирост фпс при прочих равных (тестировал 32Gb RAM 6000 CL40 и 16Gb RAM 6000 CL34 на 7700x, разница была около 10% в пользу CL34, на 7800x3d было в рамках погрешности).
не ищу гильдию

Liberdicta

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

  • Варкрафт: +
    • Имя: Шарсанна
    • Класс: воин
    • Сервер: Азурегос
Если я правильно помню азы информатики, то одновременно всегда выполняется только 1 задача, сколько бы потоков не было. Потоки нужны для формирования списка задач к исполнению. Современные ПК очень быстрые. И сформированные задачи выполняются быстро. Поэтому создаётся иллюзия, что машина делает много вещей одновременно. Но это не так. Тут, действительно, важен вопрос, какие задачи игрой просчитываются хуже других. Чисто технически, разницы между открытым миром и рейдом/данжем нет. Есть некоторое пространство, где перемещаются куклы персонажей и взаимодействуют с мобами и боссами. Но в отрытом мире лагает меньше, если, конечно локация/шард не переполнен персонажами. То есть проблема где-то в обсчёте при определённых условиях. Сейчас без аддонов играть результативно не выйдет. Но рассчитывалась ли нагрузка внутри рейда на то, что у игрока ещё аддоны будут топтаться в интерфейсе? Аддоны прожорливы, это факт.

Annabet

  • Старожил
  • ***
  • Сообщений: 3175
а че тут спорить вов старый кусок овна, который нормально работает только в открытом мире, даже с хорошим железом в рейде очко
А лучше всего он работает на ворлд боссах в открытом мире)

lohich

  • Новичок
  • *
  • Сообщений: 4

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

Если делать последовательно, то

Для чая:
1. Вам нужно налить воду в чайник
2. Поставить чайник на место
3. Включить чайник
4. <свободное время когда можно заняться едой>
5. Положить пакетик в кружку
6. Налить горячую воду в кружку

Для еды:
1. Открыть холодильник
2. Достать завтрак из холодильника
3. Закрыть холодильник
4. Поставить завтрак в микроволновку (разгореваться)
5. <свободное время когда можно заняться чаем>
6. Достать еду из микроволновки

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

А если бы мы параллелили эти этапы, то левой рукой мы бы наливали воду в чайник, а правой открывали холодильник одновременно. Доставали еду и ставили чайник на место. Закрывали бы холодильник и нажимали на кнопку "включить" на чайнике.

(показать/скрыть)

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

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

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

stefan_flyer

  • Лучший автор
  • Ветеран
  • *
  • Сообщений: 5398
Вов это не однопоточная игра. Так же, как это и не идеальная фул многопоточная игра. Она юзает потоки, но всё ещё сильно опирается на производительность на ядро. Хотя нынче, скорее на подсистему памяти.

Цитировать
WoW на 90% однопоточный. "Он многопоточный" ничего не значит, если 99% нагрузки по-прежнему приходится на один поток.
В такой формулировке многопоточных игр в принципе не существует.

Цитировать
Основной движок разработан с учетом работы в один поток
Вот только даже ванильный клиент подгружает как минимум 4 (не полноценно, но всё же)

Цитировать
Я использую Lossless Scaling для добавления Frame Generation
Мнение этого человека не учитывается

Ну переработка движка не невозможна, она нерациональна. Во всяком случае по мнению близов уж точно. Но если они хотят эксплуатировать игру еще 2 десятилетия, то наверняка придется. И чем чаще игроки будут жаловаться на производительность, тем активнее будут работать. Я кстати полагаю работа в этом направлении уже идет. Во всяком случае видно что они пытаются привести в порядок ID объектов.
Они уже вносят массивные изменения, потому что по их же словам, те же драконьи полёты ранее были невозможны. Про дома они каждое интервью говорили "мы очень хотим, но это пока не реализуемо" лет 10 к ряду, если не все 20. А вот они на пороге.
Может быть, у них есть план в виде постепенного обновления кодовой базы, но понять мы это сможем не скоро.
(другое дело что багов таким макаром будет только больше в дальнейшем, потому что баги не возникают только если ничего не делать)

Вообще сейчас основная проблема не в "однопоточности", а в том, что у клиента очень высокая нагрузка на оперативную память. При прочих равных (ASUS TUF B650m / 32Gb RAM 6000 CL40 / MBA RX 6950 XT) R7 7700x (который на ~10% мощнее в однопотоке) выдаёт на 30-40% фпс меньше, чем его собрат с большим L3-кэшем ака 7800x3d. Также можно поиграться с таймингами памяти, что тоже даёт серьезный прирост фпс при прочих равных (тестировал 32Gb RAM 6000 CL40 и 16Gb RAM 6000 CL34 на 7700x, разница была около 10% в пользу CL34, на 7800x3d было в рамках погрешности).
Как я подмечал ранее - крайне иронично, что мегатехнологичные топовые АААА проекты сегодня упёрлись ровно в то же, что и вов - память.

WowIsDead64

  • Ветеран
  • ****
  • Сообщений: 6408
  • Нет подписки
Нубы спорят. Про берут и смотрят. И это только то, что в окно поместилось.

Суммарно там потоков на 2,5 таких окна, но некоторые относятся к системе и к дровам видушки. Таких штук 10.

Тема высосана из пальца, т.к. если иметь память не как у золотой рыбки, то можно вспомнить, что речь о многопоточности шла еще с каты. Я как сейчас помню, качал какого-то альта по низине шолозар. Это был точно уже не лич, так что скорее всего какой-нибудь пре-патч каты. Ну в пандах то точно.
« Последнее редактирование: 29 Июня, 2025, 23:32:16 by WowIsDead64 »
ФОМО, гейтинг, рандом, гринд, овертюн, компетишн - эндгейм.
Соло ММО: больше никаких унизительных очередей и токсичных соревнований.
Играть в онлайн игры это как пытаться доехать на автобусе до работы в час пик.
Единственная жизнеспособная выигрышная стратегия в этом случае - не играть в них.

NestorTheWizard

  • Новичок
  • *
  • Сообщений: 16
Нубы спорят. Про берут и смотрят. И это только то, что в окно поместилось.

Суммарно там потоков на 2,5 таких окна, но некоторые относятся к системе и к дровам видушки. Таких штук 10.

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

WowIsDead64

  • Ветеран
  • ****
  • Сообщений: 6408
  • Нет подписки
Ну это передергивание. Разговор идет о количестве потоков в движке, что используются для рендера и создания основной картинки. Мелких служебных потоков всегда можно насоздавать море или запросить из тред пула по мере надобности. Так что скриншот вообще ничего не доказывает.
Ну тема называется является ли клиент вова однопоточным. Тут начали что то обсуждать про аддоны, хотя еще во времена каты близзард уже сказали, что анимации уже в отдельном потоке. Так что не только про рендер. И это вы не передергивайте.

А есть смысл использовать dx12 без многопоточности? Его вроде как ради этого и изобрели. В какой-то момент производительность игр на одном потоке перестала расти и чтобы люди не сидели всю жизнь на своих p4 с одним потоком, им стали втюхивать dx12.
ФОМО, гейтинг, рандом, гринд, овертюн, компетишн - эндгейм.
Соло ММО: больше никаких унизительных очередей и токсичных соревнований.
Играть в онлайн игры это как пытаться доехать на автобусе до работы в час пик.
Единственная жизнеспособная выигрышная стратегия в этом случае - не играть в них.

 

закрыть