Xcom 2 тормозит на мощном компьютере

Обновлено: 03.07.2024

Увы, вышла XCOM 2 сразу не лучшего качества. Проблем хватает у всех, начиная от оптимизации и заканчивая общей работоспособностью. В этой коротком гайде вы найдёте информацию по настройке игры, оптимизации настроек и производительности.

XCOM 2: настройка и оптимизация графики

По тегам: XCOM 2 тормозит, настройка графики, оптимизация, запуск на слабом железе

⇒ Этап первый: поиск конфиг-файла

Путь файла BaseEngine.ini для изменения \Steam\steamapps\common\XCOM 2\Engine\Config.

Данный файл нужно открыть при помощи любого текстового редактора. Вписывать настройки нужно в разделе SystemSetting.

Оптимизация XCOM 2 (под слабое железо):

Чтобы игра заработала даже на калькуляторе, вам понадобится убрать большинство настроек, которые могут не выключиться через меню (или попросту там отсутствуют). Средний прирост после модификации по всем пунктам: плюс от 15-30 fps.

Также можно через конфиг убрать заставки и видеоролики, которые изрядно бесят перед запуском. Файл DefaultEngine.ini хранится по всё тому же пути \Steam\steamapps\common\XCOM 2\XComGame\Config. Ищем раздел FullScreenMovie и там удаляем первые четыре строчки ↓

+StartupMovies=X2_2KFXS_Logos
+StartupMovies=X2_Logo
+StartupMovies=UE3TechLogo_XC2
+StartupMovies=XC2_LegalScreen
+StartupMovies=Black

Незабываем убрать в меню:

А) Выключаем SAO обязательно.

Б) Вертикальную синхронизацию.

Навигация по гайдам XCOM 2:

Запись опубликована 09.02.2016 автором igra-San в рубрике Прохождение игр советы и гайды с метками 2016.

Не идёт или тормозит XCOM 2? Гайд по настройке графики, оптимизации и детализации прорисовки : 24 комментария

Ну значит просто ждит патчи, тут уже ничего не поделать

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

Игра не тормозит вообще. Обновите себе видеокарту нищеброды

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

парень игре ващето если у тебя видяшка два гига класть на нее потомучто ее хватит с заготом даже ноутбуточной а игра заивит от проца и лучше бы они еще игру немного подпилили под более старые directx
если у меня ноут тянет на срених гта 5 который был изготовлен в 2012 году то меня можно считать нищернбродом и что у меня солабый пк? пока все игры тянет на средне минималках но в 60 фпс ео икском 2 падла из за криворуких оптимизаторов и тестеров у которых крутые пк и ссд им лень заниматься оптимизацией

Всегда смешил гонор мажоров, которым мама крутую игровую машинку купила)

Ты долбач?
Это оптимизация такая, а не видюха
Умник бл

Как изменять параметр DetailMode? Изначально стоит 2, если ставлю меньшее значение пропадает GUI загрузки сохранений, когда большее прирост производительности не наблюдается..Также в игре вертикальная синхронизация выключена а в конфиге параметр UseVsync стоит в True, стоит ли поменять на False?

DetailMode не фиксил через конфиг, а вот Vsync выключал отдельно. Через меню не вырубалась почему-то

Спасибо, поправил и теперь вроде бы лагает только при переходах и когда камера приближается. Тормозит только в местах с дождём

ParctileLODBias в файле конфигурации написан вот так ParticleLODBias. Поправь, а то кто то будет копировать и не найдет.

