# 添加地形地貌

# 像素流送

启用插件 Pixel Streaming

# 打包项目

# 先设置 "项目设置" -> "地图和模式" -> "游戏默认地图" 选择当前关卡
# 点击 "平台" 选择 "Windows",然后选择 "打包项目"
# 选择打包的目录,路径中不要存在中文,不然打包大概率会出现各种各样的问题
# 打包的时候配置,如果是测试,就选择默认,如果是上线,就选择 "发行"

# 开启触控界面

# 可以看到如果在移动端运行,最好要打开触控的界面,让用户更好的操作
# 点击 "编辑" 中的 "项目设置",然后选择 "引擎" 中的 "输入" 勾选其中的 "固定显示触控界面"
# 打包的时候配置,如果是测试,就选择默认,如果是上线,就选择 "发行"

# 下载环境包

# 打包成功后,进入 \Windows\project_001\Samples\PixelStreaming\WebServers 目录下
# 可以看到 get_ps_servers 名称的两个运行脚本,bat 是 windows 中运行的,sh 是 linux 中运行的
# 查看脚本可以看到其实就是从 github 上下载一个压缩包文件

# https://github.com/EpicGames/PixelStreamingInfrastructure/releases/download/
# UE5.3-1.0.1/UE5.3-1.0.1.zip

# 如果直接运行脚本下载不了,最好就推荐手动下载了,打开 
# https://github.com/EpicGames/PixelStreamingInfrastructure/releases/
# 选择正确的UE版本,然后点击下面的 Assets,根据系统下载即可,然后将压缩包放到
# \Windows\project_001\Samples\PixelStreaming\WebServers 下,解压即可

# 安装信令服务器环境

# 打开目录 SignallingWebServer\platform_scripts
# 如果是 windows 系统就选择 cmd 下的 setup.bat 双击运行安装环境
# 如果是 linux 系统就选择 bash 下的 setup.sh 双击运行安装环境

# 启动信令服务器

# 安装环境后,目录中会多出  和 node 两个文件夹
# 然后点击其中的 run_local.bat 文件即可启动信令服务器
# 改80端口 \Windows\Test01\Samples\PixelStreaming\WebServers\SignallingWebServer\config.json

# 设置启动参数

# 进入打包的根目录,将启动程序复制一份快捷方式,在快捷方式的属性中添加启动参数 
-AudioMixer -ResX=1920 -ResY=1080 -PixelStreamingIP=localhost -PixelStreamingPort=8888 -log -RenderOffScreen

# -ResX=1920 -ResY=1080 设定分辨率
# -AudioMixer 像素流送默许是没有声音的,所以想要有声音,这个必须记得增加
# PixelStreamingIP:设置像素流的ip,默认本机地址
# PixelStreamingPort:设置像素流的端口
# RenderOffScreen  关闭程序渲染,只有网页才显示画面
# log 打开运行日志输出,只有调试模式才生效

# 启动程序

# 双击快捷方式,启动程序,查看信令服务器是否已经连通
# 如果信令服务器提示已连接,这时候就可以通过 http://127.0.0.1/ 直接访问 
# 改80端口 \Windows\Test01\Samples\PixelStreaming\WebServers\SignallingWebServer\config.json

注意

打开多个窗口访问,可以看到当一个用户操作界面的时候,另一个界面也会相应变化,这在实际项目中,多人访问同一个项目肯定是不妥的

# 开启分发服务器

# 由于要部署多用户,就要通过一个分发服务器去分发用户的请求
# 先打开 Matchmaker/config.json 文件,将分发的接口统一调整成为 80
# 然后进入 platform_scripts/cmd/ 文件夹下,点击 run.bat 启动分发服务器
{
	"HttpPort": 80,
	"UseHTTPS": false,
	"MatchmakerPort": 9999,
	"LogToFile": true,
	"EnableWebserver": true
}

# 配置启动多个信令服务器

