UE像素流本地部署、多实例部署、公网部署
梨有橙子嘛
2025年03月14日 17:28
UE游戏开发

前言

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系统连接像素流服务的过程并没有详细说明,这里也提供一个简单的启动脚本吧。有什么疑问欢迎大家一起讨论✌✌✌