Pull to refresh

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

Game development
Sandbox
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).
Tags:wot
Hubs: Game development
Total votes 39: ↑29 and ↓10 +19
Views62.6K
С++ game developer
from 170,000 to 200,000 ₽SPLRemote job
С++ game developer
from 100,000 to 170,000 ₽SPLRemote job
Sales Development Representative/ Business development manager
from 80,000 to 120,000 ₽RoonyxRemote job
Frontend Development Lead
to 550,000 ₽NUTSonМоскваRemote job