宝石をちりばめたようなゲームを構築しています。プレイヤーが友達と対戦できるように Game Kit を統合することを計画しています。私が望むフローは次のとおりです。
- プレイヤー 1 がフレンドに挑戦
- プレイヤー 1 がプレイを開始します。プレイヤー 2 は、同時にプレイを開始する場合と開始しない場合があります。彼はすぐに、または数日後に遊び始めるかもしれません。
- 両方が完了すると、スコアが比較され、勝者が決定されます。どちらも警告されます。
ゲームキットのターンバイターンがいいと思います。しかし、これは実際にはターンバイターン ゲームではないため、この用途には最適ではありません。
プレイヤー 2 がプレイヤー 1 の終了を待ってから開始できるようにしたくないので、プレイヤー 1 の「最初のターン」を単純にボードの状態をプレイヤー 2 に送信するようにできると考えています。ただし、プレイヤー 1 がプレイを開始する前に、プレイヤー 2 が終了するのを待たなければならないことは望ましくありません。
これまでのところ2つのアプローチを検討していますが、他の誰かがより良いアイデアを持っていることを願っています.
アプローチ 1: プレーヤー 1 の「最初のターン」は、ボードの状態をプレーヤー 2 に送信することです。プレーヤー 1 はボードをプレイできるようになり、彼のスコアはローカルに保存され、それを取得するためのキーがマッチ番号になります。プレイヤー 2 が終了するたびに、彼のスコアが matchData 内でプレイヤー 1 に送り返されます。プレイヤー 1 は自分の番になったことを通知されます。彼が試合を再開すると、ローカルに保存されたスコアが取得され、プレーヤー 2 と比較されます。この時点で勝者が宣言されます。これは理想的ではありません。プレイヤー 1 は既にプレイを終了しているにもかかわらず、再度ログインする必要があるからです。
アプローチ 2: アプローチ 1 と同様に、プレーヤー 1 の「最初のターン」は、ボードの状態をプレーヤー 2 に送信することです。プレーヤー 1 はボードをプレイできますが、スコアは Rails サーバー (または単純化するために Parse.com のようなもの) に投稿されます。 )。プレーヤー 2 が自分のターンを終了した後、プレーヤー 1 が終了したかどうかを確認するために API 呼び出しが行われます。彼が持っている場合、スコアが取得されて比較され、勝者が決定されます。スコアがない場合、プレーヤー 2 のターンは終了し、コントロールはプレーヤー 1 に戻されます。プレーヤー 1 が終了すると、2 つのスコアが比較され、勝者が決定されます。ここでの唯一の問題は、作成したくないときにバックエンドを作成する必要があることです。
いずれにせよ、提案は大歓迎です!ありがとうございました。