В ближайшем будущем мы внесём некоторые улучшения в то, как Path of Exile использует доступную видеопамять. Эта статья поясняет, каким образом перемены скажутся на вашем игровом процессе и когда ждать обновления.

Графические карты обладают определённым объёмом видеопамяти (VRAM), используемым для хранения различных ресурсов, которые мы отрисовываем в текущей игровой сцене. Если, играя на DirectX 11, нашем отрисовщике по умолчанию, вы столкнётесь с нехваткой видеопамяти, то игра продолжит работать, однако частота кадров резко снизится, поскольку возникнет необходимость отрисовывать объекты, хранящиеся в системной памяти. Графический драйвер также начнёт перемещать ресурсы туда-обратно между основной системной памятью и видеопамятью, ещё больше замедляя процесс. У пользователей с недостаточным объёмом видеопамяти производительность под DirectX11 весьма скверная.

У API рендеринга Vulkan, хотя он и обладает множеством преимуществ в плане производительности, возможность использования системной памяти в экстренных случаях, как это сделано в DirectX 11, отсутствует. Поэтому при нехватке памяти, как правило, просто происходит краш. Первоначально, когда мы выпустили бета-версию нашего отрисовщика на базе Vulkan, у некоторых пользователей случались краши в те игровые моменты, которые сильно нагружают память.

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

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

Однако что отображать, если текстура ещё не загружена? Чтобы не показывать полностью чёрную текстуру, мы внедрили технику, называемую потоковой загрузкой, при которой самые низкие MIP-уровни (т. е. низко детализированные версии) каждой текстуры всегда остаются в памяти и таким образом можно быстро отобразить что-то отдалённо напоминающее итоговое изображение. Это лучше, чем значительная потеря частоты кадров или полное отсутствие картинки. И хотя потоковая загрузка текстур – это безобидная визуальная оптимизация, ей часто ошибочно приписывают роль в проблемах, на самом деле вызванных тем фактом, что игра слишком рано выгрузила из памяти тот или иной ресурс.

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

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

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

Данное изменение – не панацея от всех проблем с графикой/производительностью в игре, но, без сомнения, значительно улучшит ситуацию для большинства пользователей. Наша команда по работе с движком продолжит выискивать дальнейшие проблемы и решать их. Как всегда, благодарим вас за ваши отзывы и сообщения об ошибках.
Сообщение 
Grinding Gear Games

Пожаловаться на запись форума

Пожаловаться на учетную запись:

Тип жалобы

Дополнительная информация