2玩家基于转换的游戏逻辑

时间:2016-04-16 15:23:52

标签: javascript php ajax

JS noob在这里..我正在努力想出一个准系统的多人转牌卡游戏。凭借我目前的编码知识,我可以按照以下伪代码实现..

我有3个文件,index.html,multiplayer.php,gameStatus.txt。

  index.html:
      player one clicks ready button, which sends 1 to multiplayer.php.  
      player two clicks ready button, which sends 1 to multiplayer.php. 
      every 1 sec, repeater() checks if "twoPlayerFound" is returned from multiplayer.php.
          if "twoPlayerFound" is returned, 
              then console.log("two players are online, game begins..")
          else 
              console.log("waiting for another player to join..")

  multiplayer.php:
      when 1 is posted from index.html, php checks gameStatus.txt
          if gameStatus.txt has 0
              then overwrite gameStatus.txt 0 with 1;
          else if gameStatus.txt has 1
              then overwrite gameStatus.txt 1 with 2;
              send to index.html "twoPlayerFound"

  gameStatus.txt:
      either has 0,1, or 2

Q1。如果玩家不再在线,如何将gameStatus.txt自动重置为0 Q2。使用这种实现会出现什么问题? Q3。这是多人游戏设置的正确思考方式

谢谢..

1 个答案:

答案 0 :(得分:2)

  • Q3 - 我认为这不是实现多人游戏设置的好方法,为什么?检查Q2的答案。
  • Q2 - 您的文件无法处理在游戏完全实施期间可能出现的所有复杂情况。

一个例子:'如果玩家不再在线,我如何自动将gameStatus.txt重置为0'(是的,那是你的Q1),要解决这个问题,你应该为每个玩家保留时间戳并更新时间戳每次玩家联系服务器并保持循环以关注这些时间戳并消除最近没有联系过你的玩家。要实现这一点,你必须保留一些ID来识别你的玩家等等......

此外,请考虑如何扩展此设置,例如:超过2人同时连接到您的服务器,人们试图与他们喜欢的人配对。

您的游戏也感到网络饥饿。你要做的是AJAX Polling。

我的建议?对于客户端,在HTML5中使用WebSockets,也尝试对socket.io进行一些研究。大多数人会推荐nodejs作为后端,但你也可以使用PHP。您还应该选择一种方法来实现用户和游戏状态的会话(这个选择很大程度上取决于您的后端技术。堆栈)。