Скиньте пожалуйста BaseEngine.ini файл, не сделал бекап(

Отправил. Проверь почту

К сожалению, не имею больше сейвов, а почта с архивом была очищена.

xcom2 всё равно тормозит. Видимо нужно ждать ещё патчи. Первый исправил только хваталу змеи через 10 стенок

Будет ли идти с 10директом??

Привет! Меня зовут Александр, я руководитель программистов компьютерной графики в Gaijin в проектах CRSED и Enlisted. Иногда, в свободное время, я исследую как устроена графика в других играх и нахожу там что-то интересное.

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

Ниже представлена расшифровка этого видео.

Вероятно, вы играли в игру XCOM 2 или хотя бы слышали о ней. Она вышла в 2016 году. Сделана на движке Unreal Engine 3.5. Если оценивать XCOM как игру в целом, мне она понравилась. Увлекательный геймплей, приятная картинка, интересная история.

Единственная проблема, с которой я столкнулся, — это низкий FPS, в особенности на кадрах с выстрелами крупным планом. На базе и в тактическом виде эта проблема менее заметна. Средний FPS у меня был в районе 25-30. И мне стало интересно, выжимает ли игра все доступные мощности из моей ноутбучной GTX 1050 или можно сделать лучше. Сейчас я покажу вам 6 оптимизаций, которые могли помочь разработчикам улучшить производительность данной игры.

Захват кадров

Для анализа графики я использовал RenderDoc версии 1.12. Он без проблем захватил несколько кадров, которые я потом просмотрел. Я взял один кадр из меню, кадр базы, кадр на тактической карте и кадр с выстрелом.


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

«Жирный» G-buffer

Первая оптимизация связана с уменьшением размера G-buffer'а. Самый долгий проход — это заполнение G-buffer'а (>16 мс). Это видно как на таймингах различных проходов, так и на общем таймлайне.


Всего в G-buffer входит 5 текстур в формате RGBA16F, то есть текстуры имеют 4 16-битных канала и содержат вещественные числа.

Для разрешения 1080 требуется около 80 Мбайт видеопамяти для всего этого, что не так уж и много для современных видеокарт, но проблема в том, что все эти текстуры нужно заполнить. Запись в текстуру намного дороже чем чтение, поэтому много используемых текстур — это норма, а много рендертаргетов — уже не очень хорошо.

Итак, G-buffer содержит следующие текстуры:

Цвета эмиссивных (т.е. светящихся) материалов (причём альфа-канал этой текстуры пустой).

Альбедо или просто цвет без учета освещения (альфа-канал содержит Ambient Occlusion).

Нормали (в альфа-канале хранится номер одного из 4 материалов)

Параметры материалов (цвет металла + roughness).

Дополнительные нормали для анизотропных материалов (транслюсентность в альфа-канале — это параметр, показывающий насколько поверхность пропускает свет сквозь себя)

У текстуры эмиссива можно было бы удалить четвертый канал. И тем самым вместо 16 Мб потребуется 12 Мб.

Нормали хранятся в сыром виде. Можно упаковывать их при записи, тем самым снижая количество данных, и распаковывать при чтении [Подробнее можно прочитать тут]. Это, конечно, требует больше времени на выполнение кода, но существенно снижает количество требуемых данных.

Материал принимает всего 4 различных значения, значит, отлично пакуется в 2 бита. Предположим, что эти два бита мы положили к параметрам материалов. Тогда для нормалей остаются 2 канала по 16 бит каждый. Всего 8 Мб для моего разрешения экрана.

Параметры материалов оставим без изменения, за исключением кодирования номера материала в эту же текстуру.

Последняя текстура — параметры для транслюсентных материалов. Первые 3 компоненты — это единичные векторы, значит, их тоже можно закодировать в 2 вещественных числа. Остаётся 3 канала. Причём транслюсентные материалы не эмиссивные. По крайней мере, в захваченных кадрах я такого не видел. Значит, можно объединить эту текстуру с текстурой эмиссива, и на неё мы теперь тратим 0 Мб.

Итого, нам нужно 12 Мб для эмиссива и транслюсентности, 8 Мб для диффуза, 8 Мб для нормалей и 16 для параметров материалов. Всего 44 Мб. Почти в два раза меньше памяти. Думаю, это сильно бы ускорило проход для заполнения G-buffer.

Отсутствие объектов в предварительном проходе

Другая оптимизация, которая могла бы уменьшить количество записываемых данных в G-buffer, — это более агрессивное использование предварительного прохода (prepass). Prepass — это предварительная отрисовка сцены в буфер глубины. Выполняется она с целью уменьшить количество перезаписей пикселей G-buffer'а за счёт отбрасывания пикселей, не прошедших тест глубины. Текущий предварительный проход оптимизирует отрисовку, но можно добиться и лучших результатов.

При записи G-buffer'а некоторые пиксели перерисовываются до 24 раз.


Судя по вызовам драйвера, между prepass’ом и G-buffer пассом нет никаких копирований текстуры глубины или чтений этой текстуры на CPU. Значит, теоретически, всю геометрию, которая рисуется в G-buffer, можно было нарисовать в prepass’е. Таким образом, можно было бы сделать ещё быстрее. И учитывая, что это самый долгий проход во всём кадре, оптимизация не была бы лишней.

Не используется инстанцирование

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

А одинаковых объектов тут много. Не вдаваясь в подробности выполнения отдельных вызовов отрисовки и того, в каком порядке и как видеокарта их выполняет, хочу отметить, что при использовании инстанцирования потребовалось бы намного меньше вызовов функций DirectX, а значит меньше команд отправлялось бы на видеокарту. Уже это могло бы дать прирост FPS.

Level of Details

И последняя оптимизация связанная с рисованием сцены — это система level of details. Нет смысла рисовать детализированную геометрию, если она вдалеке и занимает пару десятков пикселей.

Во-первых, субпиксельные треугольники замедляют рендер. Подробнее можете прочитать в данной статье. Во-вторых, в этом нет практического смысла. Например, из почти тысячи треугольников этого объекта мы увидим разве что пару десятков.


Использование менее детальной геометрии могло бы заметно уменьшить количество рисуемых треугольников. Естественно, это ускорило бы рендер.

Полноэкранный SSAO (Screen Space Ambient Occlusion)

Второй по длительности проход после заполнения G-buffer'а — это подготовка текстуры SSAO. Она занимает от 8 до 10 мс. И проблема этого прохода в том, что он полноэкранный.


Как я рассказывал на стриме по GTAO, подобные эффекты лучше делать в половинном разрешении экрана. У профессионалов из Activision Blizzard получилось уместить отрисовку AO в половину миллисекунды. Они замеряли на PlayStation 4, а я на ноутбуке и сравнивать время таким образом не до конца корректно. Тем не менее отмечу, что у моей видеокарты в 2.5 раза меньше GFLOPS, а вычисление AO в игре медленнее в 20 раз чем в статье от Blizzard. В общем, думаю можно сделать вывод, что полноэкранный проход для AO может быть значительно ускорен.

Depth of Field

И последнее очевидное узкое место — это depth of field. В XCOM реализован очень интересный подход к этому эффекту. Рисуются 3 миллиона треугольников. Каждый из них соответствует пикселю текстуры в половинном разрешении экрана.


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

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

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

Если у вас лагает x-com 2, и при этом железо должно тянуть, просто отключите инет.

Я не знаю почему, но это помогает!

Я с самого начала пробовал всё: вылизал комп, обновил всё что можно, выставил настройки на самый минимум, но фпс выше 11 не поднялся(

Но стоило отключит инет и игра летает на долбаных максимальных настройках!

На спец игровых форумах попробуй полазить. Может есть варианты решения проблемы. Чем меня отпугнул X COM 2 - Это жуткие тормоза, хотя на минимуме летать должно и миссии на время. Видно производитель икс кома ещё и майнингом биткойнов подрабатывает

А где комп лучше лизать?

Вот в такие моменты и понимают люди, чем плохи крякнутые игры )))


