一个游戏场景中,多个游戏对象,如何在多个客户端和服务端之间保持数据同步的?

2016-06-30 20:04:34 +08:00
 aias

比如《饥荒》:

这种同步机制是如何做到的? 小菜一枚,认为似乎可以用多线程解决这个问题。

不知各位大神有没有什么好的建议?

2337 次点击
所在节点    问与答
9 条回复
lancerliu
2016-06-30 20:29:13 +08:00
网游,计算和数据都在服务器上,只有客户端和服务器的数据同步,客户端和客户端之间没关系
jrhu05
2016-06-30 21:57:46 +08:00
yeyeye
2016-06-30 23:53:31 +08:00
网游一般有两种情况 一种是一楼说的 所有的运算都交给服务器来做 这样不容易出外挂 就算有挂也是相当于模拟鼠标键盘去操作(虽然做外挂可以搞出很多功能 但是都没办法做出变态的功能 不像下面说的这个 挨打不掉血 玩家打不死)

还有就是比如泡泡堂这样的游戏(比较老了) UDP 互相传数据 这样的好处是速度快 延迟低 缺点是跨运营商就网络差了 而且容易有外挂(很多变态功能) 同时多个客户端会对其他玩家客户端行为进行检测 比如一旦发现明明没捡加速度的道具 却跑得飞起(还有其他一系列的) 妥妥的就是开挂了 会和直接服务器报告 然后服务器会踢掉这个玩家(也有外挂利用这个机制 直接踢掉普通玩家的)


想要确认其实很简单 开个防火墙看数据发向了谁的 IP 如果是第一种 只会发给服务器 IP 一查归属地你就知道结果的 如果第二种 所有玩家都会和你连在一起


以前利用这个泡女孩子(因为可以通过 IP 直接判断归属地 知道对方来自哪里)
wysnylc
2016-07-01 08:54:21 +08:00
@yeyeye 移动的 IP 全国飘,咋个判断
yeyeye
2016-07-01 09:46:00 +08:00
@wysnylc 多看几次 你就知道服务器 IP 段有哪些了 其他一堆全国各地随机的 IP 段 当然就是用户(一般一人一个 IP ) 至于你说的那个全国飘 我只能和你说 我一般在电信区玩 你其他服务商的网络来这个区玩 卡都卡死你 玩不成的 用这种便宜宽带的 判断不了就算了呗 又不是要保证每个都精准
lzhr
2016-07-01 10:12:41 +08:00
有功夫可以拿游戏源码来看看,比如《传奇》
wysnylc
2016-07-01 11:28:43 +08:00
@yeyeye 那就是没办法咯。
yeyeye
2016-07-01 11:42:05 +08:00
@wysnylc 我能有啥办法 你都说全国飘了 不过有的地图 API 可以通过 IP 查 也蛮准的
wysnylc
2016-07-01 17:41:37 +08:00
@yeyeye 都没游戏玩咯,还撩妹。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289442

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX