View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

WWDC25に戻る

  • 概要
  • トランスクリプト
  • コード
  • Game Centerの導入

    Game Centerの機能を紹介し、使用を開始する方法について説明します。実績、チャレンジ、リーダーボード、アクティビティを実装し、ゲームの認知度を高めて、新規プレーヤーを引き付け、エンゲージメントを向上させるためのベストプラクティスを紹介します。 このセッションの内容を十分理解できるよう、「Engage players with the Apple Games app」も視聴することをおすすめします。

    関連する章

    • 0:00 - イントロダクション
    • 2:41 - プロジェクトの設定
    • 6:51 - Game Centerの機能の統合
    • 10:00 - チャレンジとアクティビティ
    • 23:53 - 実装後のテスト
    • 26:44 - App Storeへの公開
    • 28:32 - 次のステップ

    リソース

    • Apple Unity Plug-Ins on GitHub
    • Creating activities for your game
    • Creating engaging challenges from leaderboards
    • Game Center overview
    • Human Interface Guidelines: Game Center
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC25

    • ゲームをレベルアップさせる方法
    • Apple Gamesアプリによるプレイヤーのエンゲージメント向上

    WWDC22

    • プラグインと再生:AppleフレームワークをUnityゲームプロジェクトに追加する
  • このビデオを検索

    皆さんこんにちは Game Centerフレームワークチームの エンジニアのJosh Arensonです 本日は ゲームにGame Centerを導入する際の 推奨方法と導入のメリットについて お話しします 私はVarokas Panusuwanです Game Centerサーバのエンジニアです 今年の魅力的な新機能を紹介し それらを最大限に活用するための ベストプラクティスをご紹介します そうですね また 注目の新しい情報も いくつか紹介します あらゆる経験レベルの方におすすめですので ぜひご覧ください 初めての方やおさらいが必要な方のために 説明すると Game Centerとは プレーヤーとゲームのつながりを より強める一連の機能であり プレーヤーは友達を通じて 新しいゲームを知ることもできます また Game Centerでは Appleの プライバシー方針に基づく保護のもと プレーヤーは簡単に 気の知れた友達と つながったり競い合ったりできます Game Centerには いくつかの機能があります アチーブメント、Leaderboard、チャレンジ、 アクティビティです これらの機能により より魅力的な体験を提供できます プレーヤーは進捗状況をトラッキングし 互いに競い合い 簡単に友達をゲームに招待できます より多くの人にゲームを届けるために 利用できる新しいApple Gamesアプリは 今年の秋からmacOS、 iPadOS、iOSにプリインストールされます Game Centerは Appleのエコシステム全体で ゲームの認知度を高めますが 特にGamesアプリでは非常に効果的です Game Centerの各機能を統合することで ゲームをより多くの場所に表示するための 詳細情報がOSに提供されます プレーヤーをより強く引きつけるための Game Centerのコア機能は Leaderboard、 チャレンジ、アクティビティ、 アチーブメントです これらはプレーヤーが互いに交流するための 目標および機会となり ゲームへの投資意欲を促進します これらの機能は プレーヤーの リテンション率向上にも役立ちます ゲームがより楽しく競い合えるものに なることで 多くのプレーヤーは 継続的にプレイするようになります プレーヤーは通常 新しいゲームを探す際 まずApp Storeをブラウジングします 新しい「Top Played Games」チャートでは 他のプレーヤーが最も長く プレイしているゲームを確認できます 新しいGamesアプリにもこのチャートが あるため Game Centerではどちらの場所でも ゲームを目立たせることができます App StoreとGamesアプリの両方に 「Friends Are Playing」という セクションがあります 世間一般で人気のあるゲームも 気になるものですが 自分の好みに合うおすすめには 誰でも興味を引かれます 「Friends Are Playing」では 自分の友達が どのゲームをプレイしているかを 知ることができ トップチャートに入らない お気に入りを見つけられます Game Centerでは 友達とのバトルがさらに盛り上がります 例えば Leaderboardで友達があなたの トップの座を奪うと プッシュ通知が届きます Game Centerの概要と 皆さんのゲームに もたらされるメリットについて 説明しましたが 次は実際の導入方法です Varokasと私とで Game Centerをいかに簡単に ゲームに導入できるかお見せします プロジェクトのセットアップと構成、 実装後のテスト、 App Storeでの公開など すべてのトピックを解説します Game Centerのセットアップは わずか2ステップで完了します まず Game Centerのエンタイトルメントを プロジェクトに追加します これで ゲームとGame Centerの間の 通信が確立されます 次は Game Centerとの通信の フレームワークである GameKitの初期化です Game Centerのエンタイトルメントを Xcodeに追加するには プロジェクトを開き タブに移動して をクリックし 「Game Center」を検索して追加します

    Unityを使用している場合は Appleが提供するプラグインにより Game Centerエンタイトルメントを より効率よく追加できます プラグインはGitHubからダウンロードでき ビルドとインストールの手順が リポジトリにあります プラグインをインストールしたら Unity Editorを開き メニューに移動し をクリックすると 正しいエンタイトルメントを含む Xcodeプロジェクトが生成されます エンタイトルメントを追加したら あとは 数行のコードでGameKitを初期化でき Game Centerとの通信のフレームワークを 利用できるようになります 初期化は簡単です 初期化の完了時に呼び出す ハンドラを登録します ハンドラが実行されると GKLocalPlayer オブジェクトへのアクセスが可能になり ゲームの進捗状況の報告に必要な すべての プレーヤー情報の取得が可能になります このSwiftコードで 初期化ハンドラをセットアップしています Game Centerが初期化を完了すると ハンドラが呼び出され GKLocalPlayerが 有効なプレーヤーを参照します Unityデベロッパには朗報ですが GameKitのすべてのAPIには C#バインディングがあります Unityプラグインを使用すると GameKitを Unityエディタから直接統合できます 先ほどと同じGameKit初期化のコードですが こちらはC#バージョンです

    初期化ハンドラが呼び出された後 Game Centerにバナーが表示され Game Centerの機能を利用できることを プレーヤーに知らせます 過去にGame Centerのゲームを プレイしたことがないプレーヤーは Apple Accountを使用して オンボードするよう求められます ゲームを見つけてもらいやすくするには Game Centerの初期化ハンドラを できるだけ起動の近くに設定します これにより ゲームが「Top Played Games」 チャートや 他のプレーヤーへのおすすめに 表示されやすくなります 例えば 私がVarokasや同僚のLoganと 一緒に制作している 「The Coast」という ゲームでは タイトル画面の表示直後に ハンドラがトリガされるよう設定しています まさに最適な場所です 初期化ハンドラを構成したら Game Centerの機能を使って ゲームをさらに強化できます アチーブメントは プレーヤーの実績を称え 友達に自慢できるようにします Leaderboardとチャレンジは 競争を促進し シングルプレーヤーゲームでも 複数のプレーヤーで遊べるようにします アクティビティでは プレーヤーを特定の ゲーム内コンテンツに直接リンクできます 例えば アチーブメントの獲得に必要な レベルに直接移動させることができます これらの主要なGame Center機能は 主に3つの方法で構成できます まず Xcode 26の新機能として GameKitバンドルを使って Xcodeで直接 Game Centerを構成できます これにはいくつかメリットがあり App Store Connectと同期できるほか ゲームを開発するデベロッパに 推奨されるアプローチでもあります

    ゲームの準備ができ リリースする際には App Store Connect Webサイトが便利です ゲームをレビュープロセスに提出したり Game Centerの構成を スポットチェックしたりできます 構成プロセスの一部を 継続的インテグレーションのワークフローに 統合するなどして 自動化することを検討されている場合は App Store Connect APIが役に立ちます GameKitバンドルにはいくつかの大きな メリットがあり まず新しいテスト機能で アチーブメント、Leaderboard、 アクティビティを ライブゲームから完全に 独立させて Xcodeを使用して直接 Game Progress Managerでテストできます またこのデータをローカルで宣言することで Game Centerの構成が 自動的にコードレビューに組み込まれ バージョン管理も行われます 昨夜 Varokasと私は 「The Coast」の開発作業をしていました VarokasはApp Store Connectで Game Centerの構成を始めましたが 私はGameKitバンドルを使用して Game Centerの機能を統合し 開発プロセスを合理化しようと思いました GameKitバンドルを Xcodeプロジェクトに追加するには テンプレート選択画面を表示します

    検索バーに「GameKit」と入力して 表示される

    テンプレートで バンドルを選択し をクリックします

    ファイル名を選択できますが デフォルトのままでOKですをクリックすると プロジェクトにバンドルが追加されます

    既にいくつかのLeaderboard、 チャレンジ、アクティビティ、アチーブメントが App Store Connectにあるので そこからゲームの情報を取得します 省略記号をクリックし を選択します

    次に 所属する開発チームを選択し

    「The Coast」を選んでをクリックし ゲームの情報を取得します

    これが完了したら 前にApp Store Connectで作成した すべてのものを確認できます

    私たちは 「The Coast」の 「Cape Cod」というレベルに Leaderboardを追加することにしました このレベルでポイントを獲得するには プレーヤーは船をすばやくタップして 安全な場所に移す必要があります しかし ご注意を 実は ずる賢いロブスターが 一部の船になりすましています 間違えてロブスターをタップすると レベルは終了します Leaderboardを追加するには を クリックしてを選択します

    参照名とIDの入力を求められます この2つのフィールドはGame Centerで 作成する要素には必須ですが 閲覧はデベロッパのみ可能です IDは Leaderboardをゲームの コードから参照する際に使われます 事前にVarokasと私で決めていた値を ここに入力し

    をクリックします

    これで ゲームのレベルに合わせて Leaderboardを調整できるようになりました 現時点ではデフォルトでOKです Game Centerはプレーヤーのロケールを 自動検出し それに応じた言語で 情報を表示します そのため ゲームでサポートする 各言語にローカライズされた名前、説明、 画像などを準備しておくことが重要です

    ローカライズを追加するには をクリックし

    Varokasと相談して決めた値を入力して をクリックします

    これで Leaderboardをゲームのコードから 呼び出す準備が整いました 以上で説明したコンセプトに基づき 同じ方法でアチーブメント、 チャレンジ、アクティビティを作成できます Game Centerを導入するために ゲームを構成し 機能を実装する方法を説明しました 次はVarokasに 彼の専門分野である 内容について説明してもらいます ありがとう Josh Game Centerの2つの新しい機能を ゲームに導入する方法をご紹介します チャレンジとアクティビティです どちらも 新しいマルチプレーヤー体験を 創出し ゲームへのエンゲージメントを 高めるために設計された機能です チャレンジを利用すれば シングルプレーヤーゲームが 瞬く間に友達との交流の場に変わります チャレンジはゲーム内の 既存のLeaderboardを基盤として 機能します つまり 1つの機能を導入すれば 2つの機能が利用可能になるということです 追加のコードはまったく必要ありません チャレンジでは プレーヤーは友達を招待し ハイスコアを競うことができます すべてのスコアがリアルタイムで表示され 誰が勝利したかを常に確認できます また 同じ画面から直接 再戦を開始することもできます チャレンジには時間制限があります そのため 時間切れになる前に 参加しようという意欲が高まります チャレンジはLeaderboardと 関連していますが 仕組みは少し異なります Leaderboardは Game Center上の友達全員と 継続的に競い合うものです 一方 チャレンジは作成時に いくつかの重要なカスタマイズが可能です Leaderboardがずっと継続するのに対し チャレンジには開始と終了の時刻があります チャレンジを開始するプレーヤーが 対戦の開始時刻を 選択できます また チャレンジ終了までの 継続期間も決めることができます Leaderboardは Game Centerの友達全員が 対象になりますが チャレンジでは 誰が参加するかを決定できます 現在友達リストに登録されていない プレーヤーも参加させられます 各プレーヤーの挑戦可能回数も 決めることができます つまり 高度にパーソナライズされた ミニ競技大会を開けるのです

    プレーヤーはチャレンジの継続期間を 自由にカスタマイズできますが 既定のいくつかのオプションから 選ぶこともできます 1日、3日、1週間を選択でき それらを自由に組み合わせることもできます 素晴らしいですよね 場合によっては ゲームにまったく変更を加えることなく チャレンジを有効にできます ゲームにLeaderboardを導入済みの場合は 既に プレーヤーのスコアの更新に submitScore() APIを使用しています このAPIが すべての関連するチャレンジに スコアを自動的に送信します 「Cape Cod」は「The Coast」の レベル1なので 非常によくプレイされます チャレンジを導入するのに最適な場所です 最初のステップとして Xcodeで チャレンジのメタデータを作成します Game Centerの他の機能と同様に チャレンジには 内容にマッチした画像と表示名が必要です 内部では ゲームのコードで使用する IDも必要であり App Store Connectでチャレンジを 検索するための参照名も必要です これらすべてを念頭に置いて 「Cape Cod」の画像、表示名、ID、 参照名を作成しました 「The Coast」には Leaderboardが既に設定されています あとはsubmitScore()内の Leaderboard IDの設定が正しいかを 確認するだけです Joshが説明したのと同じワークフローに従い 先ほどのアートワークと表示名を使用して チャレンジをXcodeで作成します

    念のため 関連するLeaderboardが「Cape Cod」に 正しく設定されているかを確認します ここで プレーヤーに提示する 継続期間の選択肢を設定できます 「The Coast」は 1分間しかかからない 短いゲームであるため 選択肢は とにします チャレンジを実装するために 必要な手順はこれだけです チャレンジのメタデータが 正しく設定されていることを確認します 既にLeaderboardを使用している場合 ゲームコードの変更は不要です ゲームで周期Leaderboardを設定済みの場合 関連するチャレンジの動作は少し異なります Leaderboardが 常時継続するものである一方 周期Leaderboardには 明確な開始と終了の時刻があります これは 周期を1日とする Leaderboardの例であり 今日の深夜0時に開始し 明日の深夜0時に終了します

    周期Leaderboardに 関連付けられているチャレンジは 現在のLeaderboardのインスタンスと 同時に終了します 今すぐ新しいチャレンジを始めた場合 チャレンジの終了時刻である 水曜日の深夜0時まで 競い合うことができます

    この場合 チャレンジ作成画面に 深夜0時までの残り時間が表示されます

    また チャレンジが 周期Leaderboardに基づいている場合 そのチャレンジは 反復不可としてマークできます プレーヤーは1回しか挑戦できません これは 例えばパズルゲームなどで有効です 毎日のパズルチャレンジは 反復不可にするのが最適です プレーヤーはGamesアプリの様々な場所で チャレンジを作成し 確認できます 独自のUIを作成し ゲーム内で利用可能な チャレンジやアクティブなチャレンジを すべて表示することもできます 詳しくはドキュメントをご覧ください チャレンジは競争条件を平準化し 全員に 公平な機会を与えることを目的としています そのため Leaderboardとチャレンジ用の スコアは必ず 推奨される方法で 送信してください

    例えば 各レベルの最後に 新しいスコアを送信することが重要です この例では「船を何隻救ったか」のスコアを プレーヤーが そのレベルに挑戦するたびに送信しています 複数回の挑戦のスコアを 累積しないでください 「救った船の総数」などの 通算スコアは送信しないでください これはスキルを競うためのものであり どれくらい長時間プレイしたかを 測るものではありません

    チャレンジを作成したプレーヤーが 各人の挑戦可能回数を決定できることを 常に心に留めておいてください 各レベルの最後に1回だけ スコアを送信するのが 通常は適切なやり方です 必要な回数を超えて スコアが送信されないよう 設定を再確認してください これでチャレンジを設定できました 私は プレーヤーにこのチャレンジに 気軽に参加してほしいと強く思っています そこで役立つのがアクティビティです

    アクティビティも新機能の1つであり ゲーム内のアクションへの ディープリンクを追加できます アクティビティはゲーム内の 特定の目的地です ディープリンクを使って プレーヤーを その目的地に直接移動させることができます アクティビティの開始点は Game Centerの他の機能を 関連付けることで定義されます

    例えば レベル1の最後にスコアを送信する Leaderboardを そのレベルの開始点にディープリンクする アクティビティに関連付けることができます GamesアプリでこのLeaderboardが表示され をタップすれば プレーヤーは そのレベルを直接開始できます そのLeaderboardに対し定義されている すべてのチャレンジも 同じアクティビティに 関連付けられます そのため プレーヤーがGamesアプリで レベル1のチャレンジを見つけたら をタップするだけで レベル1を開始できます アクティビティでは ボス戦レベルなどの 特定のアチーブメントに関連付けられた ゲームの部分に ディープリンクすることもできます

    アクティビティのもう1つの優れた使い方は リアルタイムのマルチプレーヤー体験に プレーヤーをディープリンクすることです Game Centerにはパーティコードの サポートが組み込まれているため 既存の リアルタイムのマルチプレーヤーシステムを Game Centerアクティビティと統合できます このように アクティビティを様々な形で 活用することで より多くのプレーヤーに ゲームをプレイしてもらえます ここでは 「The Coast」の 2つの例をお見せします 1つは先ほど作成した 「Cape Cod」チャレンジでの例 もう1つは マルチプレーヤーアクティビティの例です 私は 「Cape Cod」の新しいチャレンジに 挑戦するよう 友達を既に誘っています このチャレンジにアクティビティを 定義したいと思います このボタンをタップすると レベルのスタート画面に 移動するようにします まずメタデータを定義しましょう アクティビティのIDは thecoast.activityにします 必要に応じて 基本アクティビティに 詳細を追加できます 例えば このアクティビティが 「The Coast」の特定の ゲームモード用である場合 それに応じたLeaderboardやアチーブメントを アクティビティに関連付けできます チャレンジについてはどうでしょうか 先に説明した通り チャレンジはLeaderboardの拡張機能です つまり Leaderboardを アクティビティに関連付けると チャレンジも自動的に関連付けられます そこで「Cape Cod」のLeaderboardを 新しいアクティビティにリンクします 関連付けた項目自体にも プロパティを設定できます ここではLeaderboardのプロパティで levelの値として capeCodを追加しました このアクティビティが「Cape Cod」の チャレンジからトリガされると 基本プロパティが Leaderboardのプロパティと結合されます すべてのプロパティが送信されたら ゲーム内のハンドラから 開始レベルが 「Cape Cod」であることを特定できます アクティビティに必要な要素が すべて揃ったので すべてのメタデータ値をXcodeに入力します 画像と表示名を使用して 新しいアクティビティを作成済みです このセクションで アクティビティの 基本プロパティを設定できます 「Cape Cod」のLeaderboardを 新しい アクティビティと関連付けるために Xcodeで Leaderboardを選択し ドロップダウンから Cape Codのアクティビティを選択します

    またLeaderboardに対し 適切な プロパティが定義されている必要があります これには このプロパティセクションで 対処できます

    これで アクティビティのメタデータが 設定され 準備が整いました あと1つだけ必要な要素は プレーヤーを直接「Cape Cod」レベルに 移動させるためのゲーム内ハンドラです ゲームのコードで GKLocalPlayerListenerから player関数を実装できます 渡されるアクティビティのインスタンスには 先ほどXcodeで設定した IDが定義されています 正しいIDを指定できたら propertiesの値が参照可能になり プレーヤーは適切なレベルで プレイを開始できるようになります

    アクティビティでは この便利なsetScore関数を使用して スコアを送信できます activity.start()を呼び出すと すべてのスコア送信がバッファされます activity.end()では Game Centerは 最新のスコアを一度だけ送信します これは特にチャレンジで有効です スコアを誤って複数回送信してしまう リスクを低減できます チャレンジなどのGame Center機能からの ディープリンクは プレーヤーをゲーム内の 適切な場所に移動させる上で有用です マルチプレーヤーアクティビティでは プレーヤーは友達とのゲームプレイを すばやく開始できます マルチプレーヤーのアクティビティは パーティコードに関連付けられ 既存のリアルタイムの マルチプレーヤーシステムと統合できます

    プレーヤーが新規の マルチプレーヤーアクティビティを始めると Game Centerは自動的に パーティコードを生成します プレーヤーはこのアクティビティを iMessageを介して 簡単に友達と共有できるようになりました アクティビティとパーティコードは Gamesアプリをインストールしていない デバイスでは Webページとして表示されます このWebページでは OpenGraphタグも提供されており 共有時の見た目を最適化できます アクティビティの共有方法に関係なく Game Centerはプレーヤーが参加に使用する パーティコードをゲームに通知します これにより マルチプレーヤーシステムで 同じパーティコードを持つ 全員の間につながりを構築できます

    アクティビティのメタデータは 先ほどと同じように設定します 1つだけ異なるのは に チェックを入れることです ゲーム内ハンドラの扱いもすべて同じです アクティビティのインスタンスから パーティコードにアクセスできます マルチプレーヤーアクティビティは Game Centerのマッチメイキングとも連携します findMatch()関数を使用して このアクティビティでの対戦を見つけるよう Game Centerに指示できます

    アクティビティの作成時には いくつかの注意点があります ディープリンクを最大限に活用するために 紹介画面やゲーム選択画面は 必ずバイパスし プレーヤーを直接 適切なスタート地点に移動させてください リンク先の場所で 課金や 進行度に基づくゲーティングが必要な場合は 必ずゲーム内で メッセージをポップアップ表示して プレイを始めるために 何が必要かをプレーヤーに知らせましょう 最新のパーティコードを ゲーム内で明確に表示してください これにより プレーヤーは自分が 正しい場所にいることを確認できます プレーヤーがゲーム内でパーティコードを 手動入力できるオプションも必要です これは プレーヤーがパーティコードを 別のデバイスや プラットフォームから 受け取った場合に役立ちます 以上で 紹介してきた機能を 「The Coast」に実装できたので すべてがうまく機能することを テストで確認しましょう ここからはJoshが テストの方法をお見せします ありがとう Varokas アクティビティやチャレンジは ゲームの強力な追加要素になりますが まずは 先ほど追加した「Cape Cod」の Leaderboardをテストしましょう 既に説明した通り このLeaderboardは 安全な場所に 移動できた船の数をトラッキングします 新しいGame Progress Managerを 使用して このゲームの スコア報告ロジックが Leaderboardで 正しく機能していることを確認します 新しいLeaderboardを テストするには ゲームのスキームの編集と GameKitの構成デバッグモードの 有効化が必要です これはスキームエディタの >から実行できます

    完了したらXcodeでゲームを起動し Game Progress Managerを メニューから開きます

    次に テストする デバイスとゲームを選択します この例ではiPhoneと「The Coast」です

    .gamekitバンドルのアチーブメントと Leaderboardがすべて表示されるので 作成したLeaderboardを選択します この+記号の付いたボタンをクリックすると 任意のスコアを送信できます どのプレーヤーのスコアでも送信できますが ここでは私自身の42ポイントを送信します

    ゲームにバナーが表示され 受信されたことを確認できます これは ゲームのデバッグモードで使える 便利な機能です 「Cape Cod」のLeaderboardを開くと 先ほど送信したスコアが表示されます しかし 本当に確認したいのは スコアが正しく報告されているかどうかです とりあえず このボタンをクリックして Leaderboardをクリアしましょう クリアする意思を確認します そして 実際にゲームをプレイし スコアを獲得します 「The Coast」に戻り できるだけ多く 船を安全な場所まで移動させます

    おっと またロブスターに騙されました デバッグバナーが再び表示され ゲームのLeaderboardに 獲得したばかりのスコアが 正しく表示されます 成功ですね スコアはXcodeにも表示され ゲームのロジックが正しいと確認できます 重要なのは これらのスコアが 完全にデバッグセッション内に留まり サーバには送信されないことです では Varokasが先ほど作成した ゲームアクティビティをテストしましょう これは「Cape Cod」のLeaderboardに 関連付けられているため ディープリンクが Game Progress Managerに表示されます このリンクがクリックされると 「Cape Cod」のレベルを開始するように リンクハンドラを設定済みです Xcodeでリンクをクリックすると デバイスで クリックするのと同じ動作を確認できます

    「Cape Cod」が再び開始され リンク処理コードが 正常に機能していることを確認できました 動作が確認できたので .gamekitバンドルをApp Store Connectに 公開する準備が整いました Xcodeプロジェクトに戻ると 以前と同様に .gamekitバンドルが選択されています 省略記号をクリックしますが 選択するのは です

    再び「The Coast」を選択し

    をクリックします

    完了したら

    App Store ConnectのWebサイトに .gamekitバンドルの全内容が表示されます すべてが「Not Live」になっていますが これはGame Centerの ライフサイクルにおける重要な概念であり なぜこの状態で始まるのかを 理解することが重要です ここで 作成から公開までの プロセス全体を概観して この「Not Live」状態が どのような意味を持つのか確認しましょう この図は 作成から公開までに至る ゲームのLeaderboard、チャレンジ、 アクティビティ、アチーブメントの ライフサイクルを示しています これを構成する3つのセクションは 開発とGame Centerの構成のための Xcode、 ベータテストのためのTestFlight、 リリースのためのApp Store Connectです まずは ゲームを構築する実際の作業です コードを記述し .gamekitバンドルを使って Game Centerの機能を追加します 次に 作成した全要素の包括的なテストを Game Progress Managerで実施します テストで問題がなければ ゲームをTestFlightに公開し ベータテストに移行します すべてが正しく機能していることを 確認できたら レビューのためにAppleに提出します その際には 使用するすべての 「Not Live」のGame Centerリソースを 提出内容に含めてください Appleのレビューで承認され リリースを決定したら Game Centerリソースがライブ状態になり ゲームはApp Storeに公開されます 祝うべき節目ですね ゲームデベロッパにとって最高の瞬間です Xcodeで .gamekitバンドルを さっそくゲームに追加しましょう Game Centerに習熟している方も まったくの初心者の方も ゲームの開発が容易になります 次に GameKitを初期化するコードを 追加しましょう これを行うだけで オペレーティングシステム全体にわたり ゲームを見つけてもらいやすくなります 新機能のアクティビティとチャレンジは 時間をかけて活用法を検討する 十分な価値があります ぜひお試しください Gamesアプリで ゲームを最も効果的に アピールするための戦略については ビデオ「Engage players with the Apple Games app」でLoganの解説をご覧ください Unityデベロッパの方はUnityプロジェクトに Appleのフレームワークを統合する方法を 下段に示したビデオでぜひご確認ください 皆さんが作った素敵なゲームを プレイするのを楽しみにしています ご視聴ありがとうございました

    • 4:17 - Initialize GameKit

      GKLocalPlayer.local.authenticateHandler = { _, error in
          print("\(GKLocalPlayer.local.alias) is ready to play!")
      }
    • 4:29 - Initialize GameKit (Unity)

      var player = await GKLocalPlayer.Authenticate();
      Debug.Log($"{player.alias} is ready to play!");
    • 13:07 - Submit score to challenge

      // Submit score
      
      GKLeaderboard.submitScore(points, 
               context: 0, 
               player: GKLocalPlayer.local,
               leaderboardIDs: ["thecoast.lb.capecod"])
    • 20:24 - Activity properties

      // Activity properties 
      
      extension AppDelegate: GKLocalPlayerListener {
      
          func player(_ player: GKPlayer, wantsToPlay activity: GKGameActivity) async -> Bool {
              let activityId = activity.activityDefinition.identifier
              
              if activityId == "thecoast.activity" {
                  let level = activity.properties["level"]
                  
                  if level == "capecod" {
                      startCapeCod(activity)
                  }
              }
              
              return true
          }
      
      }
    • 20:48 - Managing score submission with activity

      // Managing score submission with activity 
      
      class GameplayManager {
          let activity: GKGameActivity
          let leaderboard: GKLeaderboard
          
          init(activity: GKGameActivity, leaderboard: GKLeaderboard) {
              self.activity = activity
              self.leaderboard = leaderboard
              
              activity.start()
          }
          
          func setScore(_ newScore: Int) {
              activity.setScore(on: leaderboard, to: newScore)
          }
      
          deinit {
              activity.end()
          }
      }
    • 22:35 - Access the Party Code

      extension AppDelegate: GKLocalPlayerListener {
          func player(_ player: GKPlayer, wantsToPlay activity: GKGameActivity) async -> Bool {
              let activityId = activity.activityDefinition.identifier
              
              if activityId == "thecoast.multiplayer" {
                  startMultiplayer(partyCode: activity.partyCode)
              }
              
              return true
          }
      }
    • 22:48 - Game Center Matchmaking

      let match = try await activity.findMatch()

Developer Footer

  • ビデオ
  • WWDC25
  • Game Centerの導入
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン