我正在开发一款多人游戏,我对如何通过服务器从一个客户端连接到另一个客户端一无所知。我从哪里开始?是否有任何提供通信框架的开源项目,我可以删除我的消息数据,还是必须编写一堆复杂的多线程sockety代码?如果客户端在手机上运行,图片是否会发生变化?
我是语言不可知的,虽然理想情况下我会有一个Flash或Qt前端和一个Java服务器,但这可能有点贪心。
我花了几个小时谷歌搜索,但整个主题对我来说是新的,我有点迷失。我很感激任何帮助 - 包括如何标记这个问题。
答案 0 :(得分:1)
如果延迟不是一个大问题,您可以实现一些Web服务来进行消息传递。这可能不像您想象的那么慢,并且易于跨语言实现。缺点是客户端必须轮询服务器以获取更新。所以你可以看几百毫秒从一个客户端到另一个客户端。
您还可以使用内置的flex messaging interface。那里有条款允许客户与客户进行互动。
答案 1 :(得分:1)
通常,游戏引擎会因延迟而发送UDP数据包。事实上,TCP速度不够快,可靠性不像速度那么值得关注。
由于额外的开销,Web服务会加剧TCP中固有的延迟问题。此外,他们会根据预期玩家的数量消耗内存。最后,他们有大量的有效负载开销,你不需要(xml任何人?)。
有几种方法可以解决这个问题。一种方法是集中式消息传递(客户端/服务器)。这意味着您将有一个Java服务器侦听来自客户端的udp数据包。然后它会将它们重新广播给任何相关用户。
第二种方式是分散的(点对点)。客户注册服务器以说明它所处的游戏/世界。从中获取该世界中其他客户的列表。服务器维护该列表并通知其他客户加入/退出的人。
从那时起,客户端直接向其他用户广播udp数据包。
答案 2 :(得分:0)
如果您寻找高性能的通信框架,请查看ACE C ++框架(它具有Java绑定)。
答案 3 :(得分:0)
您还可以查看Flash Media Interactive Server,或者如果您想要Java实现,可以查看Wowsa或Red5。这些使用AMF并为ShareObject提供本机功能,包括在连接的客户端之间同步ShareObject。
这些不是点对点(但是,我很快就会听到)。他们使用服务器管理的集中式消息传递。
祝你好运