专栏首页循迹漫聊虚幻引擎UE Multi-User Editing Guide

UE Multi-User Editing Guide

在大世界项目中,场景的协同编辑格外重要。因为在UE的机制中,地图也是单个的资源,虽然可以使用Sub-level的形式拆分,但是最小元素仍然是单个资源。当不同的Designer修改相同的资源时,就会造成冲突,也没办法像文本那样合并的,所以在协同开发中,这是一个瓶颈。 在UE4.23之后,UE官方推出了一个多人协作机制,可以使多人共同地编辑同一份地图,并不会造成冲突,并且可以同步其他变动的资源并能够实时生效,能够比较完美地解决协同协作的痛点,本篇文章记录一下启用流程和使用规范以及如何绕过内网的端口限制等问题。

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

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

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

使用流程

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

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

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

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

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

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

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

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

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

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

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

独立的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=allow
netsh advfirewall firewall add rule name="allowMultiUserServer" protocol=TCP dir=in localport=11111 action=allow
netsh advfirewall firewall add rule name="allowMultiUserServer" protocol=UDP dir=out localport=11111 action=allow
netsh 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

参考资料

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GAN Zoo:千奇百怪的生成对抗网络,都在这里了(73个)

    允中 编译整理 量子位 出品 | 公众号 QbitAI 自从Goodfellow2014年提出这个想法之后,生成对抗网络(GAN)就成了深度学习领域内最火的一个...

    量子位
  • 5G MEC规范中的术语

    本打算跳过这篇,不过在整理文章时,发现如果略过这篇,一些看上去文字相似的词,例如:MEC管理、MEC平台、MEC系统,容易造成臆想导致的混淆;而一些平时常见的词...

    边缘计算
  • 大规模物联网网络中的上行链路无赠品稀疏代码多路访问系统分析(CS)

    无赠品的稀疏代码多路访问(GF-SCMA)被认为是未来无线网络的有希望的多路访问候选者。在本文中,我们专注于表征具有广泛连接的网络(例如,物联网(IoT)网络)...

    用户8380959
  • 【论文推荐】最新5篇深度强化学习相关论文推荐—经验驱动的网络、自动数据库管理、双光技术推荐系统、UAVs、多代理竞争对手

    【导读】专知内容组整理了最近强化学习相关文章,为大家进行介绍,欢迎查看! 1. Experience-driven Networking: A Deep Rei...

    WZEARW
  • 解析5G安全(一):5G网络架构

    5G飞速发展的今天,了解5G的网络结构、建立5G网络全局观是我们进行下一步5G研究工作的基础。本文首先从接入网、传输网、核心网三个部分解析5G网络结构,然后分析...

    绿盟科技研究通讯
  • 不可错过的 GAN 资源:教程、视频、代码实现、89 篇论文下载

    【新智元导读】这是一份生成对抗(神经)网络的重要论文以及其他资源的列表,由 Holger Caesar 整理,包括重要的 workshops,教程和博客,按主题...

    新智元
  • 资源 | 生成对抗网络及其变体的论文汇总

    选自Deephunt 作者:Avinash Hindupur 参与:黄小天、蒋思源 生成对抗网络(GAN)是近段时间以来最受研究者关注的机器学习方法之一,深度学...

    机器之心
  • 跟老驴一起学PR | Innovus 输入

    基于两个事实——工作需求,码文需求 —— 从今儿开始,老驴要系统地学习一下PR,从innovus 的user guide 开始,同时会找个不大不小的设计实操,会...

    老秃胖驴
  • How To Install Nginx, MariaDB 10, PHP 7 (LEMP Stack) in 16.10/16.04

    The LEMP stack is an acronym which represents is a group of packages (Linux OS...

    shaonbean
  • 资源 | 生成对抗网络新进展与论文全集

    选自GitHub 参与:蒋思源、吴攀 生成对抗网络(GAN)是近段时间以来最受研究者关注的机器学习方法之一,深度学习泰斗 Yann LeCun 就曾多次谈到 这...

    机器之心
  • AAAI2020推荐系统论文集锦

    最近整理了AAAI2020会议中关于推荐系统的论文,同时通过代码分析了下所接收论文的标题,发现了一些研究的热点以及趋势。

    张小磊
  • Java 15 的新特性: TextBlocks

    JDK 15 is the open-source reference implementation of version 15 of the Java SE ...

    一个会写诗的程序员
  • 转贴-WP7开发资源大收集

    文章作者: jason huang 文章标签: Microsoft, Windows Phone 7, WP7 转贴链接: WP7开发资源大收集 这里收集...

    ShiJiong
  • pd.MultiIndex() TypeError: __new__() got an unexpected keyword argument 'labels

    可以看到pd.MultiIndex()并没有labels参数,与labels功能相同的是codes参数,查看https://pandas.pydata.org/...

    迷乐
  • wordpress角色权限汇总

    我们在用wordpress开发的时候有时候需要设置不同的用户组及权限,具体有哪些角色权限呢?随ytkah一起来看看吧。WordPress使用了角色的概念,旨在让...

    ytkah
  • HTML5 game engines

    The following are few examples of game engines implemented with HTML5 and JavaSc...

    庞小明
  • Gradle Plugin for Android Development User Guide 1

    Gradle Plugin for Android Development User Guide (1)

    宅男潇涧
  • VS Code 全部快捷键一览表(巨TM全)

    风骨散人Chiam
  • 用于多视点子空间学习的深度协同注意网络(CS)

    许多真实世界的应用程序涉及来自多种模式的数据,因此显示出视图的异构性。例如,社交媒体上的用户建模可能同时利用底层社交网络的拓扑结构和用户帖子的内容;在医学领域,...

    用户8380959

扫码关注云+社区

领取腾讯云代金券