U3d同步

作者: APP4x | 来源:发表于2020-08-11 12:42 被阅读0次
这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~

目前游戏大体分为两个类别。

1.MO(Multiplayer Online)
少量玩家一起的竞技游戏

2.MMO(Massively Multiplayer Online)
期望大量玩家进行长期的社交性游戏

MMO里面的小副本也可以以MO的方式实现,技术并没有冲突

通信方式有什么?
1.C/S架构
客户端与服务器连接的消息传递方式
所有消息都是由服务器进行转发
优点:
1.服务器知道一切,可以控制非法行为
2.客户端只做表现,完全由服务器的数据驱动
缺点:
1.网络延迟较大 (200m以下)
2.昂贵的服务器成本
一般用在不需要,或者很少需要预表现的游戏中

2.P2P架构
两个客户端之间直接连接
基本和C/S优缺点相反

数据模式有什么?
1.全网状数据模式
每个客户端需要给网络中的每个设备广播自己的数据
每个设备上都有完整的数据,各个终端指数控制设备的输入信息
如果终端数据增加,信息量会急剧增长
一般只传递用户的输入信息,需要保证每个客户端的初始数据与每次操作的运算结果必须完全相同,否则就会表现不一致

2.星型数据模式
不平等模式,所有终端都要依从中央终端的数据(中央服务器)
服务器在收集完所有设备发送的数据之前 一直处于等待状态,接收完成后再广播出去
避免了终端过多导致数据暴涨
但是会导致数据传输速度下降,有利有弊

同步方式
1.状态同步
将玩家的状态行为同步(怪物的AI控制,角色技能释放,战斗伤害计算等)
由服务器运算,下发给客户的,客户端根据数据驱动显示
缺点:
响应速度存在问题,无法做到高频交互的顺畅体验
某个角色突然会出在某个位置,某个技能效果突然出现,甚至角色忽然死亡
(网络波动导致数据未及时送达,客户端进行了某些程度的预表现或者航位预测)

2.帧同步
客户端之前只同步用户的输入指令(向哪走,用什么技能)
消耗的流量只取决于指令数,会大大减少消息
特点:
需要保证计算结果的一致性(相同的时机,相同的内容,会得到相同的结果)
Untiy的不确定性:
a.各脚本之间的Start、Update生命周期函数调用顺序不确定
b.Physic物理系统也不保证是确定性模拟。
(某个单位坐标偏差了0.01导致技能未命中,血量判断就会受到影响)

常见的注意:
a.不使用浮点数,用整数代替
b.不同客户的同步频率要保证一直
c.随机种子相同,自定义接口防止其他公用系统干扰
d.使用排序容器,保证遍历顺序
e.逻辑显示分离
f.使用补间过渡,调整速率,掩盖卡顿

流畅度问题:
通过网络传输的数据一定会慢于本地,又希望相同时刻输入信息,因此就会引发等待,用户体验不流畅
解决办法:
a.广播消息最小化
b.将所有客户的同时发生的内容提前广播给其他用户,时钟同步
c.客户端逻辑先行,采用平滑追赶的方式
d.等等

使用UDP作为传输协议
TCP可以保证传输的可靠性,但是不适合做波动较大的移动网络
UDP虽然会丢包乱序,可以发冗余包解决这个问题(每帧三个数据包,包含过去两帧的数据)

相关文章

  • U3d同步

    这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~ 目前游戏大体分为两个类别。 1.MO(Multiplay...

  • 总结接入u3d项目出现的问题(把Unity工程导出google

    1 通过控件装载u3d视图来控制显示和隐藏视图在u3d 5.6之前的版本是行的通的 u3d 5.6的版本(u3...

  • Unity3D Input.GetAxisRaw 与 Inpu

    在u3d中,这两个函数经常用到,首先这两个函数的使用,先在u3d中进行设置.打开u3d, edit-->Proje...

  • 关于U3D DrawCall优化手记

    【一】渲染顺序 U3D的渲染是有顺序的,U3D的渲染顺序是由我们控制的,控制好U3D的渲染顺序,你才能控制好Dra...

  • 郑州u3d游戏开发培训要多少钱?

    我们知道,随着人工智能的发展,u3d游戏开发培训近年来愈发火热。u3d游戏开发培训要多少钱?u3d游戏开发培训要掌...

  • 安卓和Unity3d 的交互

    因为公司需要开始把安卓工程来嵌入u3d或者是u3d嵌入安卓。安卓这边主要是负责多人语音视频作为sdk给u3d工程使...

  • U3D方法名

    U3D基础 U3D进阶 脚本的生命周期: 常用 API 之工具类: 射线: 愤怒的小鸟遇到的函数

  • Android和Unity3D界面交互 数据传输

    公司项目分为三个小组:Android ios u3d目前甲方认为u3d的实现的效果好,提出了这个需求(Androi...

  • 内存解析Il2cpp函数地址

    目的 使用函数名拿到U3D非导出函数指针 起因 相对u3d游戏进行hook基本上离不开 Il2CppDumper[...

  • u3d与iOS交互(页面跳转)

    需要实现功能:从iOS原生界面进入u3d界面,然后还可以从u3d界面退出返回iOS界面.软件版本Unity5.6....

网友评论

      本文标题:U3d同步

      本文链接:https://www.haomeiwen.com/subject/elrxdktx.html