可可西

UE4命令行参数

UE4命令行参数是大小写不敏感

 

FCommandLine::Get()可获取命令行

FParse::Param用来解析形如-xx的参数

FParse::Value用来解析形如key=value-key=value的参数

 

在windows下上还可以定义环境变量UE-CmdLineArgs来传入额外的命令行参数

FPlatformMisc::GetEnvironmentVariable(TEXT("UE-CmdLineArgs"));

FString ModifiedPath = FString(TEXT("D:\MyDir;")) + FPlatformMisc::GetEnvironmentVariable(TEXT("PATH"));

FPlatformMisc::SetEnvironmentVar(TEXT("PATH"), *ModifiedPath);

 

日志中搜索  LogInit: Command Line: 

 

UE4Editor.exe "%GameDir%\MyGame.uproject"  // 启动MyGame项目编辑器

UE4Editor.exe "%GameDir%\MyGame.uproject" -nothreading  // 以单线程的方式启动MyGame项目编辑器  注:缺省带-threading参数,以多线程的方式启动

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game  // 单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -norhithread  // 禁用rhi线程模式来单机运行TestMap_Main地图(在LaunchEngineLoop.cpp的PreInit方法)   注:缺省带-rhithread参数

各个平台是否开启RHI线程,情况如下:

DX11默认不支持,可以通过#define EXPERIMENTAL_D3D11_RHITHREAD 1来开启

DX12在非Editor模式下默认支持

OpenGL根据FeatureLevel和r.OpenGL.AllowRHIThread的值来决定是否开启
r.OpenGL.AllowRHIThread 0 // 不使用RHI线程
r.OpenGL.AllowRHIThread 1 // 使用RHI线程(缺省)

Vulklan默认开启1个RHI线程
r.Vulkan.RHIThread 0 // 不使用RHI线程
r.Vulkan.RHIThread 1 // 使用1个RHI线程(缺省)
r.Vulkan.RHIThread 2 // 使用多个RHI线程

Metal会根据显卡芯片版本和r.Metal.IOSRHIThread的值来决定是否开启
r.Metal.IOSRHIThread 0 // 不使用RHI线程(缺省)
r.Metal.IOSRHIThread 1 // 使用1个RHI线程

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -norhithread -forceRHIBypass  // 禁用rhi线程并强制使用Bypass模式来单机运行TestMap_Main地图(在LaunchEngineLoop.cpp的PreInit方法)   注:缺省带-rhithread参数

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -server  // 后台运行TestMap_Main地图ds进程  注:没有命令行窗口

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main?multihome=10.32.212.47?port=7778 -game -server  // 后台运行TestMap_Main地图ds进程,监听本机IP为10.32.212.47网卡的7778端口

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -server -log  // 前台运行TestMap_Main地图ds进程  注:有命令行窗口,log会实时地刷到命令行窗口中

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -server MULTIHOME=10.32.212.47 Port=8888 // 绑定到10.32.212.47:8888,后台运行TestMap_Main地图ds进程

UE4Editor.exe "%GameDir%\MyGame.uproject" 127.0.0.1 -game  // 启动游戏并联网加入本地ds对局中

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main?MaxPlayers=10?MaxSpectators=2 -game -server -log  // 运行TestMap_Main地图ds进程,并设置最大玩家数为10,最大观战玩家数为2

UE4Editor.exe "%GameDir%\MyGame.uproject" 127.0.0.1?SpectatorOnly=1 -game  // 启动游戏并以观战者的身份联网加入本地ds对局中

注1:解析形如?MaxPlayers=10?MaxSpectators=2的Options字符串相关功能函数UGameplayStatics::ParseOptionUGameplayStatics::HasOptionUGameplayStatics::GetIntOption

注2:FURL可用来存储和解析Options字符串,并提供相关功能函数FURL::HasOptionFURL::GetOptionFURL::GetHostPortString

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -CmdLineFile=d:\test.txt // 读取d:\test.txt中的内容并加到命令行参数中   注:test.txt为-log -nosound

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game exec=cmd.txt  // 启动游戏后,执行引擎Engine\Binaries目录下cmd.txt中的命令序列

----------------------------------------------------------------------------------------------------

