Быстрая загрузка World of Tanks: попытка №2

image

Вместо предисловия

После прочтения статьи Ускоряем загрузку карты в World of Tanks как-то само собой родилось решение дополнить статью пользователя tangro.

Суть проблемы

Причину долгой загрузки карт в WoT обнаружить очень легко — достаточно заглянуть в папку \World_of_Tanks\res. Почти все ресурсы игры, а их более 35 000, хранятся в этой папке в открытом виде. Огромное количество файлов малого размера и является главной причиной, ведь любой современный HDD имеет катастрофически низкую скорость чтения мелких файлов, на порядки ниже скоростей при линейном чтении.
Решить проблему можно раз и навсегда, упаковав текстуры в один или несколько архивов, как это сделано в World of Wacraft. Чтение из архива будет значительно быстрее, а распаковка вряд ли скажется на производительности игры на современных компьютерах. Разработчики обещают упаковать ресурсы, но ждать улучшения можно вечно. Так что нам опять придется делать все самостоятельно и другим способом…


Радикальное решение

Если вы являетесь счастливым владельцем SSD накопителя и храните WoT на нем, то зашли вы в этот топик лишь из праздного любопытства. Остальным я могу лишь посоветовать не ждать у моря погоды, а купить один из них сейчас. Современный SSD относительно дешев (64Гб стоит до 4000р), дьявольски быстр (раскроет потенциал контроллера SATA Rev. 3.0) и, за редким исключением, очень надежен. Для Crucial M4, одного из текущих фаворитов рынка, заявленный срок службы составляет 72Тб записи, чего многим домашним пользователям хватит на годы.
Преимуществе SSD — высокая скорость чтения, причем не сколько линейная, сколько скорость на мелких блоках. И если не всякий HDD читает 4Кб блоки хотя бы со скоростью 1 мегабайт в секунду, то твердотельные накопители выдают уже десятки МБ/сек.

Вот наглядная демонстрация загрузки со старенького Intel X25-M G2:

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

Современная ОС

Приверженцы Windows XP могут не знать, что Windows 7 отлично кеширует данные. Причем дело не столько в ReadyBoost и Superfetch, сколько в самом принципе работы с памятью. Абсолютно не разбираюсь в деталях, но постоянно вижу, что вторая и последующие загрузки приложения происходят ощутимо быстрее. Выходит, стоит всего лишь раз «переждать» загрузку даже со старенького HDD, а дальше данные уже будут грузиться из оперативки.
Нюанс в том, что оперативной памяти должно быть достаточно. И если 4Гб можно считать вполне сносным объемом, то на компьютерах с меньшим количеством выгода от кеширования будет незаметна. Но, опять же, цены на ОЗУ сейчас очень низкие, и взять 8Гб комплект самой обычной DDRIII 1333МГц можно всего за 1400-1600р. Апгрейд памяти вместе с установкой 64-битной ОС не бьет по карману и еще откликнется в будущем.

Если нет желания тратиться

Первым делом нужно уменьшить объем данных для загрузки. А так как эти данные в основном являются текстурами, то их можно банально сжать. Можно самому, а можно скачать уже готовые текстуры, ведь на официальном форуме есть куча вариантов.
Один из них стоит выделить отдельно — это Улучшенные текстуры от AHuMex'a. Автор не только грамотно пережал текстуры, но и поколдовал над цветами, добавив яркости и сочности игре. Вариант с 50% компрессией ИМХО самый оптимальный, качество можно оценить тут. Качаем архив, распаковываем в папку игры и смотрим на результат (до и после):
image image
Экономия почти 1.8Гб, при этом игра, на мой субъективный взгляд, не стала выглядеть хуже. Оценить разницу в скорости загрузки не могу — на SSD она минимальная.

