UE4中LocalRole和RemoteRole的区别

这篇具有很好参考价值的文章主要介绍了UE4中LocalRole和RemoteRole的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Local Role

在UE4的多人游戏编程中,使用HasAuthority()来判断Character或者Actor是否存在于服务器上,在之前我们提到过,多人游戏的基础是C-S(服务端——客户端),在服务端中存在的Actor和Character拥有绝对的主权,既Authority为权威性,对于游戏中有影响的操作都需要放置在Server上完成,再通过Server下发到所有Client上。

而在UE4中,对于Actor的网络复制我们有两个重要的属性,这两个属性可以告诉我们:

  • 谁对Actor具有权威性
  • Actor是否被设置为网络复制
  • 以及网络复制的模式

首先我们需要确定哪一个运行的实例对Actor拥有权威性(Authority),因此我们需要检查LocalRole是否为ROLE_Authority。如果为ROLE_Authority,则当前在引擎中运行的实例对该Actor具有权威性。

我们可以查看引擎中的源码:

FORCEINLINE_DEBUGGABLE bool AActor::HasAuthority() const
{
	return (GetLocalRole() == ROLE_Authority);
}

因此只有服务器上的Actor才是具有权威性的。

对于RemoteRole以及LocalRole,当查询的实例改变时,相应的值可能会发生反转。

例如,在Server中上面两个变量的值如下:

Role == Role_Authority
RemoteRole = ROLE_SimulatedProxy

而在Client中,你就会看到该Actor的值如下:

Role == ROLE_SimulatedProxy
RemoteRole == ROLE_Authority

服务器负责Actor并将其复制到客户端,客户端只需要接收更新,并在更新之间模拟Actor。但是服务器并不会频繁地进行Actor的更新,因为这会花费大量的带宽以及CPU资源。Server会根据AActor::NetUpdateFrequency这个属性来网络复制Actor。

这意味着,在Actor更新之间会有一段时间传递给客户端。这可能会导致演员在动作中显得断断续续。为了弥补这一点,客户端将在更新之间模拟Actor。

由此引申出下面两种类型的模拟:

ROLE_SimulatedProx
ROLE_AutonomousProxy

ROLE_SimulatedProx

这是一种常规的模拟手段,通常是通过已知的最后位置进行延申,当Server对一个特定的Actor进行更新,Client将会调整其位置到新的地点,然后在更新与更新之间,Client将会根据Server下发的最近的向量继续移动Actor。

ROLE_AutonomousProxy:

通常只用于PlayerControllers拥有的Actor。这仅仅意味着这个Actor正在接收来自人类控制器的输入,所以当我们推断时,我们有更多

信息,并可以使用实际的外部输入来填充缺失的信息(而不是根据最后已知的信息进行推断速度)。

在UE4中,我们可以查询LocalRole以及RemoteRole,核心代码如下:

void UOverHeadWidget::ShowPlayerNetRole(APawn* InPawn)
{
	// ENetRole LocalRole = InPawn->GetLocalRole();
	ENetRole RemoteRole = InPawn->GetRemoteRole();
	FString Role;
	switch (RemoteRole)
	{
	case ENetRole::ROLE_Authority:
		Role = FString("Authority"); break;
	case ENetRole::ROLE_AutonomousProxy:
		Role = FString("Autonomous Proxy"); break;
	case ENetRole::ROLE_SimulatedProxy:
		Role = FString("Simulated Proxy"); break;
	case ENetRole::ROLE_None:
		Role = FString("None");break;
	}
	FString RemoteRoleString = FString::Printf(TEXT("Remote Role: %s."), *Role);
	SetDisplayText(RemoteRoleString);
}

这里我使用了一个Widget,用于保存查询后的结果,并直接显示在Character的上方。

LocalRole(Server)

ue4 localrole remoterole,ue4,服务器,网络
LocalRole(Client)
ue4 localrole remoterole,ue4,服务器,网络

RemoteRole(Server)
ue4 localrole remoterole,ue4,服务器,网络

RemoteRole(Client)
ue4 localrole remoterole,ue4,服务器,网络
我们就可以根据这两个属性判断Actor是存在于服务端还是存在于客户端,并与之后的RPC结合,就可以完成多人游戏中的各项同步操作。文章来源地址https://www.toymoban.com/news/detail-768431.html

