ゲーム開発をマルチプレイヤーの領域に拡大したかったのですが、ソケットを備えた適切なサーバーの資金や、ソケットがどのように機能し、適切かつ安全に使用するかを理解するための時間がありません。
しかし、私が完全にできることは、さまざまな形式でPHPを介してFlashとMySQLの間でデータを送受信することです。
ターンベースのゲームを作成する場合、この方法で(PHPを介して)MySQLデータベースをポーリングするのが適切でしょうか?現在、私はこれらの方針に沿って考えています。
- 2人のプレーヤーは、オープンゲームのグローバルリスト(かなり標準的なアプローチ)などの手段でお互いを見つけます。
- エンカウンターまたは同様の行がデータベースに作成されます。
- この行には、自分の順番とゲームの現在の状態に関する情報がJSONまたはXML形式で格納されます。この行には、ゲームの状態情報についてデータベースを最後にポーリングした時間を表す各プレーヤーのタイムスタンプも含まれます。プレイヤーがターンを完了すると、「ターン」フィールドが切り替わります。
- 各プレイヤーはデータベースをポーリングして、まだ自分の番かどうかを確認します。そうである場合、ゲームの状態情報は、最後のターンが終了する前のゲームの状態情報と比較され、違いを反映するために画面上でアクションが実行されます。その後、彼らの順番が始まり、プロセスが繰り返されます。
- データベースをポーリングしているときに、対戦相手が120(任意)秒以内に自分の順番でデータベースをポーリングしなかった場合、プレーヤーは、他のプレーヤーが去った/タイムアウトしたなどの通知を受け取ります。
これは遅すぎるのでしょうか、それとも信頼できないのでしょうか?または、両方のプレーヤーが同時にデータベースをポーリングした結果など、予測できる他の問題がありますか(それが重要かどうかはわかりません)?