# 如果想多少个用户同时访问,就复制多少个信令服务器 SignallingWebServer 的包
# 然后进入各自包中,打开配置文件 config.json 对各个信令服务器进行配置,只需要配置以下 4项 即可
# 最后进入各个信令服务器文件夹的 platform_scripts/cmd 下,双击 run_local.bat 启动即可
// 信令服务器1
{
	"UseFrontend": false,
	"UseMatchmaker": true, // 是否使用分发,这里要设置为 true,用于多用户访问时自动分配
	"UseHTTPS": false,
	"UseAuthentication": false,
	"LogToFile": true,
	"LogVerbose": true,
	"HomepageFile": "player.html",
	"AdditionalRoutes": {},
	"EnableWebserver": true,
	"MatchmakerAddress": "",
	"MatchmakerPort": 9999,
	"PublicIp": "localhost",
	"HttpPort": 81, // 用户在浏览器通过该端口进行访问像素流
	"HttpsPort": 443,
	"StreamerPort": 881, // 像素流向外流送的端口
	"SFUPort": 8881, // 转发器接口,收到像素流后,通过该端口转发给用户客户端
	"MaxPlayerCount": -1
}

// 信令服务器2
{
	"UseFrontend": false,
	"UseMatchmaker": true, // 是否使用分发,这里要设置为 true,用于多用户访问时自动分配
	"UseHTTPS": false,
	"UseAuthentication": false,
	"LogToFile": true,
	"LogVerbose": true,
	"HomepageFile": "player.html",
	"AdditionalRoutes": {},
	"EnableWebserver": true,
	"MatchmakerAddress": "",
	"MatchmakerPort": 9999,
	"PublicIp": "localhost",
	"HttpPort": 82, // 用户在浏览器通过该端口进行访问像素流
	"HttpsPort": 443,
	"StreamerPort": 882, // 像素流向外流送的端口
	"SFUPort": 8882, // 转发器接口,收到像素流后,通过该端口转发给用户客户端
	"MaxPlayerCount": -1
}

# 配置启动客户端

# 复制多个快捷方式: -PixelStreamingIP=localhost -PixelStreamingPort=881 -log -RenderOffScreen
# 修改其中的 PixelStreamingPort 参数与信令服务器中对应即可
# 然后双击启动多个客户端即可

# 多用户启动整体流程和预览

# 第一步: 需要在 Matchmaker\platform_scripts\cmd 中开启分发服务器
# 第二步: 需要开启多个信令服务器,需要在每个信令服务器的 platform_scripts\cmd 下单独开启
# 第三步: 开启多个客户端
# 第四步: 直接访问http://127.0.0.1,由于在第一步中配置了入口都是80端口,所以会自动分配到81或82
# 效果: 可以看到操作其中一个窗口,另一个窗口并不会随之运动,并且两者的浏览器端口不一样

多用户启动整体流程和预览

注意

由于部署多用户,需要开启多个信令服务器和多个其他服务,非常耗服务器的配置,所以很多大型游戏都分区运行,其实每个区都是一个服务器甚至是一个服务器集群,但是每个区能注册的用户也是有限制的,所以才会有服务器爆满这种说法

如果用户超过了信令服务器的总数,用户将一直进入不了页面,直到有人下线,将该信令服务器闲置出来后才可以进入,所以需要前端做好用户的限制和提示等

# 插件使用

# VaRest

# 发送Get请求

  • 添加 VaRest Subsystem 引擎子系统
  • 添加 Construct Json Request 节点
  • Url地址添加请求参数

发送Get请求

# 发送Post请求

  • 添加 VaRest Subsystem 引擎子系统
  • 添加 Construct Json Request 节点
  • Set Header 设置请求头信息
  • Get Request Object 设置请求参数

发送Get请求

# 请求Json文件

  • 本地Json文件必须放在Content目录下

# Blueprint

  • 下载插件HttpBlueprint、Json Blueprint Utilities两个插件是互相依赖的,启用,重启项目

# 发送Get请求

  • 使用 Http Get Request 方法

发送Get请求

# 发送Post请求

  • 使用 Http Post Request 方法

发送Post请求

# 请求Json文件

  • 使用 Load Json from File 方法,Json文件放在根目录下

Load Json from File