FeastSC 发表于 2022-6-23 12:57

UE 多人协同 Multi-User Editing Guide

UE官方多用户编辑,其实现是一个C/S架构的方案,官方文档:Multi-User Editing。

UE官方推出了一个多人协作机制,可以使多人共同地编辑同一份地图,并不会造成冲突,并且可以同步其他变动的资源并能够实时生效,能够比较完美地解决协同协作的痛点,本篇文章记录一下启用流程和使用规范以及如何绕过内网的端口限制等问题。

image.png

本质上是创建一个Server进程,用于管理多用户编辑的Session,并向各个Client之间传递相互变动的数据。每个Session代表着协同编辑的一个“房间”,只有加入到这个“房间”的人,才能够实时地预览和同步其他人的提交,每个Server上可以创建多个Session,可以由不同的用户创建、加入。

注意:UE并不是直接把变动的资源拷贝到各个Client,而是通过传递变动的数据到各个Client实现相同的表现,在传输效率上更好,但会带来一个问题,对于相同操作的资源,对于uasset来说,并不完全相同,即A用户修改了Weapon.uasset,将会把变动的数据同步到B用户,如果A和B用户都提交了Weapon这个资源,他们的二进制并不完全相同,在合并提交时会有冲突,提交规范还是需要注意的。
使用流程


多用户编辑支持,依赖UE的Multi-User Editing插件:

image.png

启用之后可以在Project Settings-Plugins中看到Multi-User Editing和Multi-User Transactions选项:

image.png


image.png

能够配置多用户协作的参数。

在开启插件之后,可以在编辑器Windows-Developer Tools中看到Multi-User Browser选项(也可以在Project Settings-Plugins-Multi-User Editing中开启Enable Multi-User Toolbar Button):

image.png

启动之后会自动搜索网络内可见的UnrealMultiUserServer 服务器

image.png

也可以通过Launch a Server拉起一个UnrealMultiUserServer进程,在本地创建一个Server。通常情况下,会有一个独立的机器作为Server,供其他用户连接。

Mulit-User Browser作为Client连接Server时,使用的是UDP协议,默认连接端口号为6666(Launch a Server启动默认是6666),也可以自己修改想要指定的端口号,Client会自动检测网络内可达的Server列表,创建Session时可以选择在哪个Server上创建。

image.png


image.png

注意:Mulit-User Browser依赖UDP Messaging插件作为网络传输的方式,所以,如果我们想要修改默认连接的端口号,就需要修改UDP Messaging中的默认端口号。

可以在Project Settings-Plugins-Networking中修改(将230.0.0.1:6666修改为230.0.0.1:XXXXX即可):

image.png

注意:230.0.0.1是RFC 5771(IPV4)和RFC 4291(IPV6)定义的多播地址,不能改成其他的地址。

修改完毕后,启动UnrealMultiUserServer即可使用变动后的端口:

image.png

独立的Server进程


前面介绍是从UE编辑器中通过Multi-User Browser中Launch a Server,但是对于Server而言,其实并不需要启动编辑器,UE也是通过拉起一个新的进程传递命令行参数来启动Server的,所以,我们可以自己使用命令行来启动Multi-User Server:
Engine/Binaries/Win64/UnrealMultiUserServer.exe -UDPMESSAGING_TRANSPORT_UNICAST=0.0.0.0:0 -UDPMESSAGING_TRANSPORT_MULTICAST=230.0.0.1:11111防火墙策略


注意,因为Multi-User Editing使用的是UDP协议,所以指定的端口必须被防火墙放行才能够检测到Server。

Windows可以使用以下批处理进行添加防火墙规则,保存为.bat使用管理员权限执行即可:
netsh advfirewall firewall add rule name="allowMultiUserServer" protocol=TCP dir=out localport=11111 action=allownetsh advfirewall firewall add rule name="allowMultiUserServer" protocol=TCP dir=in localport=11111 action=allownetsh advfirewall firewall add rule name="allowMultiUserServer" protocol=UDP dir=out localport=11111 action=allownetsh advfirewall firewall add rule name="allowMultiUserServer" protocol=UDP dir=in localport=11111 action=allow
Mac和Linux可以使用ufw进行防火墙配置:
$ ufw allow 11111/udp$ ufw allow 11111/tcp参考资料


Multi-User Editing

Multi-User Editing Overview

Explore Collaboration with Unreal Engine’s Multi-User Editor | Webinar

转载自
UE Multi-User Editing Guide - 云+社区 - 腾讯云 (tencent.com)
页: [1]
查看完整版本: UE 多人协同 Multi-User Editing Guide