到了这里,关于UE4中LocalRole和RemoteRole的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 游戏开发常用引擎工具介绍对比区别(UE4,Unity,Cocos,LayaAir,[egret-白鹭])

    是一套为开发实时技术而存在的引擎工具。目前广泛应用于3D建模渲染、游戏开发中。它完善的工具套件以及简易的工作流程能够使开发者快速修改或查看成果,对于代码的依赖性很低。而完整公开的源代码则能让使用者自由修改和扩展引擎功能。 是面向开发人员的 3D/2D 游戏

    2024年02月13日
    浏览(68)
  • 【UE4】UE4蓝图 文本自动换行

    该方法将字符串分割成同等长度的数组及换行后字符串 使用示例 结果 获得字符串 蓝图代码:复制以下内容并直接粘贴到蓝图中 宏代码 使用示例 结果 获得数组 代码:复制以下内容并直接粘贴到蓝图中 宏代码 同时输出两种结果 同时输出函数蓝图 宏蓝图 内容详情: 使用示例

    2024年02月16日
    浏览(58)
  • UE4/UE5 动画控制

    工程下载 ​ ​​​​​​​​​​​​​https://mbd.pub/o/bread/ZJ2cm5pu   蓝图控制sequence播放/倒播动画: 设置开启鼠标指针,开启鼠标事件 在场景中进行过场动画制作 设置控制事件

    2024年02月09日
    浏览(55)
  • UE4 UE5 一直面向屏幕

                        一直面相屏幕,方法很简单 新建一个蓝图,如下添加组件: 蓝图如下: Rotation Actor :需要跟随镜头旋转的物体 Update:一个timeline(替代event tick 只是为了循环) Timeline: 蓝图直接可以复制:网址

    2024年02月04日
    浏览(61)
  • 【虚幻引擎】UE4/UE5 材质

      基础颜色(BaseColor) :材质本身的颜色,例如绿色蓝色等 金属度(Metallic) :金属度,材质是否含有金属光泽 粗糙度(Roughness) :粗糙或者平滑度,物体表面的粗糙程度 自发光(EmissiveColor) :物体本身是否发光 透明度(Opactity) :物体表面是否透明,适用于 半透明(Translucent)、

    2024年02月02日
    浏览(82)
  • 【虚幻引擎】UE4/UE5插件

    Blank:空白插件,可以从头开始自己定义想要的插件风格和内容,用此模板创建的插件不会有注册或者菜单输入。 BlueprintLibrary:创建一个含有蓝图函数库的插件,此模板函数都是静态全局函数,可以在蓝图中直接调用。 ContentOnly:创建一个只包含内容的空白文件 Editor Toolba

    2024年02月05日
    浏览(75)
  • 【虚幻引擎UE】UE4/UE5 新人科普向

    Unreal Engine是当前最为流行的游戏引擎之一,具有丰富的游戏开发功能和强大的游戏引擎渲染能力。 UE5官方文档:UE5官方文档非常详细,介绍了UE5的各个功能和应用,适合入门学习和深入探究。链接:https://docs.unrealengine.com/5.1/zh-CN/ UE5中文社区:该社区聚集了大量的UE5开发者,

    2024年02月09日
    浏览(79)
  • UE4/5:通过Blender制作BlendShape导入【UE4/5曲线、变形目标,blender形态键】

    UE4/5里面,我们经常可以在一些骨骼模型上面看到相关的曲线,如Metahuman里面就是通过这个曲线来改变人物的脸部表情。 而这里笔者将教导如何去制作这种曲线。 这种曲线都是存在于骨骼模型上的,所以我们要么直接制作骨骼模型导入ue,要么做一个普通的模型,然后导入

    2024年02月03日
    浏览(63)
  • 幽灵行者ue4崩溃怎么解决?幽灵行者ue4崩溃原因深度解读及全套解决方案

    UE4崩溃通常是由于多种原因引起的,如虚幻引擎版本过旧、GPU驱动程序过时或损坏、注册表设置错误等。那么幽灵行者ue4崩溃怎么解决呢?下面一起来看看吧! 一、原因 1. 硬件兼容性问题 •显卡驱动不兼容:过时或错误的显卡驱动可能导致与UE4引擎的交互出现问题,引发崩

    2024年04月26日
    浏览(65)
  • ue5,ue4(虚幻5)安卓触摸

    这个是单方向的,如果要用双方向的,就是 x和y同时运用的话建议用向量2d(变量),把它分割成x和y就可以了,我门平时在网上见到的触摸都是:按下到连续,我这个方法是按下-连续-停止,记住,y的变量要是负数,还有就是,灵敏度调大的时候,屏幕会跳动,由于x和y的屏

    2024年02月11日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包