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::ParseOption、UGameplayStatics::HasOption、UGameplayStatics::GetIntOption
注2:FURL可用来存储和解析Options字符串,并提供相关功能函数FURL::HasOption、FURL::GetOption、FURL::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命令 注:DPCVars可以设置ECVF_ReadOnly类型的cvar
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 -DisablePlugins=RenderDocPlugin // 禁用RenderDocPlugin插件,单机启动TestMap_Main地图
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
参考