【问题标题】:Multiplayer-Game Network Protocol多人游戏网络协议
【发布时间】:2012-03-27 20:22:44
【问题描述】:

我负责多人游戏的网络部分。 我希望你们中的任何人对此都有一些经验。 我的问题是:

  1. 我应该创建一个包含所有信息(坐标、统计信息、聊天)的对象还是为每个信息发送一个自己的对象更好?

  2. 我怎样才能避免在客户端缓存对象,以便我可以更新对象并再次发送它? (我试过 ObjectInputStream.reset() 但它仍然收到相同的结果)

(对不起,我的英语不好;))

【问题讨论】:

  • 我没有网络游戏的经验。但关于问题 2,我建议查看 jgroups 的通信部分。有示例如何发送消息对象。 jgroups.org
  • 谢谢 :) 无法评价评论还是我只是瞎了眼?^^
  • 不这么认为,但无论如何感谢您的考虑。祝你的游戏好运。
  • 你可以试试谷歌的protocol buffers——它们是一种非常有效的结构化数据传输方式。
  • 看起来和我要搜索的完全一样 :) 谢谢为什么你们两个没有将这些作为答案发布?

标签: java networking


【解决方案1】:
  1. 对于每次发送所有数据都不是很好的解决方案,只是以前值的差异可能会更好。有时(例如,每 10 次或可能 100 次更新 1 次)将所有值发送到同步。

【讨论】:

  • 好的,所以我将创建一个对象来处理所有数据,但设置未更改的值 = null?
  • 可能不发送任何消息以保持不变
  • 但如果是这样,我必须自己发送每个数据。像 Player.x、Player.y Player.z 等等。我想将它们捆绑在 Objects 中发送。所以至少玩家数据是一个对象,一个用于游戏内聊天。也许我弄错了。
  • 好的,我会结合你所有的 3 个答案 :)
【解决方案2】:

1.在逻辑层可以拆分对象,在传输层发送你想要的,当然也可以合并发送。

2.您可以为每个用户维护一个版本,客户端也有版本号,当事情发生变化时,在服务器中更新相应的版本,然后将更新发送给所有客户端,然后客户端应该更新版本。它应该是subcribe 模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多