Следующий шаг — отключение ненужного. Эффект от этого маленький, но есть. Удаляем или переименовываем следующее:
  • Лишние звуки в папке \res\audio. Названия у файлов «говорящие», разобраться легко. Повторяющаяся музыка уже давно набила оскомину, так что я смело удалил music.fsb. Остальные архивы не трогал и за безопасность удаления не ручаюсь.
  • \res\gui\flash\video\Logo_All.usm (заставка)
  • \res\gui\flash\login_bg2.tga (фон окна авторизации)

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

Вместо переноса некоторых папок на рамдиск можно перенести их просто на другой физический HDD, если такой имеется.

Ну и конечно же, не забываем удалить папку кеша обновлений (updates вроде бы), и сделать профилактическую дефрагментацию диска. Толковый дефрагментатор переместит файлы как можно ближе к физическому началу HDD, где скорость традиционно выше. Могу посоветовать Auslogics Disk Defrag, который есть и в portable варианте. Ну а чтобы очистить систему от возможной кучи ненужных файлов, есть CCleaner.

Другие причины

Конечно же, на дисковых операциях свет клином не сошелся, и на загрузку влияют также другие факторы. Их тоже можно и нужно учитывать:
  • WoT использует старую версию движка от BigWorld Technologiy. Эта версия утилизирует лишь одно процессорное ядро. Игра хорошо откликается на разгон, но почти не чувствительна к многоядерности.
  • Сетевые задержки тоже могут быть причиной. Оптимизировать настройки соединения можно одной из утилит, например PingEnhancer.


Credits

