游戏服务器与客户端数据同步问题

刘大神仙 2018-08-28 07:38:40
如果一张地图上面有100个人,其中50个人在不停的移动,那服务器要把这50个人的坐标高频率的发送给100个客户端,是这样吗?100个人中,每个人都要发送50个人的坐标吗?
...全文
805 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilaishuichina 2018-09-27
  • 打赏
  • 举报
回复
如果这100人是同屏(就是任意两个人之间都要互相看到对方)的话,基本符合是你说的这样

区别在于 不是 “高频率的发送”,而是转发客户端的移动操作包

因为人物移动是客户端发包给服务器的,发的包中包含的数据无非两种,一种是发目标点,一种是发移动方向

而服务器只是把这个包转发给其他人,即广播给另外99个人

客户端发一个包,服务器就广播一个,客户端发100个,服务器就广播100个

可以优化的空间在:

1、如果客户端前后两个包发的是同一个目标点,或者同样的移动方向,第二个包就可以不用再转发

2、如果客户端发包频率超过了一个阀值,服务器可以选择性的丢弃部分包,并在广播包中带上这个人在服务器上的当前位置,由接收的客户端做插值
cchoop 2018-09-13
  • 打赏
  • 举报
回复
如果地图很大的话,判断和其他人的距离,只给一定距离内的人发送数据坐标,另外还可以通过改变发送频率来增强游戏性能。

456

社区成员

发帖
与我相关
我的任务
社区描述
其它游戏引擎
社区管理员
  • 其它游戏引擎社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