XVM-эксперимент фокуса артиллерии в World of Tanks. Ускоряем загрузку карты в World of Tanks Проблемы при обновлении

Заметил я как-то, что на моём компьютере карты в WoT загружаются очень долго - больше минуты. Заходишь, бывает, в бой, а он уже секунд 30 идёт. А иногда вообще обнаруживаешь свой танк уже в виде горящих обломков. Компьютер мой, конечно, старенький и давно просит апгрейда, но вначале можно попытаться сделать что-то программным путём.

Итак, первое дело - определить причину тормозов. Список подозреваемых, в принципе, не очень большой:

  • Криворукость разработчиков игры
  • Барабашка
Начнём оперативно-розыскные мероприятия с очной ставки. Берём прекрасную утилиту Process Monitor от Sysinternals, запускаем, добавляем в фильтры мониторинг процесса worldoftanks.exe и - поехали. Стартуем игру, начинаем бой, ждём загрузки карты и смотрим на результаты мониторинга.

Как видно из скриншота, загрузка CPU, памяти и сети далеки от максимальных. А вот график загрузки HDD весьма неровный, есть пики и провалы. Давайте посмотрим детальнее. Жмём «Tools->File summary...». Бинго! Тут мы видим целую кучу операций ввода\вывода (70 602 штуки, если быть точным).


Общий объем читаемых по ходу загрузки данных составляет примерно 450 МБ, время работы файловых операций - более 50 сек. Значит именно файловые операции занимают большую часть времени загрузки карты. Оно и немудрено - в WoT хорошо проработанные карты, модели танков, всякие там дома\деревья\камни. 450 МБ читаемых данных выглядит адекватной ценой за всё это. Но как же мы можем ускорить время загрузки? Ведь все эти данные игре всё-равно нужно прочитать. Есть старый проверенный способ ускорения файловых операций - RAM диск. Но вот в чём беда - в лоб применить его не выйдет. Игра занимает 11 ГБ, а на моей машине всего 4 ГБ ОЗУ. То есть даже создав RAM диск размером 11 ГБ и поместив на него всю игру, я не обману законы физики и операционную систему - диск может и создастся, но данные на нём будут свопится на всё тот же жесткий диск, от использования которого мы хотим уйти. Не вариант.

Что ж, копнём глубже - посмотрим, обращения к каким именно файлам занимает больше всего времени. Открываем вкладку «By folder» и видим следующую картину.


Большую часть ресурсов кушает обращение к файлам в папке %World_of_tanks%\res. Тут можно выделить следующие подпапки:

  • audio: 14.48 сек - папка занимает 200 МБ
  • content: 9.93 сек - папка занимает 844 МБ
  • spaces: 6.19 сек - папка занимает 419 МБ
  • vehicles: 8.60 сек - папка занимает 1.7 ГБ
Если бы мы могли поместить в память файлы из некоторых этих папок, то загрузка карты значительно бы ускорилась. Например поместив в ОЗУ файлы из папок audio и spaces, мы выиграем 21 секунду времени ценой 619 МБ ОЗУ - вполне неплохо. Но в лоб этого сделать не выйдет - как же игре объяснишь, что часть её ресурсов лежит тут, а часть - там? В этом месте я уже хотел удариться в жёсткий хардкор в духе Harkonnen "a:
  1. Загружаем нужные файлы в память
  2. С помощью какого-нибудь Microsoft Detours или ApiHijack вешаем хуки на функции CreateFile, ReadFile (и может что-то еще) в процессе Worldoftanks.exe.
  3. В хуках определяем, какой именно файл пытается читать WoT. Если один из наших - даём ему данные из памяти, если левый - перекидываем вызов на настоящие функции файлового ввода\вывода.
Но, к сожалению, не сложилось - мне в голову пришла идея, которая позволила сделать всё в разы проще и этим всё испортила:). Идея состояла в том, что, дескать, как бы классно в этом месте было бы быть пользователем *nix-систем, где есть прекрасная команда mount, позволяющая примонтировать что угодно куда угодно. В Windows такого нет… Или есть? На периферии сознания витали какие-то смутные воспоминания и я полез в голову и Гугл за информацией (когда уже ребята из Гугла в конце-концов сделают поиск в моей голове - совсем обленились что-то!). Итак, вот что мы имеем под Windows:
  • subst - делает ровно противоположное тому, что нам надо. Позволяет создать новый виртуальный диск, корнем которого будет являться заданная папка. А нам нужно наоборот - связать существующий диск с «виртуальной» папкой.
  • Cпособ, описанный в Microsoft KB - на первый взгляд делает то, что нам нужно. Позволяет для файловой системы NTFS создать связь между некоторой папкой и корнем диска. Прекрасная штука, но, к сожалению, не заработала с моим RAM-drive (даже когда я отформатировал его в NTFS).
  • Ну и наконец я решил поискать там, откуда подобный поиск следовало начинать - в списке утилит от Sysinternals. И, конечно же, там нашлось то, что мне было нужно. Утилитка позволяет примонтировать к определенной папке любой путь в нашей файловой системе (есть еще одна похожая - linkd).
Таким образом, окончательный алгоритм выглядит так:
  1. Берём любой RAM-drive (например из вот-этого списка). Я взял вот этот .
  2. Думаем, сколько ОЗУ мы можем выделить под кеширование.
  3. Переписываем папки с ресурсами игры на RAM-drive (оригинальные папки переименовываем - они нам еще понадобятся).
  4. С помощью Junction монтируем папки на Ramdrive в папку ресурсов игры. Как-то так:
    «junction D:\Games\World_of_Tanks\res\audio r:\audio»
  5. Запускаем игру и наслаждаемся.
