Большой гайд по оптимизации
(304 ratings)
Jan 8, 2021 @ 10:42am24,488890
Modding or ConfigurationRussian
Главная
Я испробовал множество настроек читая всяческую документацию к ue4 и также использовал гугл, описанные ниже настройки одни из тех которые работают и их изменения можно реально увидеть на глаз и они ничего не портят и не ломают визуально, а некоторые из них улучшают производительность
Не забудь добавить в избранное или заглянуть сюда еще раз, гайд будет дополняться по мере возможностей и нахождения нужных настроек
Не забудь добавить в избранное или заглянуть сюда еще раз, гайд будет дополняться по мере возможностей и нахождения нужных настроек
Параметры запуска
Правой кнопкой мышки на игре в стиме, свойства и далее установить параметры запуска, параметры разделяются пробелом
- -norhithread (НЕ ИСПОЛЬЗОВАТЬ ДЛЯ DX12 ИЛИ VULKAN) Отключение многопоточных команд рендеринга , дает более плавное время кадра и картинки в целом, на фпс не влияет, но положительно влияет на стабильность фпс только для DX11
- -NOTEXTURESTREAMING выключает стриминг текстур, при отключении игра будет дольше загружаться, но все текстуры будут хранится в памяти, а не подгружаться с диска постепенно, понадобится минимум 8гб памяти на видеокарте
- -NoVerifyGC отключение динамического распределения памяти, в выключенном состоянии может улучшить производительность и избавить от лагов(потребуется больше 8гб оперативной памяти)
- -nothreadtimeout у движка Unreal есть логика для проверки жив ли поток рендеринга и с помощью этой опции проверка зависших потоков по таймауту будет отключена и игра не будет вылетать в случае такого зависания
- -dx11 Заставляет использовать DirectX 11
- -dx12 Заставляет использовать DirectX 12
- -vulkan Заставляет использовать Vulkan
Описание настроек Engine.ini
Все предлагаемые настройки перед применением на жескую в Engine.ini можно попробовать в консоле игры для этого требуется нажать CTRL+SHIFT+L и после на тильду ~ откроется консоль, посмотреть уже имеющееся значение нужно два раза нажать тильду и ввести например r.ViewDistanceScale имена команд можно дополнять по Tab.
Пример как задать свое значение в консоле r.ViewDistanceScale 3
Файл Engine.ini находится по пути %userprofile%\AppData\Local\FactoryGame\Saved\Config\Windows
Все настройки добавляются в раздел [SystemSettings] если не указано иначе
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
Пример как задать свое значение в консоле r.ViewDistanceScale 3
Файл Engine.ini находится по пути %userprofile%\AppData\Local\FactoryGame\Saved\Config\Windows
Все настройки добавляются в раздел [SystemSettings] если не указано иначе
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
- Общие настройки:
- r.ViewDistanceScale дальность прорисовки от низкое(0.1) до высокое (10) влияние на фпс не большое и зависит от чем больше значение тем влияние сильнее
r.ViewDistanceQuality качество дальности прорисовки от 0 до 4 - r.SceneColorFormat качество цветового охвата в основном за счет прозрачности, от 0 до 5, по умолчанию 4, оптимально 3 среднее-низкое влияние на фпс
- r.FinishCurrentFrame при 0 отключает ожидания завершения рендеринга и увеличивается фпс
- r.OneFrameThreadLag при (1) увеличивает импутлаг, но увеличивает фпс, при (0) без импутлага, возможно падение фпс(импутлаг - задержка ввода с клавиатуры и мыши)
- r.RenderTargetPoolMin от 100 до 5000 и выше, пул рендеринга - не освобождаемая видеопамять нужная для обработки если её не будет хватать возможны лаги, по умолчанию 400, но если посмотрите лог (C:\Users\%userprofile%\AppData\Local\FactoryGame\Saved\Logs\FactoryGame.log) и там есть ошибки вида:
LogRenderTargetPool: Warning: r.RenderTargetPoolMin exceeded 675/400 MB (ok in editor, bad on fixed memory platform)
то увеличьте до нужных значение, например в этом случае 1000 будет более чем достаточно, но не забывайте вы расходуете таким образом видеопамять требуемую для текстур - r.Streaming.MipBias качество текстур при стриминге от низкое(2) до высокое(0) почти не влияет на фпс или не влияет вообще
- r.MaterialQualityLevel качество материалов от низкое(0), высокое(1), средние(2), Эпик(3) почти не влияет на фпс или не влияет вообще
- r.ForceLOD устанавливает максимальную дальности прорисовки от без LOD(-1) до всё будет картонным состоящим из LOD(1) сильно влияет на фпс
- r.Fog туман отключить(0), включить(1)
- r.StaticMeshLODDistanceScale уровень расстояния на котором будут использоваться меши от низкое(1) до высокое(0.25) почти не влияет на фпс или не влияет вообще
- r.MipMapLODBias задает резкость текстур от более размытые(15) до более резкие(-15) почти не влияет на фпс или не влияет вообще
- r.DetailMode текущий режим детализации от низкое(0) до высокое(2) среднее влияние на фпс
- r.Color.Mid цветокоррекция по умолчанию 0.5 по изменениям похоже на гамма-коррекцию или контрастность на фпс не влияет вообще
- r.ScreenPercentage увеличение или уменьшение разрешение рендеринга(суперсемплинг), 100 означает 100% выбранного разрешения экрана, в крайних случаях для увеличения фпс можно попробовать уменьшить значение
Настройка сглаживания: - r.DefaultFeature.AntiAliasing режим сглаживания 3-MSAA, 2-TAA, 1-FXAA
- r.TemporalAASharpness при 1 включает возможность настройки резкости картинки
- r.Tonemapper.Sharpen сила резкости всей картинки, придает хорошую четкость при 1 или выше
- r.TemporalAACurrentFrameWeight при 0 будет идеальное сглаживание чем меньше значение тем меньше лесенки на краях объектов и качественнее сглаживание, чем выше значение тем больше шума от сглаживания
- r.TemporalAAFilterSize размер фильтра для ТАА сглаживания, параметр подбирается экспериментально
- r.TemporalAASamples количество семплов для TAA сглаживания, не сильно влияет на фпс больше 16 не имеет смысла
Настройка растительности, зданий и травы:
Качество и дальность проработки зданий завязаны на параметр foliage - foliage.LODDistanceScale дальность прорисовки растительности и зданий, чем выше значение тем меньше будут внезапно появляется качественные деревья, здания при приближении к ним от низкое(0) до высокое (10) влияение на фпс не большое и зависит от чем больше значение тем влияние сильнее
- foliage.DensityScale плотность растительности от без растительности на деревьях?(0) до высокое(10) до 2 влияние на фпс не большое далее фпс просаживает сильнее
- foliage.MinimumScreenSize расстояние отсечение травы, деревьев и частей зданий от высокое 0.00000001 до полного отсечения всего 1, примеры как это работает [docs.unrealengine.com]
- foliage.ForceLOD устанавливает максимальную дальности прорисовки растительности от без LOD(-1) до всё будет картонным состоящим из LOD(1) сильно влияет на фпс
- grass.MaxUpdateFrequency частота того как быстро трава будет появляться при приближении от низкое(1) до высокое(60) почти не влияет на фпс или не влияет вообще
- grass.DensityScale плотность травы от без травы(0) до высокое(10) до 2 влияние на фпс не большое далее фпс просаживает сильнее
Настройка теней: - r.ShadowQuality качество теней от 0 без теней до 5, оптимальное значение 3
- r.Shadow.DistanceScale дальность прорисовки теней от низкое(0.1) до высокое (10) влияние на фпс не большое и зависит от чем больше значение тем влияние сильнее
- r.Shadow.PreShadowResolutionFactor расстояние на котором будет уменьшатся качество теней от 0.1 до 5
- r.Shadow.MaxResolution максимальное разрешение теней, оптимально 1024
Снятие ограничений на хранение текстур хранящихся в памяти или можете поставить свои значения: - r.TextureStreaming включение(1) отключение(0) стриминга текстур при отключении игра будет дольше загружаться, но все текстуры будут хранится в памяти, а не подгружаться с диска постепенно, понадобится минимум 8гб памяти на видеокарте и 16гб оперативной памяти
- r.Streaming.UseFixedPoolSize использовать статический пул выделенной памяти(1), динамически выделяемая память(0)
- r.Streaming.FullyLoadUsedTextures (1)включает передачу всех используемых текстур до их максимально разрешения и хранит их в памяти до тех пор, пока приложение открыто. Это следует использовать в качестве альтернативы полному отключению r.TextureStreaming
- r.Streaming.LimitPoolSizeToVRAM если этот параметр включен(1), размер пула текстур будет ограничен объемом памяти видеокарты.
- PoolSizeVRAMPercentage указывается в процентах от памяти видеокарты, бесконечно(0) ИЛИ
- PoolSize указывается в мегабайтах, бесконечно(0)[TextureStreaming] NeverStreamOutTextures=1 ;Не выгружать текстуры из памяти
Сетевые настройки
Увеличение пропускной способности и увеличение тикрейта, увеличение тикрейта повлечет за собой увеличение нагрузки на CPU
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
Engine.ini
Game.ini
Scalability.ini
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
Engine.ini
[/script/engine.player]
ConfiguredInternetSpeed=104857600
ConfiguredLanSpeed=104857600
[/script/onlinesubsystemutils.ipnetdriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
NetServerMaxTickRate=120
LanServerMaxTickRate=120
MaxNetTickRate=400
InitialConnectTimeout=300.0
ConnectionTimeout=300.0
[/script/engine.gamenetworkmanager]
TotalNetBandwidth=104857600
MaxDynamicBandwidth=104857600
MinDynamicBandwidth=104857600
[/script/socketsubsystemepic.epicnetdriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
[/script/engine.engine]
NetClientTicksPerSecond=120
Game.ini
[/script/engine.gamenetworkmanager]
TotalNetBandwidth=104857600
MaxDynamicBandwidth=104857600
MinDynamicBandwidth=10485760
Scalability.ini
[NetworkQuality@3]
ConfiguredInternetSpeed=104857600
ConfiguredLanSpeed=104857600
TotalNetBandwidth=104857600
MaxDynamicBandwidth=104857600
MinDynamicBandwidth=10485760
MaxClientRate=104857600
MaxInternetClientRate=104857600
Мои рекомендуемые настройки для сервера
Game.ini
Engine.ini
[/script/engine.gamenetworkmanager]
TotalNetBandwidth=104857600
MaxDynamicBandwidth=104857600
MinDynamicBandwidth=104857600
MAXPOSITIONERRORSQUARED=32.00f
MoveRepSize=512.0f
CLIENTADJUSTUPDATECOST=512.0f
ClientAuthorativePosition=true
bMovementTimeDiscrepancyDetection=false
bMovementTimeDiscrepancyResolution=false
bMovementTimeDiscrepancyForceCorrectionsDuringResolution=false
MAXCLIENTUPDATEINTERVAL=2.20f
MaxMoveDeltaTime=0.700f
MaxClientSmoothingDeltaTime=2.20f
MaxClientForcedUpdateDuration=1.0f
ClientNetSendMoveDeltaTime=0.0332
ClientNetSendMoveDeltaTimeStationary=0.0664
ClientNetSendMoveThrottleOverPlayerCount=99
ServerForcedUpdateHitchThreshold=2.800f
[/script/engine.gamesession]
MaxPlayers=10
Engine.ini
[CrashReportClient]
bAgreeToCrashUpload=false
bImplicitSend=False
[Engine.ErrorHandling]
bPromptForRemoteDebugging=False
bPromptForRemoteDebugOnEnsure=False
[/script/onlinesubsystemutils.ipnetdriver]
MaxInternetClientRate=104857600
MinInternetClientRate=104857600
MaxClientRate=104857600
MinClientRate=104857600
LanServerMaxTickRate=15
NetServerMaxTickRate=15
ConnectionTimeout=20.0
InitialConnectTimeout=30.0
[SystemSettings]
t.MaxFPS=15
AllowAsyncRenderThreadUpdates=1
AllowAsyncRenderThreadUpdatesDuringGamethreadUpdates=1
net.UseRecvMulti=0
net.RecvMultiCapacity=8192
net.IpNetDriverUseReceiveThread=0
net.IpConnectionUseSendTasks=1
net.IpNetDriverReceiveThreadQueueMaxPackets=8192
net.MaxNetStringSize=67108864
net.MaxRPCPerNetUpdate=8
tick.AllowAsyncComponentTicks=1
tick.AllowConcurrentTickQueue=1
tick.AllowAsyncTickDispatch=1
tick.AllowAsyncTickCleanup=1
net.SubObjects.DefaultUseSubObjectReplicationList=1
net.Iris.UseIrisReplication=1
net.EnableDetailedScopeCounters=0
[/script/engine.player]
ConfiguredInternetSpeed=104857600
ConfiguredLanSpeed=104857600
[/script/socketsubsystemepic.epicnetdriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
[/script/engine.engine]
bSmoothFrameRate=true
bUseFixedFrameRate=false
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=5.000000),UpperBound=(Type=Exclusive,Value=15.000000))
MinDesiredFrameRate=8.000000
FixedFrameRate=15.000000
NetClientTicksPerSecond=15
[/script/engine.garbagecollectionsettings]
gc.MaxObjectsNotConsideredByGC=476499
gc.SizeOfPermanentObjectPool=100378488
gc.ActorClusteringEnabled=True
gc.BlueprintClusteringEnabled=True
[/script/engine.streamingsettings]
s.EventDrivenLoaderEnabled=True
s.AsyncLoadingThreadEnabled=True
[/script/engine.networksettings]
net.MaxRepArraySize=65535
net.MaxRepArrayMemory=65535
Отключение логов
Отключение логов, на диск не будут записыватся логи, может улучшится незначительно фпс
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
[Core.System]
+Suppress=Scriptwarning
+Suppress=Error
+Suppress=Scriptlog
+Suppress=Warning
[Core.Log]
LogPluginManager=all off
LogOnlineIdentity=all off
LogOnlineSession=all off
LogMemory=all off
LogPakFile=all off
LogTemp=all off
LogLinker=all off
LogOnline=all off
LogOnlineGame=all off
LogAnalytics=all off
LogConfig=all off
LogInteractiveProcess=all off
LogInput=all off
LogOnlineEntitlement=all off
LogOnlineEvents=all off
LogOnlineFriend=all off
LogOnlinePresence=all off
LogOnlineTitleFile=all off
LogOnlineUser=all off
Global=off
Другие настройки
Включить мультипоточность для звукового движка Wwise который используется в игре, если со звуком будут проблемы отключайте обратно
Количество автосохранения по умолчанию 3
[/script/akaudio.aksettings]
bEnableMultiCoreRendering=True
Количество автосохранения по умолчанию 3
[/script/factorygame.fgsavesession]
mNumRotatingAutosaves=5
Экспериментальные опции могут повысить фпс:
AllowAsyncRenderThreadUpdates=1
AllowAsyncRenderThreadUpdatesDuringGamethreadUpdates=1
r.SupportDepthOnlyIndexBuffers=1
r.SupportReversedIndexBuffers=1
r.DBuffer=0
r.GPUCrashDebugging=0
r.CompileShadersForDevelopment=0
FX.AllowAsyncTick=1
FX.BatchAsync=1
FX.BatchAsyncBatchSize=9999999
FX.MaxCPUParticlesPerEmitter=50
FX.MaxGPUParticlesSpawnedPerFrame=2048
AudioThread.BatchAsyncBatchSize=9999999
AudioThread.UseBackgroundThreadPool=1
AudioThread.EnableBatchProcessing=1
Мой пример настроек
Приведенные настройки обеспечивают лучшее качество прорисовки, графики и сглаживания без падения фпс, выше есть описания настроек для того чтобы вы могли настроить под себя.
Скриншоты слева ультра настройки доступные в игре, справа ультра плюс мои настройки, для того чтобы увидеть разницу откройте во весь экран, при моих настройках видно что увеличена дальность прорисовки, количество травы и качество сглаживания при этом FPS остается такой же


Все действия производятся в файле Engine.ini находится по пути %userprofile%\AppData\Local\FactoryGame\Saved\Config\Windows
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
Вот так выглядит мой Engine.ini (Пример не включает в себя стандартные опции paths в [Core.System]):
Скриншоты слева ультра настройки доступные в игре, справа ультра плюс мои настройки, для того чтобы увидеть разницу откройте во весь экран, при моих настройках видно что увеличена дальность прорисовки, количество травы и качество сглаживания при этом FPS остается такой же
Все действия производятся в файле Engine.ini находится по пути %userprofile%\AppData\Local\FactoryGame\Saved\Config\Windows
После установки настроек обязательно выставить в свойствах файла Engine.ini "только для чтения"
Вот так выглядит мой Engine.ini (Пример не включает в себя стандартные опции paths в [Core.System]):
[Core.System]
+Suppress=Scriptwarning
+Suppress=Error
+Suppress=Scriptlog
+Suppress=Warning
[Core.Log]
LogPluginManager=all off
LogOnlineIdentity=all off
LogOnlineSession=all off
LogMemory=all off
LogPakFile=all off
LogTemp=all off
LogLinker=all off
LogOnline=all off
LogOnlineGame=all off
LogAnalytics=all off
LogConfig=all off
LogInteractiveProcess=all off
LogInput=all off
LogOnlineEntitlement=all off
LogOnlineEvents=all off
LogOnlineFriend=all off
LogOnlinePresence=all off
LogOnlineTitleFile=all off
LogOnlineUser=all off
Global=off
[/script/engine.player]
ConfiguredInternetSpeed=104857600
ConfiguredLanSpeed=104857600
[/script/onlinesubsystemutils.ipnetdriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
NetServerMaxTickRate=120
LanServerMaxTickRate=120
MaxNetTickRate=400
InitialConnectTimeout=300.0
ConnectionTimeout=300.0
[/script/engine.gamenetworkmanager]
TotalNetBandwidth=104857600
MaxDynamicBandwidth=104857600
MinDynamicBandwidth=104857600
[/script/socketsubsystemepic.epicnetdriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
[/script/engine.engine]
NetClientTicksPerSecond=120
[SystemSettings]
AllowAsyncRenderThreadUpdates=1
AllowAsyncRenderThreadUpdatesDuringGamethreadUpdates=1
r.SupportDepthOnlyIndexBuffers=1
r.SupportReversedIndexBuffers=1
r.DBuffer=0
r.GPUCrashDebugging=0
FX.AllowAsyncTick=1
FX.BatchAsync=1
FX.BatchAsyncBatchSize=9999999
FX.MaxCPUParticlesPerEmitter=50
FX.MaxGPUParticlesSpawnedPerFrame=2048
AudioThread.BatchAsyncBatchSize=9999999
AudioThread.UseBackgroundThreadPool=1
AudioThread.EnableBatchProcessing=1
r.ShadowQuality=3
r.ViewDistanceScale=1.5
r.ViewDistanceQuality=4
foliage.MinimumScreenSize=0.009
foliage.LODDistanceScale=1.4
foliage.DensityScale=1.5
grass.DensityScale=2
grass.MaxUpdateFrequency=40
r.MaterialQualityLevel=2
r.DefaultFeature.AntiAliasing=2
r.FinishCurrentFrame=0
r.Streaming.UseFixedPoolSize=0
r.Streaming.PoolSize=0
r.Streaming.FullyLoadUsedTextures=1
r.Streaming.LimitPoolSizeToVRAM=0
r.Streaming.AmortizeCPUToGPUCopy=1
r.Streaming.MaxTempMemoryAllowed=10
r.MaxAnisotropy=16
r.TemporalAACurrentFrameWeight=0.02
r.TemporalAAFilterSize=0.2
r.TemporalAASamples=16
r.Shadow.MaxResolution=1024
r.Shadow.DistanceScale=2
r.Shadow.PreShadowResolutionFactor=0.5
r.Upscale.Quality=6
r.PostProcessAAQuality=6
r.MipMapLODBias=0
r.Color.Mid=0.47
r.TemporalAA.Upsampling=1
r.TemporalAASharpness=1
r.Tonemapper.Sharpen=1.6
r.TonemapperFilm=1
r.Tonemapper.Quality=5
r.TemporalAACatmullRom=1
r.OneFrameThreadLag=1
r.HZBOcclusion=0
r.RenderTargetPoolMin=1000
r.AllowOcclusionQueries=1
r.SceneColorFormat=3
r.D3D11.Depth24Bit=0
r.DefaultFeature.MotionBlur=0
r.MotionBlurQuality=0
Дополнительные замечания
У кого не включается консоль по тильде ~, надо прописать кастомную клавишу в конфиг:
1) Идём по этому пути "%LOCALAPPDATA%\FactoryGame\Saved\Config\Windows" через Win + R.
2) Открываем файл Input.ini и добавляем следующее:
P.S. Зачастую консоль не включается из-за того что при запуске игры в раскладке клавиатуры стоит русский язык
1) Идём по этому пути "%LOCALAPPDATA%\FactoryGame\Saved\Config\Windows" через Win + R.
2) Открываем файл Input.ini и добавляем следующее:
[/script/engine.inputsettings]
ConsoleKeys=F6
После этого в игре нажимаем Ctrl + Shift + L и потом F6.P.S. Зачастую консоль не включается из-за того что при запуске игры в раскладке клавиатуры стоит русский язык