V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aias
V2EX  ›  问与答

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

  •  
  •   aias · 2016-06-30 20:04:34 +08:00 · 2342 次点击
    这是一个创建于 3071 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如《饥荒》:

    • 里面有很多怪物。我攻击怪物,别的玩家也可以看到,因此会一起帮我怼它...
    • 我的角色状态不好,别的玩家也可以看到

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

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

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

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


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


    以前利用这个泡女孩子(因为可以通过 IP 直接判断归属地 知道对方来自哪里)
    wysnylc
        4
    wysnylc  
       2016-07-01 08:54:21 +08:00
    @yeyeye 移动的 IP 全国飘,咋个判断
    yeyeye
        5
    yeyeye  
       2016-07-01 09:46:00 +08:00
    @wysnylc 多看几次 你就知道服务器 IP 段有哪些了 其他一堆全国各地随机的 IP 段 当然就是用户(一般一人一个 IP ) 至于你说的那个全国飘 我只能和你说 我一般在电信区玩 你其他服务商的网络来这个区玩 卡都卡死你 玩不成的 用这种便宜宽带的 判断不了就算了呗 又不是要保证每个都精准
    lzhr
        6
    lzhr  
       2016-07-01 10:12:41 +08:00
    有功夫可以拿游戏源码来看看,比如《传奇》
    wysnylc
        7
    wysnylc  
       2016-07-01 11:28:43 +08:00
    @yeyeye 那就是没办法咯。
    yeyeye
        8
    yeyeye  
       2016-07-01 11:42:05 +08:00
    @wysnylc 我能有啥办法 你都说全国飘了 不过有的地图 API 可以通过 IP 查 也蛮准的
    wysnylc
        9
    wysnylc  
       2016-07-01 17:41:37 +08:00
    @yeyeye 都没游戏玩咯,还撩妹。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5077 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:40 · PVG 13:40 · LAX 21:40 · JFK 00:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.