如cmd.txt的内容如下(每行一个命令):

god
viewmode wireframe

----------------------------------------------------------------------------------------------------

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -ExecCmds=god,pause  // 启动游戏后,依次执行god和pause命令

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -ExecCmds="viewmode wireframe"  // 启动游戏后,执行viewmode wireframe命令

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -ExecCmds="stat startfile,DoTransport 'x=1860,y=990,z=238',god"  // 启动游戏后,依次执行stat startfile、DoTransport x=1860,y=990,z=238和god命令

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -DPCVars="r.Streaming.PoolSize=120,gc.TimeBetweenPurgingPendingKillObjects=60.0"  // 启动游戏后,覆盖DeviceProfile CVar,依次执行r.Streaming.PoolSize=120、gc.TimeBetweenPurgingPendingKillObjects=60.0命令

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -ini:Engine:[/Script/Engine.Engine]:bSmoothFrameRate=False,[TextureStreaming]:PoolSize=100  // 覆盖Engine.ini文件中/Script/Engine.Engine标签下的bSmoothFrameRate,以及TextureStreaming标签下的PoolSize参数

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -LogCmds="foo verbose, bar off"  // 对foo类型日志开启verbose模式,关闭bar类型日志,单机启动TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game LOG=test.log  // 单机运行TestMap_Main地图,日志输出到游戏log目录下test.log文件中

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game ABSLOG=d:\test2.log  // 单机运行TestMap_Main地图,日志输出到d:\test2.log文件中

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -log  // 单机启动TestMap_Main地图,并打开命令行日志窗口

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -log  -ConsoleX=100 -ConsoleY=200 // 单机启动TestMap_Main地图,打开命令行日志窗口并将其左上角放在(100,200)屏幕坐标处

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -forcelogflush  // 单机启动TestMap_Main地图,打印每句log都立即flush到文件中

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game logflushinterval=5  // 单机启动TestMap_Main地图,每5秒定时flush日志到文件中

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -WARNINGSASERRORS  // 将warning日志视为error   注:GWarn->TreatWarningsAsErrors会被设置成true

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -NOSCREENMESSAGES  // 关闭ScreenMessages屏幕输出

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -WaitForDebugger  // 单机启动TestMap_Main地图并等待调试

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -WaitForAttachEarly // 单机启动TestMap_Main地图并在更早阶段等待调试  G2Game添加

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -pvd  // 单机启动TestMap_Main地图,并自动连接本机正在运行的PhysX Visual Debugger

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -verifygc  // 打印出gc相关的调试信息

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -noverifygc  // 不打印出gc相关的调试信息

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -norenderthread  // 渲染放在主进程中,单机启动TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -onethread  // 同上

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -messaging -SessionName=fps1 // 开启与Session FrondEnd性能分析工具的通讯,并设置Session的名字为fps1

UE4Editor.exe "%GameDir%\MyGame.uproject" -noshaderworker  // 启动MyGame项目编辑器,当需要编译shader时,编辑器自己编译,而不使用ShaderCompileWorker进行编译

UE4Editor.exe "%GameDir%\MyGame.uproject" -xgeshadercompile // 启动MyGame项目编辑器,当需要编译shader时,会使用ShaderCompileWorker进行编译,并连接IB进行分布式加速

UE4Editor.exe "%GameDir%\MyGame.uproject" -noxgeshadercompile // 启动MyGame项目编辑器,当需要编译shader时,会使用ShaderCompileWorker进行编译,并禁止连接IB进行分布式加速

UE4Editor.exe "%GameDir%\MyGame.uproject" -BUILDMACHINE  // 以构建机模式启动MyGame项目编辑器,用于决定是否启用调试输出  注1:会最大化地减少弹框确认等人工交互过程   注2:GIsBuildMachine会被设置成true

UE4Editor.exe "%GameDir%\MyGame.uproject" -RUNNINGUNATTENDEDSCRIPT // 不打断执行过程,任何的弹框都会用缺省值回应  注:GIsRunningUnattendedScript会被设置成true

UE4Editor.exe "%GameDir%\MyGame.uproject" -SILENT // 不打断执行过程,减少弹框确认   注:GIsSilent会被设置成true

UE4Editor.exe "%GameDir%\MyGame.uproject" -UNATTENDED // 不打断执行过程,减少弹框确认  设置为无人管理的状态。禁用需要从用户获得反馈的任何东西

UE4Editor.exe "%GameDir%\MyGame.uproject" -VERBOSE  // 设置编译器使用详细的输出

UE4Editor.exe "%GameDir%\MyGame.uproject" httpproxy=web-proxy.oa.com  // 设置http代理服务器为web-proxy.oa.com   注:在DefaultEngine.ini的HTTP标签下将HttpProxyAddress配置为web-proxy.oa.com也可以达到同样效果

 

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -SKIPCOMPILE  // 单机运行TestMap_Main地图,启动时不检查模块代码是否再需要编译

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -server -log -Limitclientticks  // 前台运行TestMap_Main地图ds进程,并强制对网络更新进行节流

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -FixedSeed // 使用固定的值0初始化随机数生成器

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -VSync // 开启垂直同步   注1:会执行r.VSync 1命令   注2:仅对windows等pc平台的standalone和cook版本有效,在Android和iOS移动端会始终开启垂直同步  注3:编辑器PIE下要执行r.VSyncEditor 1来开启垂直同步

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -NoVSync // 关闭垂直同步   注1:会执行r.VSync 0命令   注2:仅对windows等pc平台的standalone和cook版本有效,在Android和iOS移动端会始终开启垂直同步 注3:编辑器PIE下要执行r.VSyncEditor 0来关闭垂直同步

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -nosound  // 以无声音单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -nosplash  // 以无闪屏单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -demomode  // 以Demo模式单机运行TestMap_Main地图  注:demomode不会在游戏窗口的左上区域打印红色的“光线需要重建(x 未构建对象)”等warning信息

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -NOTEXTURESTREAMING  // 禁用贴图动态载入。总加载最高质量的贴图。

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -NoLoadingScreen  // 不加载Loading视频,单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -Windowed  // 单机以窗口模式运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -FullScreen  // 单机以全屏模式运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -Windowed  ResX=800 ResY=600 // 单机以窗口模式运行TestMap_Main地图  设置并移动窗体,使得渲染画面宽800高600

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -Windowed  WinX=80 WinY=150 ResX=800 ResY=600 // 单机以窗口模式运行TestMap_Main地图  设置并移动窗体,使得渲染画面宽800高600,左上角屏幕坐标为(80, 150)

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -Windowed ResX=1415 ResY=435 -emulatestereo  // 以左右分屏立体模式单机运行TestMap_Main地图,使得渲染画面宽1415高435

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -ansimalloc // 使用Ansi内存分配器单机运行TestMap_Main地图   注:非Shipping包下有效

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -tbbmalloc // 使用TBB内存分配器单机运行TestMap_Main地图(windows下缺省为该方式)

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -mimalloc // 使用mimalloc内存分配器单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -stompmalloc // 使用stompmalloc内存分配器单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -binnedmalloc // 使用Binned内存分配器单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -binnedmalloc2 // 使用Binned2内存分配器单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -binnedmalloc3 // 使用Binned3内存分配器单机运行TestMap_Main地图(需为64位游戏)

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -nullrhi  // 以nullrhi单机运行TestMap_Main地图(只会跑逻辑,无渲染窗口)  注1:无渲染窗口的linux client可以带上该参数    注2:详见FApp::CanEverRender函数  注3:使用FNullDynamicRHI,bool GUsingNullRHI为true

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -opengl  // 以opengl单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -opengl3  // 强制以opengl3单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -opengl4  // 强制以opengl4单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -metal  // 以metal单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -vulkan  // 强制以vulkan单机运行TestMap_Main地图

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -d3d10  // 以d3d10单机运行TestMap_Main地图(需win7及以上)

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -dx10  // 同上

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -sm4  // 同上

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -d3d11  // 以d3d11单机运行TestMap_Main地图(需win7及以上)

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -dx11  // 同上

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -sm5  // 同上

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -d3d12  // 以d3d12单机运行TestMap_Main地图(需win10及以上)

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -dx12  // 同上

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -d3ddebug  // 使用d3d调试device

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -gpucrashdebugging  // 开启gpu crash debugging

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -d3d12 -d3ddebug -d3d12gpuvalidation  // 使用d3d12调试device,并开启validation

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -openglDebug  // 使用opengl调试模式

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -RHIValidation   //  对图形API的上下文(D3D11、D3D12或Vulkan)进行校验   注:如果是cook版本,仅debug、development包中有效

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -FeatureLevelES2  // 使用es2

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -FeatureLevelES31  // 使用es3.1

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -FeatureLevelES31 -faketouches  // 使用es3.1并显示鼠标  注:局内是鼠标是十字架形状

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -FeatureLevelES31 -simmobile  // 使用es3.1并显示鼠标   注:局内是鼠标是十字架形状

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game SECONDS=20 // 启动游戏后20s关闭

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -fullcrashdump // 开启fulldump莫斯

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -BENCHMARK // 以固定时间间隔(1/30s)运行每一帧,若游戏帧率为60帧,则游戏将以60*(1/30)=2倍的速度运行

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -BENCHMARK BENCHMARKSECONDS=50 // 以BenchMark模式启动游戏后50s关闭

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -BENCHMARK FPS=50 // 以固定时间间隔(1/50s)运行每一帧,若游戏帧率为60帧,则游戏将以60*(1/50)=1.2倍的速度运行

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -BENCHMARK -DUMPMOVIE  // 以固定时间间隔(1/30s)运行每一帧,并用当前分辨率隐藏hud输出每帧图片MovieFrame00xx.png到游戏的Saved\Screenshots\Windows目录中

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -NOLOGTIMES // 日志中不打印时间

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -LOGTIMES // 日志中时间使用utc格式

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -UTCLOGTIMES // 同上

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -LOGTIMESINCESTART // 日志中时间使用SinceStart格式

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -LOCALLOGTIMES // 日志中时间使用Local格式

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -LOGTIMECODE // 日志中时间使用Timecode格式

