UE4 Cook On The Fly通过数据线连接Android手机

UE4如果需要在真机上测试, 通常编译+打包+安装需要很长的时间.
所以UE4提供了Cook On The Fly的功能, 就是默认只编译, 资源的Cook在运行时由FileHostServer进行Cook, 这样就不用每次测试经历痛苦的打包过程.
对于Android平台来说, 只需要安装apk, 资源文件(默认在obb里)仍然保存在PC机上, 通过网络进行访问.
PC机做为FileHostServer, 对于请求的文件进行Cook , 如果没有请求的则不会进行Cook.
但是对于公司的网络策略来说, 手机直接访问开发网的PC还是比较麻烦的, 而且WiFi网络的传输速度也不是很理想.
那么能不能通过USB数据线来传输呢? 官方文档里没有说明, 不过分析了一下UE4的代码, 发现COTF功能走的是TCP协议, 端口号是

DEFAULT_TCP_FILE_SERVING_PORT=41899, // default port to use when making file server tcp connections (used if no protocol is specified)

所以可以通过adb端口映射的方式转发一下:

adb.exe reverse tcp:41899 tcp:41899

然后PC端启动Cook资源的Server:

UE4Editor-Cmd.exe -run=cook -targetplatform=Android_ASTC -cookonthefly

如果加上-iterate可以进行增量Cook, 不然每次关闭Server后下次打开会重新进行Cook的. 但是-iterate有时会出bug…
UE4 Cook On The Fly通过数据线连接Android手机_第1张图片
打包apk时可以选择不cook资源, 比如使用UnrealFrontend.exe可以这么设置:
UE4 Cook On The Fly通过数据线连接Android手机_第2张图片
安装完apk后需要增加启动的命令行参数, 传入FileHost的IP, 这里是通过UE4CommandLine.txt来完成的

UE4CommandLine.txt
…/…/…/ActionRPG/ActionRPG.uproject -filehostip=127.0.0.1

然后拷贝到Android设备上的对应目录, 可以使用adb命令来完成:

adb.exe push UE4CommandLine.txt /mnt/sdcard/UE4Game/ActionRPG/UE4CommandLine.txt

这时在手机上启动ActionRPG, 就会发现PC上的Server开始Cook资源了:
UE4 Cook On The Fly通过数据线连接Android手机_第3张图片
不出意外, 等一会儿就可以进入游戏了, 这样测试的迭代测试效率会比原来的打包流程提升非常多, 资源量越大越明显

游戏Log里也能看到请求加载的文件信息:

你可能感兴趣的:(引擎研究)