2

宝石をちりばめたようなゲームを構築しています。プレイヤーが友達と対戦できるように 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 つのスコアが比較され、勝者が決定されます。ここでの唯一の問題は、作成したくないときにバックエンドを作成する必要があることです。

いずれにせよ、提案は大歓迎です!ありがとうございました。

4

1 に答える 1

1

私は正確には Game Center の専門家ではありませんが、ターンベースの対戦サポートは、この仕事には不適切なツールのように思えます。

あなたの種類の非同期マルチプレイヤーは、WWDC 2012 セッション 500 (ゲーム テクノロジのキックオフ -ビデオの約 10 分) でデモされているように、Jetpack Joyride で見られるものに少し似ています。彼らは Game Center の新しい「スコア チャレンジ」機能を使用しますが、対戦相手のゴーストを提供することで機能を強化します。彼らはあなたのレースを記録し、あなたが別のプレイヤーに挑戦するとき、記録をサーバーにアップロードすることでこれを行いcontextますGKScore. 友人がチャレンジを受け入れると、彼のゲームのコピーがスコア チャレンジからその値を取得し、それを使用して記録されたレース データを検索し、サーバーからダウンロードします。

于 2012-10-04T05:26:40.240 に答える