Угадай, сколько мне лет?

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

Как-то одна девушка сказала, что она родилась в год Быка, и я ей сказал, что она неплохо выглядит для своих 35 лет.

А оказалось, что ей 23 года.


Доброта

Доброта

Разный подход

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

Американский канал: "Обратите внимание - один из болтов не выкручивается и должен остаться в крышке, он даже внешне отличается от всех остальных, это даже описано производителем в инструкции!"

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


Выгодный курс

Выгодный курс Юмор, Скриншот, Twitter, Бог, Сатана, Длиннопост, Энергия

Так вон оно как

То самое место

То самое место Кавказская пленница, Алушта, Крым, Леонид Гайдай, Трус Балбес Бывалый, Фотография

Остросюжетый триллер


Эта кабинка, наверное, всегда свободна

Экономия на спичках

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

Потом полотенца заменили на тонкие и рвущиеся. Все стали брать по два, чтобы нормально вытереть руки.

Сегодня их порезали на половинки. Народ стал брать по четыре.

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


Объявление о продаже

Объявление о продаже Мемы, Авто, УАЗ, Авто ру, Юмор

Не анекдот, а Писание.

Чат мой, люди знакомые, ставлю пятничное моё;)

Не анекдот, а Писание. Чат, Коронавирус, Вакцинация, Религия


