Br200
Date: 2023-06-13
Tags: battle royal br200 photon fusion fps
BR200
IM是一种Network Culling的技术,主要目的是:
- 是减少端到端的网络通信
- 网络消息分组
IM通过两类方式实现:
- Object Interest
- Area of Interest
- 需要声明该Object所在的世界坐标(仅XZ平面有效)(继承NetworkAreaOfInterestBehaviour),如果该坐标在Player关注的区域之外,该Object的网络同步数据则会被剔除
- All Players (Default)
- Explict Players (使用Object.SetPlayerAlwaysInterested指定某个Player关注)
- Interest Group (需设定某个Networked Property的Group)
- Default Interest Group (Default) (默认指定的分组被所有Player关注)
- Explicitly Setting Player Interest (使用Object.SetInterestGroup指定某个Player关注某个分组)
会被剔除的网络消息有两种:
- Networked Property
- Rpc
注:Static Rpc不会被剔除
IM仅支持Eventual Consistency
模式,也就是说在Delta Snapshots
模式下无法使用
Fusion
为保证网络传输效率,仅会同步变化,不变的属性不会同步
Delta Snapshots
VS Eventual Consistency
Delta Snapshots
仅适用于ClientServer Topology, 网络同步前会使用Delta Compressor对(全量)帧数据进行压缩。
- 同步全量状态,但是会同步多帧的delta状态,例如Server当前100帧,Server确定Client已经收到95帧,Server则会同步96与100帧的delta状态,虽然冗余但会提高传输效率
Eventual Consistency
使用IM进行网络数据剔除,Server只会同步Player关注的数据
- BeforeUpdate中记录玩家本地输入到Render Input,并累积到Cached Input
- Render中会使用Render Input进行一些本地渲染预测,例如移动转向
- NetworkEvents.OnInput中提供Cached Input
- BeforeTick中获取Network Input
- FixedUpdateNetwork中使用Network Input进行逻辑处理
基于Playables API实现
- tick-accurate animation evaluation
- dynamic performance scaling
基于fusion kcc(kinematic character controller)实现
Weapon System
- Recoil 后坐力
- Dispersion 扩散
- Piercing 穿透
- Dynamic Drop 伤害衰减(随距离)
- Third Person Shooting
- aiming raycast from camera, shooting raycast from fire position
- Interest Management
- StaticNetworkTransform 仅在Spawned时同步一次数据
- NetworkCulling 一定时间没有收到更新,判定为剔除状态,停止某些表现逻辑