Game Centerについて

誰もが夢中になれるのがゲームです。App Storeで配布しているゲームも、もちろん例外ではありません。iOS用アプリケーションの一番人気は、昔から決まってゲームでした。ゲームは本来、社会的な活動であると言ってよいでしょう。何人もが参加して競争し、あるいは協力し合うゲームのように、この社会的な関わり合いが、ゲームそのものの構成要素であることも少なくありません。しかし1人ゲームであっても、人はその体験を誰かに話したがるものです。

Appleはゲームにおける社会的な関わり合いの重要性を認識し、Game Centerサービスという形で直接的に支援しています。プレーヤーは自分のデバイスをGame Centerサービスに接続し、さまざまな情報を交換できるのです。ユーザがGame Centerとやり取りするさまざまな方法を図に示します。

../Art/GC_intro_2x.png

プレーヤーによって遊び方はさまざまですが、誰もがGame Centerを介して、次のように情報をやり取りします。

概要

Game Centerは、連携して動作するいくつかのコンポーネントを集約したもので、その機能はゲーム開発者にもエンドユーザにも有用です。

ゲーム本体がGame Centerの機能を活用し、当該ゲームに関する情報がGame Centerアプリケーション上に表示されるようにするためには、開発者が主体的に、必要な機能をゲームに組み込む必要があります。認証機能は必ず実装しなければなりません。さらに、必要に応じて他のいずれかの機能を組み込みます。

ゲーム本体がGame Centerサービスから実行時に取得するリソースがある

通常、アプリケーションのバンドルには、画面(ユーザインターフェイス)表示に用いる画像やローカライズ済みテキストが収容されています。実行中、必要に応じてバンドルから読み込むことになります。これに対し、Game Centerに対応したゲームの場合、バンドルには収容しないやり方もあります。開発時にGame Centerサービスにアップロードしておき、実行時にダウンロードして使うのです。その目的は、同じリソースをGame Centerアプリケーションでも使うためです。たとえば、Game CenterアプリケーションにはLeaderboard(順位表)を表示する機能がありますが、必要なリソースがGame Centerサービスの側にあれば、ゲーム本体と同じように表示することができるのです。

Game Center側に一部のリソースを置くことにすると、ゲームの設計や開発、テスト工程にも影響があります。

ゲーム本体にGame Centerのユーザインターフェイス要素を表示する

Game Kitには、画面全体を使ってさまざまな情報を表示するクラスが付属しています。代表的なものとして、Leaderboard、アチーブメント、マッチメークなどの画面を表示するクラスがあります。たとえばGKGameCenterViewControllerクラスを使えば、ゲーム本体の中から容易に、Game Center側で管理している情報を表示できます。

iOSの場合、この機能はビューコントローラの形で提供されます。ゲーム本体のビューコントローラが、必要に応じて、Game Centerの該当するビューコントローラを呼び出すことになります。一方、OS Xの場合も同じクラスを使いますが、Game Centerが提供するのは、ウインドウ内に要素を表示するための基盤機能だけです。

Game Kitにはバナーの表示機能もあります。メッセージを短時間だけ表示するために使います。所定の事象が起こると自動的にバナーメッセージが現れるようになっていますが、GKNotificationBannerクラスを使って、独自にメッセージを表示することも可能です。

Game Centerの機能を使うにはプレーヤーの認証を要する

Game Centerの機能を利用するためには、デバイスを使うプレーヤーの認証を事前に済ませておく必要があります。認証済みプレーヤーのことを、ローカルプレーヤーとも言います。Game Centerクラスの多くは、ローカルプレーヤーの存在を前提として機能し、処理の対象として暗黙のうちに参照しています。たとえば、ゲーム本体がLeaderboardにスコアを報告する場合、明示的に指定しなくても、そのスコアはローカルプレーヤーが獲得したものです。

認証済みプレーヤーが存在しないときは、Game Centerのすべての機能を無効にしなければなりません。

Leaderboardが機能するためにはスコア計算の仕組みが必要である

ゲーム本体は、Game CenterサービスのLeaderboardに対して、プレーヤーが獲得したスコアを報告します。プレーヤーは、Game CenterアプリケーションのLeaderboard表示機能でスコアを確認できますが、ゲーム本体の側に標準的なLeaderboard画面を組み込むことも、わずか数行のコードを記述するだけでできてしまいます。あるいは、生のスコアデータをダウンロードし、独自の外観のLeaderboardを実装することも可能です。Leaderboardを複数用意し、スコア計算の仕組みに応じてそれぞれカスタマイズすることも考えられるでしょう。