日志中时间格式也可以在DefaultEngine.ini中配置

[LogFiles]
;LogTimes=None ;日志中不打印时间
;LogTimes=UTC ;日志中时间使用utc格式
;LogTimes=SinceStart ;日志中时间使用SinceStart格式
LogTimes=Local ;日志中时间使用Local格式
;LogTimes=Timecode ;时间使用Timecode格式

日志实例

UE_LOG(LogAnimation, Warning, TEXT("FBoneReference::Initialize BoneIndex for Bone '%s' does not exist in Skeleton '%s'"), *BoneName.ToString(), *GetNameSafe(SkeletonAsset));

// 日志的类别有:NoLogging、Fatal、Error、Warning、Display、Log、Verbose、VeryVerbose
// LogTimes为Local时打印出的log如下
// [989]为GFrameCounter % 1000
[2019.09.21-11.56.42:537][989]LogAnimation: Warning: FBoneReference::Initialize BoneIndex for Bone 'GunRef' does not exist in Skeleton 'F01_body_rig_Skeleton'

 

日志备份在DefaultEngine.ini中配置

[LogFiles]
MaxLogFilesOnDisk=20  ;最多备份20个日志
PurgeLogsDays=7 ;日志最多保留7天

日志列表:

UAGame-backup-2022.08.12-07.41.45.log  // 2022.08.12-07.41.45为该日志文件的Open创建时的时间
UAGame-backup-2022.08.12-07.42.15.log
UAGame-backup-2022.08.12-09.47.36.log
UAGame.log

 

Cook打包好的windows版本

E:\MyGame\MyGame.exe -basedir="F:\Downloads\MyGame-Win64-Test\MyGame\Binaries\Win64"   // 使用E:\MyGame中的MyGame.exe可执行程序,加上F:\Downloads\MyGame-Win64-Test\MyGame\Binaries\Win64版本内容(其他dll、资源、配置都在该目录中),来运行游戏  注:已有的打包版本+新的exe

 

参考

Command-Line Arguments

命令行参数

渲染影片的命令行参数

 

posted on 2021-06-29 22:16  可可西  阅读(6859)  评论(0编辑  收藏  举报

导航