ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Game Centerのプレイヤー識別子
Game Centerが、対象範囲が個々のゲームやデベロッパチームのIDにスコープされた永続的なプレイヤー識別子に対応しました。このセッションでは、スコープされた識別子によってプレイヤーのプライバシーがどのように向上するかを説明し、Appやゲームを推奨されるAPIに移行させる方法を紹介します。
リソース
関連ビデオ
WWDC19
-
ダウンロード
(音楽)
Game Center技術チームの ベン・ハリーです 今回はGame CenterプレーヤーIDの 説明をします
まず Game Centerの機能について 概要からお話しします
Game Centerではプレーヤーが Leaderboard上で最高スコアを追跡し アチーブメントを閲覧できます さらに 友人とLeaderboardの スコアを競ったり リアルタイムまたはターン制で マルチプレイゲームができます
Game Centerの中心となるのは プレーヤーです
プレーヤーは独自の情報を持つ オブジェクトで表されます オブジェクトは GKPlayerで管理されています
GKPlayerはエイリアスプロパティが 提供するニックネームを持ちます
また プレーヤーは アバター画像を選ぶこともできます
さらに各ユーザは 全ゲームに共通する― 独自の静的IDを保持します
これでプレーヤー情報が分かります
これから静的IDの 現状の機能を説明します
すでに知ってる方も こちらの例で 思い出してみましょう
AとBの2チームがいます ここでの“チーム”は App Storeにゲームを配信する― 開発チームを意味します 今回プレイしたのは Aのゲーム2つとBのゲーム1つです ご覧のとおり 僕の静的IDはP123です 僕のIDは各ゲームで P123と表示されます つまり どのゲームをプレイしても IDは一緒です さて 今回はプライバシー保護の 強化のために― チーム用とゲーム用の 2種類のIDを導入しました
まずはteamPlayerIDから 始めましょう 先程と同様 “チーム”は ゲームを配信する開発チームを指します チームAとBが配信するゲームは 先ほどと同じものです
今回 僕は2つのIDを持っています チームAのゲームはいずれも teamPlayerIDがT11です チームBのゲームをする時の IDはT22になります
つまりteamPlayerIDは チームごとに設定されています
チームAは僕のT11のIDを チームBは僕のT22のIDだけを知るため プレーヤーのプライバシーが守られます
以上がteamPlayerIDです 次はgamePlayerIDについて 説明しましょう
このIDはプレーヤー別に 各ゲームに付与されます つまり僕のプレーヤーIDは ゲームごとに異なります
gamePlayerIDは 開発チームとは無関係です
もう一度チームAとBに 戻りましょう ご覧のとおり gamePlayerIDは 配信するチームに関係なく 各ゲームに設定されています
gamePlayerIDがどのように チームから独立しているか― 別チームへゲームを移すと 仮定して考えてみましょう
仮にゲーム2を チームAからBへ移した場合― 僕のIDがどうなるか お見せします
例えばチームAが ゲーム2の所有権をBに譲渡します ところがゲーム2の gamePlayerIDは変わりません
IDは保持され チームからは独立しています
ではteamPlayerIDは どうなったでしょう?
ゲーム2は チームBからの配信になったので チームBのIDに変わりました
ここまで Game Centerに 新しく導入されたIDと― ゲームの所有権が移ると IDにどう影響するかを話しました
次の話は 開発したゲームで どのようにIDを使うかです
さて 今回追加されたのは teamPlayerIDと gamePlayerIDでしたね
これらのIDはプレーヤーの プライバシー保護の改善が目的で― Appleの保護義務に基づくものです
僕の静的ID P123は 2種類の新しいIDに差し替えられました
静的IDは今後廃止されるので 今後は新しいIDを使用してください
先程言ったとおり 新しいIDは 既存のIDの代わりとなります プレーヤー情報を知る必要がなければ 変更は不要です
もし その情報が必要なら 新しいIDに切り替えましょう
大抵の場合 使うのは teamPlayerIDです
ゲームデータの保存にも teamPlayerIDへの切り替えを勧めます 複数のプレーヤーがデバイスを 共有する状況にも対処できます
バックエンドシステムで 既存のIDを使う方も― 新しいIDに更新してください
認証が成功すれば更新されます
次にスコープIDがローカルプレイヤーを 認証する方法を説明します
デバイス上のプレーヤー認証は GKLocalPlayerが管理しています 認証されるのは 常に1名のみです
また GKLocalPlayerは 永続的な2種類のIDを持ちます
ではGKPlayerは? GKPlayerは 他のプレーヤー情報を提供します これらはLeaderboardの プレイリストに記録された― ローカルプレイヤー以外の情報です
GKPlayerのIDはコンテキストに 基づくインスタンスです IDはLeaderboardの 各インスタンスを対象とするため― 連続するマッチで 継続して使えません
ではGKPlayerオブジェクトを ロードしてみましょう loadPlayersForIdentifiers: withCompletionHandlerを実行します
使用するのはteamPlayerIDか gamePlayerIDです
しかし まれにスコープIDを 使用できない場合があります その場合はどうするべきでしょう?
通常はゲームを開始すると― 認証後にローカルプレイヤーの IDを取得できます
それでも取得できない可能性が わずかにあります そこでGKPlayerに 新しいAPIを追加しました scopedIDsArePersistentを 実行します
スコープIDが取得不可であれば falseが出ます
そのためIDの使用前に プロパティの確認が必要です
認証後にスコープIDを使うと仮定して 情報を整理してみましょう
まずauthenticateHandlerで viewControllerが返されるか確認し 返されている場合は表示させます
返されずに ローカルプレイヤーが認証されたら― スコープIDが永続的な値か 確認してから使用してください
現在もバックエンドシステムで 静的IDを使用している場合は― 新しいスコープIDに 切り替えましょう
本日の内容をまとめます Game Centerは 新しいIDを導入しました
teamPlayerIDは 各チームに設定されます
一方 gamePlayerIDは 各ゲームに設定されるので 別チームに所有権が移っても IDは同じです
新しいIDは既存のIDと同様に Game Center API内で使えます
ぜひ今日から 利用してみてください
詳細はリンク先から確認できます
ありがとうございました
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。