Маркетинг

Маркетинг


Ответ на пост «Уборщица»

Примерно 15 лет назад я работал в мэрии города на довольно высокой в иерархии муниципальных служащих должности. Был молод и глуп в делах житейских, но прислушивался к советам старших. Моя мама, в первый день моей работы напутствовал меня словами: "в первую очередь здоровайся с уборщицей и тех персоналом, не игнорируй простых людей, они ещё всех вас там переработают." И я воодушевленный наставлениями мамы, да и воспитанием наученный прежде всего, всегда здоровался с уборщицами, поздравлял их с праздниками, иногда дарил небольшие презенты в виде шоколадок или пирожных. Очень хорошие, трудолюбивые люди и мне искренне было приятно с ними иногда переброситься парой слов. Так вот, отработал я там лет пять, уволился, ушел на другую работу. История поросла быльём, но. Недавно зашёл в мэрию документы сдать по нашей фирме и как назло паспорта нет с собой, грозный охранник не пропустил и я расстроенный уже собирался уходить, но тут вышла одна из тех самых уборщиц, узнала меня, очень искренне порадовалась встрече, рыкнула на охранника: наш человек, почему не пропускаешь! Тот что-то промямлил, мол не положено, но пропустил. Сдал я документы, ушел, а на душе приятно. Вот так вот, всех переработала и мэров и сэров и пэров, да и охрану гоняет.)))

xcom2-0006-2-1500x844

В плане геймплея XCOM 2 удался, а вот с оптимизацией в игре не все так хорошо.

Firaxis уже работает над патчем, но есть несколько способов устранить проблемы (которые могут и не решиться патчем), самостоятельно.

XCOM2_Slums_Sectopod_1.0

Ускорение анимации и устранение задержек.

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

Убрать задержки можно с помощью модов, либо самостоятельно.

Моды можно найти в Steam Workshop (1 и 2) и в Nexusmods (1 и 2). Поскольку не во всех модах используются все доступные твики, лучше отредактировать ini файлы самостоятельно.

В файле C:\games\Steam\steamapps\common\XCOM 2\XComGame\Config\Defaultanimation.ini необходимо поменять:

  • MaxUnitRunRate с 1.0 на 1.5 или 2.0 (это повысит скорость бега всех юнитов, включая врагов на 50%-100%)
  • bUseRunRateOption установить в true (в настройках игры появится ползунок для управления параметром скорости бега, активированном шагом выше)

В файле C:\games\Steam\steamapps\common\XCOM 2\XComGame\Config\DefaultCamera.ini некоторые опции могут встречаться множество раз, менять нужно всё:

r25BQ3rOxUvC.878x0.Z-Z96KYq

Снизить время загрузки базы после возвращения с миссий.

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

Читайте также: