UE系统打包的过程很简单,网上也很多教程就不再赘述了。本教程主要说明像素流部署过程中遇到的各种问题及解决方案,并提供简单快捷的命令行代码。
像素流部署包下载地址:https://github.com/EpicGames/PixelStreamingInfrastructure
本教程使用的UE版本是5.2.1,针对Windows系统下的部署
单实例启动我们只用启动像素流信令服务即可,也就是 Start_TURNServer.ps1 这个文件

但是直接使用powershell启动这个脚本,信令相关的参数我们无法灵活的去配置,所以这里我们通过命令行脚本的方式去启动
start powershell ".\SignallingWebServer\platform_scripts\cmd\Start_SignallingServer.ps1" --PublicIP=localhost --HttpPort=38000 --StreamerPort=38001 --SFUPort=38002
这是我启动脚本所存放的位置,根据其位置书写了信令服务启动脚本的相对路径。

http://dev.epicgames.com/documentation/zh-cn/unreal-engine/unreal-engine-pixel-streaming-reference?application_version
像素流启动参数相关解释在UE官方文档中都有说明,这里不再赘述。可以按照自己需要进行修改或添加参数设置。
另外,我们再介绍下怎么通过config文件去进行信令服务启动相关的参数设置

在信令服务文件夹下我们可以看到其默认配置文件,其中为信令服务的各种参数设置

我们拷贝这个文件进行配置,可以查看上方脚本文件存放位置有一个PixelStreamingConfig.json文件,这就是我们拷贝出来的配置文件。
根据config文件启动信令服务的命令为:
start powershell ".\SignallingWebServer\platform_scripts\cmd\Start_SignallingServer.ps1" --configFile="..\PixelStreamingConfig.json"
需要注意的是configFile中的c必须是小写,这个与官方文档中的描述不太一致。当然,官方后续版本中可能已经对这个问题进行了修复,可以查看信令服务启动之后的输出来判断。

并且config文件的路径也需要特别注意,我的命令中给的是相对路径,但是这个相对路径并不是相对于我启动脚本的位置,如果是相对启动脚本的路径,那应该是.\PixelStreamingConfig.json。config文件的路径是相对于SignallingWebServer文件夹中cirrus.js的路径,所以我这里是..\PixelStreamingConfig.json。当然,也可以给绝对路径。
多实例启动,那对应的就需要启动多个信令服务,并且接入Matchmaker服务。
MatchMaker服务的启动很简单,其可配置的参数并不多。启动命令为
start powershell "./Matchmaker/platform_scripts/cmd/run.bat" --HttpPort=18080 --MatchmakerPort=18081
Http访问端口和MatchMaker监听端口请自行设置。
接下来就是启动多个信令服务,并连接上Matchmaker。启动方式和单实例启动的方式一样。
通过参数配置的话需要添加Matchmaker相关的参数设置
start powershell ".\SignallingWebServer\platform_scripts\cmd\Start_SignallingServer.ps1" --PublicIP=localhost --HttpPort=38000 --StreamerPort=38001 --SFUPort=38002 --UseMatchmaker=true --MatchmakerAddress=localhost --MatchmakerPort=18081
通过配置文件的话就修改其中对应的参数设置即可。
但是需要注意的是,多个信令服务的HttpPort、StreamerPort、SFUPort必须都不重复,很多时候SFUPort会被忽略掉。
部署完毕之后我们就可以通过服务所在机器的IP和Matchmaker的HttpPort来进行访问了,例如localhost:18080。
公网部署,只需要在本地部署的基础上再启动一个Turn服务即可,启动命令为:
start powershell ".\SignallingWebServer\platform_scripts\cmd\Start_TURNServer.ps1"
直接按照默认设置启动即可,Turn默认使用19303端口,如果需要自己设置端口的话可以用以下命令:
start powershell ".\SignallingWebServer\platform_scripts\cmd\Start_TURNServer.ps1" --turn localhost:19333
如果以上服务部署在云服务器上,那么需要在防火墙策略中开启Matchmaker的HttpPort,信令服务的HttpPort,如果UE系统没有在云服务器上启动的话,还需要开启信令服务的StreamerPort。给大家看下我的防火墙策略。

大部分时候我们可能都是采用本地渲染,然后推送到公网像素流的方式,毕竟渲染服务器太过昂贵了。
如果像素流服务部署在局域网机器上,通过公网端口映射的方式进行公网的访问的话。那么我们除了对Matchmaker和信令服务的HttpPort端口进行映射之外,还需要对Turn服务的端口进行映射,并且不能同端口映射,也就是19303映射19303。而是需要用物理机不是19303并且没有使用的端口去映射19303,例如9303映射到19303。
公网部署好之后可以用自己的手机,在使用移动流量的情况下访问服务,可以看到场景即成功了。
HF_Airport.exe -RenderOffscreen -PixelStreamingIP=127.0.0.1 -PixelstreamingPort=38801
UE系统连接像素流服务的过程并没有详细说明,这里也提供一个简单的启动脚本吧。有什么疑问欢迎大家一起讨论✌✌✌