如何实现多人浏览器游戏?

时间:2010-11-12 01:05:35

标签: php javascript ajax

具体来说,如何实现多人游戏部分?我一直在用跳棋来锻炼我的JS / PHP / AJAX肌肉,并让它在一个人(或同一台计算机上的两个人)上运行良好。但是当我在两台不同的计算机上让它在两个人之间工作时,我有点难过。我关闭了AJAX部分,服务器正在接收/发送来自/到浏览器的移动。我只是无法绕过我需要做的事情来包含第二个玩家。

我是否需要MySQL来做这么简单的事情?我可以使用玩家会话ID的某种组合来传输来回移动,而不是存储任何信息服务器端吗?如何在这两个独立实体之间开始游戏会话?

很抱歉,如果这个问题无知,但我真的不确定如何从这一点开始。

编辑:只是为了澄清,肯定有一个服务器(因此PHP / AJAX引用)。这对我来说很明显。一个“移动”显然需要从玩家A到服务器,然后到玩家B的旅行。这就是我如何画一个空白。话虽如此,下面似乎有一些好的答案,我将轮流调查每一个。但随时可以继续添加可能的建议/解决方案,因为我已经从基础研究中学到了很多已经发布的答案。

7 个答案:

答案 0 :(得分:1)

我建议使用Comet

答案 1 :(得分:1)

您可以重新调整其中一个聊天功能,例如jabber,并创建一个等效的聊天室,其中接收消息并将其重新传输到所有连接的客户端。这是实时方面和排序发挥作用的地方。由于检查器是基于转向的,因此非常简单。您可以在浏览器中使用标准Jabber服务器和Javascript chat client。除了游戏动作之外,这还有一个额外的好处,就是让你的玩家在同一辆公共汽车上实际上互相发信息。

答案 2 :(得分:0)

直接回答问题:您确实需要在服务器端使用某种“全局存储”,因为每个会话都是独立的,并且彼此不了解。

你可以在ASP中使用文本文件,数据库或内存存储,它被称为缓存或应用程序级别变量,不知道关于PHP。

答案 3 :(得分:0)

我之前想过的一种技术(但从未实现过)实际上是在所有玩家之间共享相同的PHP会话(使用session_id)但是根据IP地址($_SERVER['REMOTE_ADDR'])区分它们。这样您就可以将所有游戏状态存储在同一个会话中,并且特定于玩家的数据可以存储在由IP地址键入的数组中。

当然,您需要一个单独的渠道来首先分发会话ID。这可以通过不同的方式完成:

  1. 用于私人游戏:将会话ID提供给游戏主机并让他/她将其分发给希望加入游戏的朋友
  2. 用于公共游戏:使用数据库存储活动游戏的会话ID并让任何人加入

答案 4 :(得分:0)

  • 如果您想保留播放器/用户信息,请使用数据库(这应该是显而易见的)。
  • 如果是基于会话的,你肯定需要一台服务器。
  • 对于客户端,我建议像Silverlight或Flash ......等等。

  • 对于类似聊天室的体验,您可以让每个客户端连接到服务器,并能够监听推送通知(这可以防止任何类型的手动“轮询”到服务器进行更新)。我知道最新的Silverlight和WCF技术直接支持这一点。

答案 5 :(得分:0)

请结帐Jaxl(PHP / JS中的Jabber XMPP库)BOSH MUC Chat room示例示例。您可以使用PHP / JS轻松扩展此示例示例以开发基于浏览器的多人游戏。

答案 6 :(得分:0)

检查APE(Ajax推送引擎)

http://www.ape-project.org/home.html