代码之家  ›  专栏  ›  技术社区  ›  ggutenberg

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

  •  4
  • ggutenberg  · 技术社区  · 15 年前

    具体来说,如何实现多人游戏部分?我一直在玩弄跳棋来锻炼我的js/php/ajax肌肉,让它对一个人(或两个人在同一台电脑上)很好地工作。但当我在两台不同的电脑上让两个人工作时,我有点被难住了。我把Ajax部分放下来了,服务器正在从浏览器接收/发送移动。我就是不能把我接下来要做的事情都抛在脑后,让第二个球员上场。

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

    对不起,如果这个问题是无知的,但我真的不确定如何从这一点着手。

    编辑 :只是为了澄清一下,肯定有一个涉及的服务器(因此是php/ajax引用)。这对我来说很明显。“移动”显然需要从玩家A到服务器,然后再到玩家B。这就是我在上面画空白的方式。尽管如此,下面似乎有一些好的答案,我将依次调查每个答案。但是,请继续添加可能的建议/解决方案,因为我已经从基础研究中学到了很多关于已发布答案的知识。

    7 回复  |  直到 15 年前
        1
  •  0
  •   Shadow Wizard    15 年前

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

    您可以使用文本文件、数据库或内存存储,在ASP中,它被称为缓存或应用程序级变量,不了解PHP。

        2
  •  1
  •   Jorge Guberte    15 年前

    我建议和你一起去 Comet .

        3
  •  1
  •   whatnick    15 年前

    您可以重新调整聊天类系统(如Jabber)的用途,并创建一个相当于聊天室的系统,在其中接收消息并将其重新传输到所有连接的客户机。这就是实时方面和排序发挥作用的地方。因为跳棋是基于回合的,这很简单。您可以使用标准Jabber服务器和JavaScript chat client 在浏览器中。这将有一个额外的优势,让你的玩家实际上在同一辆巴士上互相传递信息,除了游戏移动。

        4
  •  0
  •   casablanca    15 年前

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

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

    1. 对于私人游戏: 将会话ID提供给游戏主机,并让他/她将其分发给希望加入游戏的朋友。
    2. 对于公共游戏: 使用数据库存储活动游戏的会话ID,并允许任何人加入
        5
  •  0
  •   AlvinfromDiaspar    15 年前
    • 如果要保存播放器/用户信息,请使用数据库(这应该很明显)。
    • 如果它是基于会话的,那么您肯定需要一个服务器。
    • 对于客户端,我建议使用Silverlight或Flash等。

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

        6
  •  0
  •   Abhinav Singh    15 年前

    亲切结账 Jaxl (php/js中的jabber-xmpp库) BOSH MUC Chat room 示例。您可以轻松地扩展这个示例,使用php/js开发基于浏览器的多玩家游戏。

        7
  •  0
  •   Gu1234    15 年前

    检查ape(Ajax推送引擎)

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