4

GameCenterを使用してターンベースのゲームを作成してみました。デフォルトでは、GameCenterは、多数の参加者のうち、常に1人のプレーヤーが「プレイバトン」を保持し、このプレーヤーが現在のゲーム状態に影響を与えることができる唯一のプレーヤーであると想定していることを理解しています。ゲームプレイは非同期です。つまり、誰の番でも時間がかかる可能性があり、他のプレイヤーは自分の番になると通知されます。

ここまでは順調ですね。

ここで、GameCenterを使用して、類似しているがわずかに異なる種類のターンベースのゲームを実装したいと思います。非同期ゲームでは、シリアルプレーヤーの連続ではなく、プレーヤーが並行してターンを行い、その後、新しいゲーム状態に統合されます。すべてのプレイヤーは自分の動きを「提出」しました。

このための良いモデルゲームは、じゃんけんです。両方のプレイヤーが密かに動きを決定します(「」、「」、または「はさみ」)。それらがサーバーに送信される順序は任意です。つまり、進行中のラウンドで移動を送信しようとしたときに、「自分の番ではない」タイプのエラーが発生することはありません。両方が動きを変えると、すべてのプレーヤーの選択が明らかになり、現在のラウンドの勝者が決定/宣言されます。

問題は、設計または回避策のいずれかによって、この種のゲームにGameCenterインフラストラクチャを使用することは可能ですか?もしそうなら、何が良いアプローチと見なされますか?

4

1 に答える 1

1

提案した方法でGameCenterを使用してこれを実装することはできませんが、これを実行できたかのように見えるアプローチを取ることができます。

ターン制の試合を開始するとき、それは常にローカルプレイヤーのターンです。Game Centerが空白の試合を提供するか、他の誰かがすでに順番を取っている試合を受け取ります。これを制御する方法はないので、両方に備える必要があります。

あなたが取ることができるアプローチは、あなたが他の誰かの動きを彼らに示す前に、プレーヤーに常に彼らの順番をとらせることです。そうして初めて、あなたはあなたの地元のケースで、全員が順番を取り、あなたが結果を示しているかどうかをチェックします。これはあなたが求めているものの幻想を提供します。じゃんけんの場合、試合の結果を決めることができます。他のプレイヤーに通知されます。

ただし、このラウンドで全員が順番を変えていない場合は、何も表示せず、ゲームの状態も更新してください。ただし、他のユーザーが順番を決めるのを待っていることをユーザーに伝えてください。再びあなたの番であることが通知されたときに結果を表示することができ、ゲームの状態はすでに結果を示しています。

于 2013-01-14T20:58:15.447 に答える