16

私の Android ゲームでは、ターンベースのマルチプレイヤーがあります。ユーザーはロビーで対戦相手を待ち、正確に 3 人が一致すると、ロビーとは別のアクティビティである新しいゲーム ルームに一緒に移動します。

ドキュメントは、アクティビティが BaseGameActivity を拡張できるようにすることを提案しています。しかし、プレーヤーが既に接続されている間にアクティビティを切り替えると、アクティビティがバインドされるサービスに接続パーツを配置する必要がありますか?

Game Services を試した人はいますか? BaseGameActivity を使用できない場合の開始方法は?

4

3 に答える 3

3

これらの新しい Google Play ゲーム サービスを使用して、マルチプレイヤー ゲームを開発中です。マルチプレイヤーに加えて、実績とリーダーボードが含まれています。

ボタン クリックのサンプル プロジェクトから、彼ら (Google) はフラグメントを広範囲に使用し、単一のアクティビティの範囲内にとどまっていることがわかりました。私のカスタム ゲームでは、アクティビティ間を問題なくジャンプできます。

Google Play ゲーム サービス オブジェクトのいくつかの部分を保持する必要がありますが、ゲームで長時間実行される非 UI コードを実行する必要がない限り、サービスはやり過ぎかもしれません。私が経験したことから、アクティビティを切り替える場合、現在ゲームに参加しているルームの ID と参加者の ID を保持する必要があります。

「接続部分」はステートレスなので、必要に応じて再接続するだけです。ルーム/参加者 ID をインテント バンドルを介して各アクティビティに渡すこともできます (またはシングルトン パターン アプローチを使用します)。これにより、バッテリーの寿命やパフォーマンスなどを節約できます。

于 2013-05-30T00:37:51.590 に答える
1

このドキュメントでは、必要に応じて BaseGameActivity を使用せずにゲーム サービスを使用する方法について説明しています。

たとえば、サインイン中:

https://developers.google.com/games/services/training/signin

[サインイン] ボタンをクリックすると、サインイン フローが開始されます。サンプルで提供されている BaseGameActivity 基本クラスを使用している場合は、beginUserInitiatedSignIn() メソッドを呼び出すだけです。それ以外の場合は、GamesClient オブジェクトの connect() メソッドを手動で呼び出す必要があります。

あなたの特定の質問については、それは問題ではないと思います。すべてのコントロールは Google Play 内にあります。GamesClient を取得するだけでよく、私が理解している限り、アクセスすると、1 つのアクティビティで行われた接続がそこに存在します。別のアクティビティから (ただし、マルチプレイヤーはまだテストしていません)。

于 2013-05-24T13:04:46.483 に答える