В статье использованы материалы официального сайта и форума World of Tanks.
Картинка в начале: Tank by ~flyingdebris @ deviantart.com.
Моды на моих скриншотах: OverTargetMarkers (неймплейты, не виден, автор NicolasSiver), OverCross (прицел, автор NicolasSiver) увеличенная миникарта (автор неизвестен, редакция AHuMex'a), 3D-иконки 4.0.6 (автор Black_Spy).
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 57

    +8
    Мьсе, а реализуйте нам описанное во 2-м абзаце? :)
      +1
      Найти бы еще, как поднять fps на Mac. Пожатые текстуры не сильно помогли.
        +2
        Макбук с Вин 7, полет более чем отличный.
          0
          Мои Вам соболезнования.
            +1
            Под Lion ни д2 ни WoT не идут, так что они мне ни к чему =)
              0
              д2 — Дом2? :-)
              Просто вы готовить их не умеете. Я себе спокойно играю на Lion в WoT — отсюда мой первый комментарий.
                0
                Diablo 2 :)
                  0
                  Ведь есть клиент D2 под Mac.

                  Или под Львом он отказывается работать?
                    0
                    В Lion убрали Rosetta, а D2 написан для PPC.
                  0
                  КАК?
                  0
                  Где вы взяли клиент для мака? Или через виртуалку?
                    0
                    Товарищ gooddy уже написал, что можно сделать это через Crossover. Для ленивых есть готовая сборка — rutracker.org/forum/viewtopic.php?t=3349815. Так же в том треде описывается решение многих проблем, но главная — низкий fps — остается в силе. Хотя многие, заключив наверное сделку с дьяволом, — победили и ее.
          0
          Сам я в WoT не играю, но могу предложить провести эксперимент. Перенести ресурсы на обычную флешку. Подойдут junction.exe или SteamMover.
            +1
            Думается мне, что чтение в флешки будет происходить еще медленнее, чем с HDD
              +2
              Если не брать в пример какую-то супер-флешку, то так и есть. Перенос только усугубит ситуацию.
                0
                Линейная скорость флешки однозначно проигрывает HDD, а параллельная в десятки потоков?
                Не даром ведь Microsoft внедряло ReadyBoost.
                  +2
                  Не поленился и провел натурный тест. Копировал папку res\vehicles\american, у меня она весит 580 Мб (5988 файлов). Приемником служила сетевая шара, с производительным рейдом (скорость приема 60-80Мб/с).

                  Итог:
                  1. Копирование с HDD заняло — 1:39
                  2. Копирование с Flash (10 класс) — 1:51

                  Так что да, перенос только усугубит ситуацию.
                    +1
                    Что и требовалось доказать, а меня уже заминусили ))
                      0
                      Это все еще линейная скорость, просто много маленьких файлов выставлено в очередь.
                      Если у HDD одновременно с папкой res\vehicles\american начать копировать другую папку, то суммарная скорость двух потоков будет на порядок меньше, чем у одного. У флешки суммарная скорость двух потоков должна быть ниже, чем у одного, но не настолько катастрофически.
                      Ну и для чистоты эксперимента копировать не на сетевую шару, а в оперативную память.
                      Если вас действительно интересует такой эксперимент, то могу вечером дома провести.
                        0
                        Есть сомнения, что WOT при загрузке пытается тянуть файло в несколько потоков. На самом деле, интересно, конечно, провести тест в идеальных условиях, вот только как их создать :)
                          0
                          Что там нахимичили разработчики WoT не знаю, а в качестве условия можно использовать RAMDisk. Не хочется с ним на рабочем компе баловаться.

                          Ну и методика замеров «на глаз» не самая удачная, но другую я пока не придумал.
                            0
                            Пытался вчера провести эксперимент. Первый тест прошел в целом правдоподобно, а вот следующие пролетали нереально быстро. Windows все хитро закешировал в оперативку и напрочь отказывался тянуть с диска.
                              0
                              Угу, я тоже потыкался, как сделать нормальный стенд — так и не допер :)
                  0
                  Спасибо!!! )
                    +1
                    > Апгрейд памяти вместе с установкой 64-битной ОС не бьет по карману
                    Вы наверно цену операционки не учли :)
                      +2
                      А Вы наверное, страну не учли.
                        +3
                        Какая бы не была страна, я не думаю что все поголовно воры и жулики.
                          0
                          Москвич?
                            0
                            Нет, со Львова.
                        0
                        Почему? Retail версии по идее двумя дисками комплектуются, 32 и 64 бита.
                          0
                          Я покупал для тещи. Нет, только один диск.
                            0
                            www.ulmart.ru/goods/182109/
                            2 диска
                            Может вы OEM брали? Хотя еще от редакции зависит…
                              0
                              Тем не менее, активация обычно проходит независимо от редакции. По крайней мере, лицензии dOEM семерки у нас одного типа, а диски восстановления можно заказать как 32, так и для 64бит.
                          0
                          Все замечательно. Хотя в ближайшему будущем, надеюсь, костыли не понадобятся. Разработчики, наконец то, обещают упаковать ресурсы игры.
                            0
                            А как насчет запаковать все папки с текстурамы средствами обыного NTFS? Уверен, что будет прирост в скорости загрузки и никаких переносов папок и виртуальных дисков.
                              0
                              напишите, пожалуйста, подробнее
                                –1
                                А как насчет запаковать все папки с текстурамы средствами обыного NTFS?

                                Если мне не изменяет память (впрочем, обратный вариант был бы очень удивителен), NTFS не умеет сжимать папки, NTFS умеет только сжимать файлы.
                                  0
                                  NTFS может сжать все файлы в папке. Саму папку ясное дело он сжать не может, там сжимать нечего.
                                    0
                                    А польза бы как раз была не от уменьшения общего объёма файлов (благо что можно сжать в JPEG/PNG, или какие там текстуры, тем более слабеньким NTFS-ным алгоритмом сжатия), а от уменьшения количества файлов на FS.
                                      0
                                      В прошлом топике уже говорили, что надо сделать — перенести блоки на диске так, чтобы они считывались последовательно.
                                        0
                                        Дефрагментация группы файлов (при этом эту группу ещё надо умудриться расположить на диске именно в порядке считывания их игрой) и дефрагментация одного файла одинаково полезны. Только для одного файла (что компрессированного, что нет) понадобится всего одно обращение в MFT, а для тридцати семи тысяч — тридцать семь тысяч.
                                    0
                                    У меня была такая же мысль, как только прочитал топик. Сейчас появилась возможность проверить. Я сжал всю папку res. По ощущениям скорость загрузки карты увеличилась. До сжатия при первом попадании на карту я мог появиться уже в стартовом отсчете, а теперь я появляюсь при 50 секундах предстартового отсчета.
                                  0
                                  Спасибо за статью, а то подбешивали тормоза на ноутбуке.

                                  [offtop]
                                  Автор, будь ты проклят со своим Т-54.

                                  -Артовод.
                                  [/offtop]

                                    0
                                    А тормоза на ноуте разве лечатся пережатием текстур? Или вы имели в виду тормоза при загрузке, а не при самой игре? (у меня проблема на видюхе Geforce9300M — игра выдает 14 фпс-ов, хотя на этом ноуте коре2дуо, и 2 гига рамы).
                                    А карты грузятася очень быстро, за секунд за 10.
                                      0
                                      Вот думаю проверить, насколько даст прирост сжатие текстур. Думаю 3% для начала поставить и посмотреть. Попутно на форуме советуют убрать дым. Посмотрим, что получится выжать из моей GF9650M.
                                    +1
                                    Нужен топик «как увеличить количество ФПСов в WoT».
                                      0
                                      я так понимаю, на слабых компах в wot играют любители пошаговых стратегий )
                                        –4
                                        товарищи, сделайте апгрейд железа и не мучайтесь в боях за лишнюю единичку fps, мы не в 90х живем когда достать железяку было сложно и дорого
                                          0
                                          Огромное количество файлов малого размера и является главной причиной...

                                          Главной причиной является использование «неправильных» FS :P
                                          Вот бы ReiserFS плевал на мелкие файлы.
                                            0
                                            Но вряд ли эта ФС разовьется в ближайшие года или десятилетия… Или сколько лет тюрьмы дали её создателю за убийство?
                                            0
                                            После удаления папки Updates перестало пускать в игру («Не удаётся установить сетевое соединение»). Пришлось переустанавливать. Такой загадочный Варгейминг…
                                              0
                                              Это не из-за удаления папки, так бывает иногда, помогает перезапуск игры :)
                                                0
                                                Знаете, я немного слышал краем уха о методах локализации проблем. К счастью, дома >1 компьютера, поэтому я имел чудесную возможность лицезреть, что свежий клиент входит в игру, а почищенный — нет.
                                                  +1
                                                  Если «перестало пускать в игру» на этапе авторизации после ввода логина-пароля, то Ваш случай с огромной вероятностью был лишь совпадением. Иногда авторизация на конкретном ПК просто не проходит по неизвестной причине, и это не связано с удалением или изменением папки updates. Решить вопрос можно разными способами, сложность которых ранжируется от «просто подождать» до «переустановить клиент». Я обычно решаю вопрос так:
                                                  — запускаем клиент, логинимся
                                                  — если клиент висит на авторизации — Alt + F4
                                                  — повторяем первые два пункта еще 2 раза, пока при попытке логина не выдает ошибку «spam protection»
                                                  — ждем минуту
                                                  — логинимся, сервер пропустит нас сразу же
                                                  Получается действенно и относительно просто. Другой вариант — переименование/удаление папки %AppData%\Wargaming.net, заход в игру и авторизация (настройки сбросятся), Alt+F4, восстановление папки и повторный заход.

                                                  Проблемы с заходом обычно проявляются в прайм тайм, что наводит на мысли о вине разработчиков, не обеспечивший достаточной мощности логин серверу.
                                                    0
                                                    >> и это не связано с удалением или изменением папки updates
                                                    Я то же такого мнения, и в таких случаях то же открываю по несколько раз, и всегда помогает, но сегодня не прокатило почему-то.
                                                0
                                                Я папку не удалял, но так же не смог войти с утра, а так хотелось перед работой повеселить мозг :)

                                              Only users with full accounts can post comments. Log in, please.