UE5 GAS框架解析内部数据处理机制——服务器与客户端

当, gas通过点击鼠标光标触发事件时,内部的处理机制。

当通过点击事件,命中中目标时, 可获取到对应的TargetData 目标数据。处理相应的操作。

仅有本地的客户端的情况下。命中并不会有什么异常。

当存在服务器时, 服务端并不能知道,客户端的命中结果。通过GAS框架内部具有一点的数据处理发送数据的实现。

当,通过RPC的方式,实现客户端请求服务器时,具有如下的两个问题。GAS通过 Activate的一个函数方法来激活技能系统, 客户端与服务器的通信只能是RPC的方式。 RPC与Activate所到达服务器的时间,具有不确定性。

考虑这样的一个场景: 当我们点中了屏幕上的一个敌人,我们需要对ta释放技能,造成伤害,击杀目标(这里的每一步都很难,我们先做最简单的,激活一个技能,搞明白GAS框架的激活流程)

我们需要知道这个敌人所在3D世界的虚拟坐标,或者说空间向量 位置信息,及这个Actor对象信息。 所以在客户端我们点中了目标,这个时候只能通RPC的方式,发送这些信息需要发送到服务器确认。 服务器确认信息,告知是否可以激活此次的技能。这UE5 GAS对技能处理最简单的一种方式。

下面看GAS 如何处理 客户端 到服务器之间的RPC数据,至关重要!

当客户端需要与服务器发送数据时, GAS 内部有一个FGameplayAbilityTargetDataHandle 的结构体,用来存储RPC需要发送的数据,调用 AbilitySystemComponent->ServerSetReplicatedTargetData 用来发送数据,同时带有客户端预测的ScopedPredictionKey,服务器会校验这个Key值。服务器会有一个委托函数,来响应接受目标数据。 客户端ShouldBroadcastAbilityTaskDelegates 委托任务完成之后,广播当前数据。

cpp 复制代码
	//窗口预测函数 
    FScopedPredictionWindow ScopedPredictionWindow(AbilitySystemComponent.Get());

    //RPC数据
    FGameplayAbilityTargetDataHandle DataHandle;

    /** Replicates targeting data to the server  复制数据发送到服务器*/
	AbilitySystemComponent->ServerSetReplicatedTargetData(
	GetAbilitySpecHandle(),
	GetActivationPredictionKey(),DataHandle,
	FGameplayTag(),
	AbilitySystemComponent->ScopedPredictionKey);

    //创建委托 广播通知
	if (ShouldBroadcastAbilityTaskDelegates())

		ValidData.Broadcast(DataHandle); //广播当前点中位置

在RPC数据到达时间不确定时,GAS内部会有自己的一个委托函数。重新绑定委托函数,广播数据。这就解决了数据的不确定性。

这是服务器 的接收数据的处理操作。GAS 通过委托的方式来处理客户端发送来的数据,及预测Key值。并绑定 我们需要回调的函数。

如果数据没有到达的情况下,bCalledDelegate为false 的情况下,就继续等待数据的到底。

这是源代码的注释说明。

相关推荐
zhangzhangkeji10 小时前
UE5 材质-5:砖缝不透明材质系列,掩码节点 ComponentMask,材质函数 CustomRotator 旋转UV,
ue5
AA陈超1 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-08 UI 部件数据表
c++·游戏·ue5·游戏引擎·虚幻
ricky6758 天前
[Linux]Linux系统的20个实用命令详解
ue5
AA陈超9 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-01.创建游戏玩法标签
c++·游戏·ue5·游戏引擎·虚幻
reddingtons10 天前
场景美术师的“无限画板”:UE5中非破坏性的材质混合(Material Blending)工作流
ue5·材质·设计师·技术美术·游戏策划·游戏美术·substance
m0_5522008210 天前
《UE5_C++多人TPS完整教程》学习笔记61 ——《P62 武器开火特效(Fire Weapon Effects)》
c++·游戏·ue5
努力的小钟10 天前
UE5 GAS GameAbility源码解析 EndAbility
ue5
AA陈超10 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-04 使用效果应用游戏标签
c++·游戏·ue5·游戏引擎·虚幻
zhangzhangkeji10 天前
UE5 测量 -1,长度测量:P2制作定位球与定位线,P3制作射线检测节点,P4在鼠标位置生成定位球
ue5
AA陈超11 天前
虚幻引擎UE5专用服务器游戏开发-33 在上半身播放组合蒙太奇
c++·游戏·ue5·游戏引擎·虚幻