具体来说,如何实现多人游戏部分?我一直在用跳棋来锻炼我的JS / PHP / AJAX肌肉,并让它在一个人(或同一台计算机上的两个人)上运行良好。但是当我在两台不同的计算机上让它在两个人之间工作时,我有点难过。我关闭了AJAX部分,服务器正在接收/发送来自/到浏览器的移动。我只是无法绕过我需要做的事情来包含第二个玩家。
我是否需要MySQL来做这么简单的事情?我可以使用玩家会话ID的某种组合来传输来回移动,而不是存储任何信息服务器端吗?如何在这两个独立实体之间开始游戏会话?
很抱歉,如果这个问题无知,但我真的不确定如何从这一点开始。
编辑:只是为了澄清,肯定有一个服务器(因此PHP / AJAX引用)。这对我来说很明显。一个“移动”显然需要从玩家A到服务器,然后到玩家B的旅行。这就是我如何画一个空白。话虽如此,下面似乎有一些好的答案,我将轮流调查每一个。但随时可以继续添加可能的建议/解决方案,因为我已经从基础研究中学到了很多已经发布的答案。
答案 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。这可以通过不同的方式完成:
答案 4 :(得分:0)
对于客户端,我建议像Silverlight或Flash ......等等。
对于类似聊天室的体验,您可以让每个客户端连接到服务器,并能够监听推送通知(这可以防止任何类型的手动“轮询”到服务器进行更新)。我知道最新的Silverlight和WCF技术直接支持这一点。
答案 5 :(得分:0)
请结帐Jaxl(PHP / JS中的Jabber XMPP库)BOSH MUC Chat room示例示例。您可以使用PHP / JS轻松扩展此示例示例以开发基于浏览器的多人游戏。
答案 6 :(得分:0)
检查APE(Ajax推送引擎)