К стати, все эти пункты можно реализовать в одном батнике, а во втором - откат всего обратно.

Конечно, в этом всём деле важно не переборщить, чтобы объем файлов на RAM-drive не стал столь большим, что ОС решит задействовать своппинг - тогда вся идея летит к чертям. Но вот что вышло у меня:


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

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

Это сообщение некорректное и никак не влияет на успешность загрузок или обновлений. Мы знаем о проблеме и работаем над её решением.

Зависание игры при запуске на Mac OS X

Чтобы решить проблему, переустановите Codeweavers Mac Wrapper по .

Codeweavers Mac Wrapper не разработка Wargaming.net, и World of Tanks на Mac OS X не поддерживается. С любыми вопросами вы всегда можете обратиться к разработчику:

Игра не запускается при переключении на улучшенную графику

Такое происходит, если конфигурация компьютера ниже необходимой для работы игры при настройке «Улучшенная графика». Для решения проблемы:

  1. Скачайте архив .
  2. Распакуйте его и запустите.bat-файл - он автоматические удалит настройки игры.
  3. Запустите игру.

Разрешение экрана вне диапазона

Такое сообщение появляется, если клиент игры был запущен на разрешении выше поддерживаемого монитором или видеокартой. Для решения проблемы удалите настройки клиента:

  1. Скачайте архив .
  2. Распакуйте его и запустите.bat-файл - он автоматические удалит файлы настроек игры.
  3. Запустите игру.

Проблемы при обновлении

Проблемы при запуске игры

При запуске клиента игры может возникать следующая ошибка (название файла может отличаться от указанного на скриншоте):

  1. Откройте Game Center.
  2. Выберите World of Tanks в верхней части окна.
  3. Нажмите на кнопку «Настройки игры».
  4. В настройках нажмите «Восстановить игру».

Для решения проблемы нужно проверить целостность клиента. Если вы запускаете игру через :

  1. Запустите лончер.
  2. Перейдите в настройки (нажмите изображение шестеренки в правом верхнем углу лончера).
  3. Перейдите на вкладку «Поддержка» и нажмите на кнопку «Проверить».
  4. Дождитесь завершения процесса и нажмите на кнопку «Играть».

О решении других проблем при запуске игры читайте

Оленемер (часть мода XVM) это «fucking shit», который нужно немедленно запретить в игре. Я желаю [плохой жизни] разработчикам данной модификации — так летом в EU стартовала волна протеста против использования игроками одной очень неприятной части мода XVM — отображение статистики игроков в бою. Видно, там на западе тоже осознали всю боль (до них дошло), которую испытывают многие игроки нашего кластера.
Далее один игрок из Америки пообещал провести тщательное расследование этой проблемы, и показать, не является ли всё это выдумкой и натянутой проблемой. В середине августа этого года он опубликовал на reddit топик со своими итогами. Первый из русскоязычных медиаличностей на исследование пользователя под ником WardJumpforJesus обратил внимание G1deon . Пост, кстати, после обсуждали далеко за пределами танкового комьюнити, игроки указывали на похожие случаи в других играх.

«Далеко не секрет, что статистика игроков по версии XVM частенько аукается им самим же в виде повышенного внимания со стороны противника (да и у союзничков, что скрывать, временами срывает крышу). Разумеется, игроки со слабой или даже средней статистикой склонны отрицать излишний фокус, но люди с высокой и даже уникальной статой божатся, что разница существует, и фокус порой бывает действительно невыносим!

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

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

Для начала я провёл 1000 боёв на основном аккаунте, а это ~2500 WN8, 59% побед, уровни техники — 8…10.

Статистика распределения артиллерии в боях:

357 боёв с тремя артами;
- 342 боя с двумя артам;
- 161 боя с одной артой;
- 140 боёв вообще без артиллерии (привет, Малиновка!).

ИТОГ: За 1000 боёв на этом аккаунте меня станили 622 раза.

Эксперимент явно становился интересным, и для максимального соблюдения условий я продолжил игру только на средних танках на втором аккаунте (~200 WN8, 42% побед), принадлежащем моему, кхе-кхе, младшему брату. Уровень боёв был аналогичен: 8…10 уровни.

Статистика по количеству артиллерии:

401 бой с тремя артами;
- 276 боя с двумя артами;
- 154 боя с одной артой;
- 169 боёв без артиллерии.

ИТОГ: За 1000 боёв на таком аккаунте стан дотянулся до меня 104 раза!

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

Честно, я никогда не получал такого удовольствия от игры в World of Tanks, особенно когда в боях не требовалось выкладываться полностью и затаскивать заведомо сливные катки.
Я знаю, это несбыточная мечта, но XVM (а точнее часть мода — прим. WOT Express) не должно быть места в этой игре! - он лишь провоцирует токсичность и является, в том числе раздольем для игровых троллей, когда они занимаются любимым делом: портят статистику другим игрокам.
Охх, как же я натерпелся от арты...

Итак, и XVM (часть мода — прим. WOT Express), и арта - это большие проблемы игры, но в совокупности это однозначно мечта для игровых троллей. В WG вообще в курсе этой реальной проблемы?».

При всём этом токсичности, данного фокуса по цвету статистики на EN/NA ГОРАЗДО меньше чем у нас. Кто рискнёт повторить на RU?)
Исследование автора набрало довольно большую популярность и получило 94% одобрительных оценок. Некоторые в комментариях признавались, что намеренно выбирают более скиловых игроков для своей цели. WardJumpforJesus поддержали и некоторые западные стримеры.

Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: