新しい GameKit フレームワークを使用して複数のデバイスに接続することはできますか? これまで見てきたすべての例は、1 つのデバイスに接続する方法を示しています。デフォルトの接続インターフェイスでも、ユーザーは接続を 1 つだけ選択できます。
ありがとう。
新しい GameKit フレームワークを使用して複数のデバイスに接続することはできますか? これまで見てきたすべての例は、1 つのデバイスに接続する方法を示しています。デフォルトの接続インターフェイスでも、ユーザーは接続を 1 つだけ選択できます。
ありがとう。
アプリの GameKit を構成して使用する方法については、次のリンクにかなり良い概要があります。
残念ながら、2 つ以上のデバイスをサポートする場合、GKPeerPickerController標準 UI ピッカーを使用して GKSession インスタンスを構成することはできません。代わりに、独自の UI 要素を開発して、マスター/サーバーと複数のクライアント間の接続をセットアップおよび構成する必要があります。
2 つ以上のデバイスで GameKit を有効にする簡単な方法を次に示します。
initWithSessionID:displayName:sessionModeを使用して GKSession インスタンスを初期化する場合は、次を使用します。
sessionMode:GKSessionModePeerは 3 番目に使用可能なオプションであり、GKTank デモなど、Apple が提供するほとんどのサンプル コードで使用されるオプションです。
注: おそらく GKSessionModePeer を使用しても、ピア モードでは接続が確立されるまでデバイスが同時にサーバー モードとクライアント モードになるため、2 つ以上のデバイスのネットワークを維持できます。1 つのデバイスをサーバーとして明示的に構成すると、セットアップが簡素化され、GameKit API のテストに役立ちます。
サーバーの場合:
GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeServer];
クライアントの場合:
GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeClient];
過去に、Gamekit を使用して最大 16 台のデバイスを接続できると読んだことがあります。ピア モードでは 2 つしか実行できないと思います。2 つ以上のデバイスを実行するには、1 つのデバイスをマスターとして設定し、他のデバイスをクライアント モードで設定する必要があります。
マスター/クライアントの使用を示す例を探します。クライアント側は 3 つすべてに適用する必要があります。
GKMatchRequest (iOS6+) を呼び出し+maxPlayersAllowedForMatchOfType:
て実際の数を取得できますが、これはデバイスごとに異なる可能性があるため、おそらくそれを上限として使用する必要があります。
私の知る限りでは、GameKit フレームワークを使用する場合、デバイスのペアを結合することしかできません。1 つはサーバーとして機能し、もう 1 つはクライアントとして機能します (両方がピアとして初期化されている場合は、どちらがとして機能するかを決定する必要があります)。恣意的に、またはランダムに 1 つを選択することによって)。
実際には、多くのデバイスですべてアプリケーションが実行されている場合がありますが、接続は常にペアリングされたデバイスを介して確立されます。
もちろん、wifi 経由で独自の bonjour ベースのネットワーク コードを記述して、この制限を克服することはできますが、それにはさらに多くのコーディングが必要になります。