複数のLeaderboardをLeaderboardセットにまとめて管理する

複数のLeaderboardをLeaderboardセットにまとめることで、ゲームのLeaderboardを論理的にグループ化できます。Leaderboardセットを導入すると、より多くのLeaderboardをゲームで使えるようになります。Leaderboardをどのようにまとめるかは、あなた次第です。1つのレベルのすべてのLeaderboardを1つのセットにまとめてもよいし、各レベルのハイスコアのLeaderboardをセットにまとめても構いません。

アチーブメントが機能するためには、プレーヤーの達成状況を測る仕組みが必要である

アチーブメントとは、「金貨を10枚見つける」、「30秒以内に旗を獲得する」など、ゲームの進行に応じて達成するべき具体的な目標のことです。Leaderboardと同様、Game Centerアプリケーションで表示することも、ゲーム本体に表示機能を組み込むことも可能です。前者の場合、友だちの達成状況と比較することもできます。後者の場合、標準的な画面をそのまま組み込んでも、独自の外観の画面を実装し、生のデータをダウンロードして表示しても構いません。

チャレンジの仕組みを使って他のプレーヤーに競争を挑むことができる

チャレンジとは、達成するべき目標を他のプレーヤーに送って、競争を挑むための仕組みです。チャレンジの受け手が目標を達成すると、送り手と受け手の両方に通知が届きます。ゲーム本体がLeaderboardまたはアチーブメントに対応していれば、チャレンジの機能も自動的に使えるようになります。ゲーム本体に必要なコードを実装して、チャレンジの機能を直接組み込むことも可能です。

マッチメークの仕組みを使うためには、マルチプレーヤーゲームに対応した設計にしなければならない

オンラインのマルチプレーヤーゲームを楽しみたければ、マッチメーク(手合い組み)の仕組みを活用するとよいでしょう。適当な対戦相手を見つけ、接続できます。Game Centerにはマッチメークの仕組みが3種類あります。

この文書の使い方

Game Centerに対応したゲームの開発が初めてであれば、「Game Centerに対応したゲームの開発手順」を一通り読んでください。Game Center対応のゲームを設計、実装する手順の概要を解説します。続いて「Game Centerのユーザインターフェイス要素の表示」では、Game Centerのユーザインターフェイス要素をゲーム本体に表示する際に従うべき、一般的な規約を説明します。これは特に、OS X向けのゲームを開発する場合に重要です。ここで説明しているGame Kitの基盤機能は、ユーザインターフェイスの上にGame Centerのコンテンツを表示するために必要だからです。iOS向けのゲームに関しては、Game Centerがビューコントローラの標準的なプログラミングモデルに準拠していることに着目してください。

「Game Centerでのプレーヤーの使用」では、ゲームに参加するプレーヤーの認証手続きを解説しているので、必ず目を通しておいてください。その後、必要に応じて、個々の機能の実装手順について解説した章を読むとよいでしょう。

この資料では、Game Centerとの通信や、Game Centerのネットワーク機能の使い方を説明していますが、ネットワークに関する低レベルのデザインパターンを網羅的に解説したものではありません。Game Kitにはネットワーク基盤機能が組み込まれていますが、リアルタイムのネットワーク対戦ゲームを実装する場合、ネットワークの遅延や切断などといった、よく起こる問題について理解し、対処できるよう準備する必要があります。

前提条件

Game Center対応のゲームを開発するためには、一般的なアプリケーションの開発手順を把握しておかなければなりません。プラットフォームに応じ、次の資料を参照してください。

Game Kitは委譲ブロックオブジェクトの機能をさまざまに活用しています。

関連項目

Game Kitフレームワークについて詳しくは、『GameKit Framework Reference』を参照してください。

GKAuthentication』はユーザ認証の実装例になっています。

GKLeaderboards』はLeaderboardの実装例です。

GKAchievements』はアチーブメントの実装例です。

アプリケーションにコード署名を施し、Game Centerを利用できるようプロビジョニングする手順については、『App Distribution Quick Start』を参照してください。