UE5 像素流 SDK 中文 英文
与 Epic Games 设计复杂的像素流 SDK 相比,peer-stream.js 是一个零依赖的轻量级 WebRTC 库,包含一个前端组件(使用 WebComponents API)和一个信令服务器(使用 NodeJS)。
- peer-stream.js:玩家浏览器 SDK
- signal.js:node.js 信令服务器
- signal.json:配置 signal.js
- signal.html:signal.js 的图形界面和 peer-stream.js 的示例
演示
# 安装 WebSocket
npm install ws@8.5.0
# 启动信令服务器
node signal.js
# 启动打包好的 UE5
start path/to/UE5.exe -PixelStreamingURL="ws://localhost:88"
# 访问网页
start http://localhost:88/signal.html
signal.json
选项 | 类型 | 默认值 | 用途 |
---|---|---|---|
PORT | 数字 | 88 | 玩家和 UE5 的 WebSocket/HTTP 端口 |
UE5 | 字符串[] | [] | 玩家连接时运行命令(UE5 自动启动) |
one2one | 布尔值 | false | 玩家和 UE5 的一对一映射 |
auth | 字符串 | '' | HTTP 基本认证用户名:密码 |
boot | 布尔值 | false | 系统启动时运行 node signal.js |
exeUeCoolTime | 数字 | 60 | 下次启动相同 UE 实例的时间间隔 |
preload | 整数 | 1 | 预启动的 UE 实例数量 |
负载均衡
signal.js
接受多个 UE5 和玩家连接,每个 UE5 通过负载均衡映射到多个玩家。启用 one2one
可保持一对一映射。提供 UE5
参数可自动启动 UE5。所有配置都在 signal.json
中。
虚幻引擎
启用插件:
插件 > 内置 > 图形 > 像素流 > 已启用
编辑器偏好设置 > 关卡编辑器 > 播放 > 附加启动参数
start path/to/UE5.exe -{key}={value}
常用启动选项:
-PixelStreamingURL="ws://localhost:88"
-RenderOffScreen
-Unattended
-GraphicsAdapter=0
-ForceRes
-ResX=1280
-ResY=720
-PixelStreamingWebRTCFps=30
-Windowed
-AudioMixer
-AllowPixelStreamingCommands
-PixelStreamingEncoderRateControl=VBR
peer-stream.js
HTML:
<script src="//localhost:88/peer-stream.js"></script>
<video is="peer-stream" id="ws://127.0.0.1:88/"></video>
或 JavaScript:
<script type="module">
import "//localhost:88/peer-stream.js";
const ps = document.createElement("video", { is: "peer-stream" });
ps.id = "ws://127.0.0.1:88/";
document.body.append(ps);
</script>
消息
发送消息:
// 对象将被 JSON.stringify()
ps.emitMessage(msg: string | object);
接收消息:
ps.addEventListener("message", e => {
// JSON.parse(e.detail)
});
要求
- Google Chrome 90+
- Unreal Engine 5.0.3
- NodeJS 14+
- npm/ws 8.0+
© MIT 许可证
版权所有 (c) 2020-2024 Inveta
特此免费授予任何获得本软件副本和相关文档文件("软件")的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为还是其他方面,均由软件或软件的使用或其他交易引起、由软件引起或与之相关。