Skip to main content
Steamworks と XBOX Game Development Kit (GDK) は、ユーザーを認証し、プレイしているタイトルおよびアクセスしようとしている追加コンテンツを所有しているかを検証する API を提供します。これらの API が達成しようとしていることには違いがあります。 Steam API は、マルチプレイヤー セッション用にユーザーの ID を検証し、所有権を使用してユーザーが Steam ストアから正規のゲーム コピーをプレイしていることを検証します。一方、XBOX Game Development Kit (GDK) はユーザーをサインインする必要があり、これによって XBOX services で暗黙的に ID が検証され、現在の Microsoft Store アカウントがそのゲームに対するエンタイトルメントを持つかを独立してチェックします。 XBOX Game Development Kit (GDK) では、認証と所有権に使用される 2 つの API は異なるプラットフォームをターゲットにしており、場合によっては完全に異なるアカウントをターゲットにします。このため、entitled(エンタイトルメントを持つ)という用語を使用して、ユーザーが現在のゲームをプレイするための Microsoft Store からの有効なライセンスを保有していることを指します。これとその影響の詳細については、このトピック後半の「2 つのプラットフォーム間のライセンスの違い」セクションを参照してください。

ユーザー認証

Steam では、クライアントがゲームを起動するとき、ユーザーは常に「サインイン」しています。ゲームは、API を初期化する以外は何もしなくても、常にユーザーの Steam ID にアクセスできます。Steam での認証は、ISteamUser API を使ってセッション チケット(ピア ツー ピアまたは専用サーバー)、暗号化されたアプリケーション チケット(セキュアなサーバー)、または Steam Web API を使って、ユーザーの事前設定 ID が実際にゲームを起動したクライアントにサインインしているユーザーであるかをチェックするプロセスを指します。認証後、Steam Web または ISteamUser API は、チケットを使用して現在のゲームまたはそのダウンロード可能コンテンツ (DLC) の所有権を検証できます。 この検証手順は、XBOX Game Development Kit (GDK) では不要です。XBOX Game Development Kit (GDK) の初期化 の手順でユーザーをサインインしたときに、既に検証が行われているためです。したがって、XBOX Game Development Kit (GDK) には、マルチプレイヤー セッションでユーザーの ID を検証する Steam セッション チケットや暗号化されたアプリケーション チケットに相当するものはありません。

所有権とデジタル著作権管理 (DRM)

ユーザーが現在プレイしているゲームに対するエンタイトルメントを持つことを検証するには、XStore API の XStoreQueryGameLicenseAsync 関数を使用して、ユーザーがそのゲームをプレイするライセンスを持つかチェックする必要があります。非同期コールバックで、次を確認します。
  1. クエリが成功した(つまり、ユーザーがライセンスを持っている)。
  2. XStoreQueryGameLicenseResult から提供されたライセンスがまだアクティブ。
両方のチェックが成功すれば、ユーザーはゲームをプレイするエンタイトルメントを持つと見なすことができます。XBOX Game Development Kit (GDK) では、これは Steam Web API での ISteamUser/CheckAppOwnership の使用や、アプリ チケットで SteamEncryptedAppTicket::BIsTicketForApp を呼び出すのに最も近い相当物です。 このチェックの実行の詳細とコード サンプルについては、XStore: Basic DRM and license checks を参照してください。このトピックには、このクライアント側チェックをバイパスする改ざんを防ぐために存在するより堅牢なライセンス チェック オプションに関する情報も含まれます。 Steam は、XBOX Game Development Kit (GDK) には相当物のない DRM ラッパーも提供します。Microsoft Store は、そこからインストールされたアプリを起動する際にアンチ海賊版チェックを行います。完全な DRM 保護のため、リンクされたコード サンプルでライセンス チェックを実行することに加えて、サード パーティのソリューションを使用することを推奨します。

DLC の所有権をチェックする

ゲームに関連付けられた DLC がある場合、XStore API を使用してユーザーの Microsoft Store アカウントがアイテムにアクセスできるかチェックできます。これらのライセンスをチェックするには、まず XStoreQueryAssociatedProductsAsync 関数を使用してゲームに関連付けられたすべての製品をクエリし、次に ISteamUser/CheckAppOwnershipISteamUser::UserHasLicenseForApp 関数に類似した XStoreAcquireLicenseForPackageAsync 関数を使用して、クエリから返されたリスト内の特定の DLC アイテムのライセンスを取得する必要があります。 ゲームのエンタイトルメントのチェックと同様、ライセンスが正常に取得されたか、そしてアクティブであるかを確認する必要があります。両方のチェックがパスすれば、ユーザーはその DLC アイテムにアクセスするライセンスを持つと見なすことができます。このプロセスのコード サンプルについては、Manage and license optional packages (DLC) を参照してください。

2 つのプラットフォーム間のライセンスの違い

Steam と Microsoft Store の間に存在する哲学の違いに注意することが重要です。Steam では、ライセンス チェックは、認証された ID を持つユーザーが、それを購入したか Steam Family Sharing 経由で現在のゲームをプレイするライセンスを持っていることを検証します。 一方、XBOX Game Development Kit (GDK) は、現在認証されている Microsoft Store アカウントがコンテンツにアクセスするエンタイトルメントを持つかをチェックし、XBOX アカウントで ID を取得します。これには重要な注意事項があります — これら 2 つのアカウントで使用されている Microsoft アカウントは、同じ人物に属していても 同じでない可能性があります。したがって、ゲームやその他の Microsoft Store コンテンツの 1 つのライセンスでプレイできるデバイスの数を制限したい場合、Microsoft Store が提供するさまざまなライセンス モデルに精通しておくことが重要です。詳細については、Product sharing model for games を参照してください。
最終更新日 2026年8月24日