2016-04-16 5 views
0

ここJSノブ。私は、ベアボーンのマルチプレイヤーターンベースのカードゲームを考案しようとしています。私の現在のコーディング知識では、私は次の擬似コードに従って実装することができます..2人のターンベースのゲームロジック

私は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。これは、マルチプレイヤーゲームのセットアップに

おかげ..

+0

こんにちは...コーディングを習得しようとしている場合、アプローチはちょっとです。しかし、あなたが「完全に機能する」リアルタイムアプリケーションをやろうとしているなら、あなたは[socket.io](http://socket.io/)のようなものにあなたの時間を投資する方が良いと思います。 –

答えて

2
  • Q3を考えるのが正しい方法です - 私はなぜ、これは、マルチプレイヤーゲームのセットアップを実施するための素晴らしい方法だと思いませんか? Q2の回答を確認してください。
  • Q2 - あなたのファイルは、ゲームの完全な実装時に発生した複雑なシナリオすべてを処理することはできません。

例:「プレーヤーがオンラインになっていない場合、gameStatus.txtが自動的に0にリセットされますか?」(この質問はあなたのQ1です)、この問題を解決するには、各プレーヤーのタイムスタンププレイヤーがサーバーに連絡するたびにタイムスタンプを更新し、これらのタイムスタンプに注目し、最近連絡していないプレイヤーを削除するループを維持します。これを実装するには、プレイヤーを識別するためのIDを保持する必要があります。

また、次のようなシナリオでこの設定をどのように拡張できるか考えてみてください。一度、好きな人とペアで遊んでいる人。

あなたのゲームは、ネットワークが空いていると感じます。あなたがしようとしているのは、AJAX Pollingです。

私の提案ですか?クライアント側では、HTML5でWebSocketを利用し、socket.ioについてのいくつかの調査を試みてください。ほとんどの人はnodejにバックエンドを推奨しますが、PHPを利用することもできます。また、ユーザーのためのセッションとゲームの状態を実装する方法を選択する必要があります(この選択は、バックエンドのテクノロジスタックに非常に依存します)。

関連する問題