次の方法で共有


UWP アプリのゲーム テクノロジ

このガイドでは、ユニバーサル Windows プラットフォーム UWP ゲームの開発に利用できるテクノロジについて説明します。

ゲーム開発向けの Windows 10 のメリット

Windows 10 で UWP が導入されたことにより、作成した Windows 10 のタイトルはすべての Microsoft プラットフォームに対応できます。 以前のバージョンの Windows から無料で移行できるため、Windows 10 のユーザー数は着実に増加しています。 これらの 2 つの事実を組み合わせると、Windows 10 のタイトルは、Microsoft Store を通じて膨大な数のユーザーに提供できることを意味します。

また Windows 10 には、特にゲームに便利な、多くの新しい機能が用意されています。

  • メモリのページングの削減および全体的なメモリ システム サイズの削減
  • グラフィックス メモリの管理機能の向上により、フォアグラウンドのゲームに、より多くのメモリがアクティブに割り当てられ、保護されます。

C++ と DirectX を使った UWP ゲーム

高パフォーマンスを必要とするリアルタイム ゲームでは、DirectX API を使用する必要があります。 DirectX は、3D ゲームなど、高パフォーマンスを必要とするゲームやマルチメディア アプリケーションを作成するための、ネイティブ API のコレクションです。

開発環境

UWP 用のゲームを作成するには、Visual Studio 2015 以降をインストールして開発環境をセットアップする必要があります。 最新バージョンの Visual Studio をインストールすることをお勧めします。こうすることで、最新の開発およびセキュリティ更新プログラムにアクセスできます。 Visual Studio を使うことによって、UWP アプリを作成でき、ゲーム開発用のツールが提供されます。

  • Visual Studio の DX ゲームのプログラミング用ツール: Visual Studio には、画像、モデル、シェーダー リソースを作成、編集、プレビュー、エクスポートするためのツールが用意されています。 また、ビルド時のリソースの変換や、DirectX グラフィックス コードのデバッグに使うことができるツールもあります。 詳しくは、「ゲーム プログラミング用の Visual Studio ツールの使用」をご覧ください。
  • Visual Studio グラフィックス診断機能: オプション機能として、グラフィックス診断ツールを Windows 内から利用できるようになりました。 診断ツールを使って、グラフィックス デバッグやグラフィックス フレーム分析を実行し、リアルタイムで GPU 使用率を監視できます。 詳しくは、「DirectX ランタイムと Visual Studio グラフィックス診断機能の使用」をご覧ください。

詳しくは、「ユニバーサル Windows プラットフォームと DirectX プログラミング環境の準備」をご覧ください。

DirectX ゲーム プロジェクト テンプレートの概要

開発環境をセットアップすると、DirectX 関連のプロジェクト テンプレートのいずれかを使って UWP DirectX ゲームを作成できます。 Visual Studio 2015 には、新しい UWP DirectX プロジェクトを作成するためのテンプレートとして、DirectX 11 アプリ (ユニバーサル Windows)DirectX 12 アプリ (ユニバーサル Windows)DirectX 11 および XAML アプリ (ユニバーサル Windows) の 3 つがあります。 詳しくは、「テンプレートからのユニバーサル Windows プラットフォームおよび DirectX ゲーム プロジェクトの作成」をご覧ください。

Windows 10 API

Windows 10 では、ゲーム開発に役立つさまざまな API を利用できます。 3D グラフィックス、2D グラフィックス、オーディオ、入力、テキスト リソース、ユーザー インターフェイス、ネットワークなど、ゲームのほとんどすべての側面にかかわる API が用意されています。

ゲーム開発に関連する API は数多くありますが、すべてのゲームですべての API を使用する必要はありません。 たとえば、3D グラフィックスと Direct3D のみを利用するゲームもあれば、2D グラフィックスと Direct2D のみを利用するゲームもあります。また、その両方を使用するゲームもあります。 次の図は、ゲーム開発に関連する API を機能別にグループ分けしています。

ゲーム プラットフォーム テクノロジ

  • 3D グラフィックス: Windows 10 では、Direct3D 11 と Direct3D 12 の 2 つの 3D グラフィックス API セットをサポートしています。 これら API はいずれも、3D および 2D グラフィックスを作成する機能を提供します。 Direct3D 11 と Direct3D 12 を同時に使うことはありませんが、いずれも 2D グラフィックスおよび UI グループのすべての API と共に使うことができます。 ゲームでグラフィックス API を使う方法について詳しくは、「DirectX ゲームの基本的な 3D グラフィックス」をご覧ください。

    API 説明
    Direct3D 12

    Direct3D 12 では、DirectX の核となる 3D グラフィックス API である Direct3D の次期バージョンが導入されます。 このバージョンの Direct3D は、以前のバージョンの Direct3D よりも高速かつ効率的になるように設計されています。 Direct3D 12 の速度の向上のトレードオフは、より下位レベルで動作することであり、グラフィックス リソースを自分で管理する必要があることです。また、速度の向上を実現するには、広範なグラフィックスのプログラミングの経験が必要です。

    いつ使用するか

    Direct3D 12 は、ゲームのパフォーマンスを最大化する必要があり、ゲームが CPU バウンドである場合に使います。

    詳細情報

    Direct3d 12 に関連するドキュメントをご覧ください。

    Direct3D 11

    Direct3D 11 は、以前のバージョンの Direct3D であり、D3D 12 より上位レベルのハードウェア アブストラクションを使用して 3D グラフィックスを作成できます。

    いつ使用するか

    Direct3D 11 のコードが既にある場合、ゲームが CPU バウンドではない場合、またはリソースが自動的に管理されるメリットが必要な場合は、Direct3D 11 を使います。

    詳細情報

    Direct3D 11 に関連するドキュメントをご覧ください。

     

  • 2D グラフィックスおよび UI API: テキストやユーザー インターフェイスなどの 2D グラフィックスに関する API です。 すべての 2D グラフィックスおよび UI API はオプションです。

    API 説明
    Direct2D

    Direct2D は、2D ジオメトリ、ビットマップ、テキストの高パフォーマンスかつ高品質のレンダリングを実現する、ハードウェア アクセラレータによる、即時モードの 2D グラフィックス API です。 Direct2D API は Direct3D を基にして構築されており、GDI、GDI+、Direct3D とも適切に相互運用できるように設計されています。

    いつ使用するか

    Direct2D は、横スクロール ゲームやボード ゲームなどの純粋な 2D ゲーム用のグラフィックスを提供するために、Direct3D の代わりに使うことができます。また、ユーザー インターフェイスやヘッドアップ ディスプレイなど、3D ゲーム内での 2D グラフィックスの作成を簡素化するために Direct3D と共に使うこともできます。

    詳細情報

    Direct2D に関連するドキュメントをご覧ください。

    DirectWrite

    DirectWrite は、テキストを操作するための追加の機能を提供します。Direct3D や Direct2D と共に使用して、ユーザー インターフェイスや、テキストが必要なその他の領域にテキスト出力を提供できます。 DirectWrite は、複数形式のテキストの測定、描画、ヒット テストをサポートします。 DirectWrite は、グローバル アプリケーションとローカライズされたアプリケーションで、サポートされているすべての言語のテキストを処理します。 DirectWrite は、独自のレイアウトと Unicode からグリフへの処理を実行する必要がある開発者に、下位レベルのグリフ レンダリング API も提供します。

    いつ使用するか

    詳細情報

    DirectWrite に関連するドキュメントをご覧ください。

    DirectComposition

    DirectComposition は、変換、効果、アニメーションを使って、高パフォーマンスのビットマップ合成を実現できる Windows コンポーネントです。 アプリケーション開発者は、DirectComposition API によって、ビジュアル要素間で機能豊富で柔軟な切り替えのアニメーションを使った、視覚的に魅力のあるユーザー インターフェイスを作成できます。

    いつ使用するか

    DirectComposition は、視覚要素を合成し、切り替えのアニメーションを作成するプロセスを簡略化するように設計されています。 複雑なユーザー インターフェイスがゲームに必要な場合、DirectComposition を使って、簡単に UI を作成および管理できます。

    詳細情報

    DirectComposition に関連するドキュメントをご覧ください。

     

  • オーディオ: オーディオの再生やオーディオ エフェクトの適用に関する API です。 ゲームでオーディオ API を使う方法について詳しくは、「ゲームのオーディオ」をご覧ください。

    API 説明
    XAudio2

    XAudio2 は、信号処理とミキシングの基礎を提供する下位レベルのオーディオ API です。 XAudio は、カスタム オーディオ エフェクトや、オーディオ エフェクトとフィルターの複雑なチェーンを作成する機能を維持しながら、ゲーム オーディオ エンジンに対する応答性が高くなるように設計されています。

    いつ使用するか

    ゲームでオーバーヘッドと遅延を最小限に抑えながらサウンドを再生する必要がある場合、XAudio2 を使用します。

    詳細情報

    XAudio2 に関連するドキュメントをご覧ください。

    オーディオ グラフ

    XAudio2 で実装できる機能については、代わりに Windows ランタイム オーディオ グラフ API を使う方法があります。 2 つの選択肢から選ぶ場合は、「Windows ランタイム AudioGraph または XAudio2 の選択」を参照してください。

    いつ使用するか

    オーディオ グラフは、最小限のオーバーヘッドと遅延でゲームのサウンドを再生する必要がある場合に使いますが、XAudio2 よりもはるかに使いやすい API であり、C# サポートのオプションもあります。

    詳細情報

    オーディオ グラフのドキュメントを参照してください。

    メディア ファンデーション

    Microsoft メディア ファンデーションは、オーディオとビデオの両方のメディア ファイルやストリームの再生用として設計されていますが、XAudio2 よりも高いレベルの機能が必要とされている場合や、追加のオーバーヘッドを許容できる場合にゲームで利用することもできます。

    いつ使用するか

    メディア ファンデーションは、特に、ゲーム中の映画的なシーンや非対話型のコンポーネントに利用できます。 また、メディア ファンデーションは、XAudio2 を使って再生するオーディオ ファイルをデコードするのに便利です。

    詳細情報

    Microsoft メディア ファンデーションの概要をご覧ください。

     

  • 入力: キーボード、マウス、ゲームパッド、その他のユーザー入力ソースからの入力に関する API です。

    API 説明
    XInput

    XInput ゲーム コント ローラー API によって、アプリケーションでゲーム コントローラーからの入力を受信できます。

    いつ使用するか

    ゲームでゲームパッド入力をサポートする必要があり、既存の XInput コードがある場合は、引き続き XInput を使用できます。 UWP の場合、XInput は Windows.Gaming.Input に置き換えられたため、新しい入力コードを記述する場合は、XInput ではなく Windows.Gaming.Input を使う必要があります。

    詳細情報

    XInput に関連するドキュメントをご覧ください。

    Windows.Gaming.Input

    Windows.Gaming.Input API は XInput を置き換える API であり、同じ機能を提供すると共に、XInput に比べて次のような利点があります。

    • リソースの使用量が少ない
    • 入力を取得するための API 呼び出しの待ち時間が短い
    • 同時に 4 つ以上のゲームパッドを処理する機能
    • トリガー振動モーターなど、追加のゲームパッド機能にアクセスする機能
    • コントローラー接続/切断をポーリングではなくイベントで通知する機能
    • 入力を特定のユーザー (Windows.System.User) に関連付ける機能

    いつ使用するか

    ゲームでゲームパッド入力をサポートする必要があるが、XInput の既存のコードを使っていない場合や、上に示したメリットのいずれかが必要である場合は、Windows.Gaming.Input を使う必要があります。

    詳細情報

    Windows.Gaming.Input に関連するドキュメントをご覧ください。

    Windows.UI.Core.CoreWindow

    Windows.UI.Core.CoreWindow クラスは、ポインターのボタンの押下や移動を追跡するためのイベント、キーの押下やリリースのイベントを提供します。

    いつ使用するか

    ゲームでマウスやキーの押下を追跡する必要がある場合、Windows.UI.Core.CoreWindows のイベントを使います。

    詳細情報

    ゲームでマウスやキーボードを使う方法について詳しくは、「ゲームのムーブ/ルック コントロール」をご覧ください。

     

  • 数値演算: 一般的に使用される数値演算の簡素化に関する API です。

    API 説明
    DirectXMath

    DirectXMath API は、ゲームで一般的な線形代数およびグラフィックスの数値演算用の SIMD フレンドリな C++ の型および関数を提供します。

    いつ使用するか

    DirectXMath の使用はオプションであり、一般的な数値演算を簡素化します。

    詳細情報

    DirectXMath に関連するドキュメントをご覧ください。

     

  • ネットワーク: インターネットまたはプライベート ネットワーク上の他のコンピューターやデバイスとの通信に関する API です。

    API 説明
    Windows.Networking.Sockets

    Windows.Networking.Sockets 名前空間は、信頼性の高いまたは信頼性の低いネットワーク通信を実現する TCP および UDP ソケットを提供します。

    いつ使用するか

    Windows.Networking.Sockets は、ゲームがネットワーク経由で他のコンピューターやデバイスと通信する必要がある場合に使用します。

    詳細情報

    ゲームでのネットワークの使用」をご覧ください。

    Windows.Web.HTTP

    Windows.Web.HTTP 名前空間では、Web サイトへのアクセスに利用できる、HTTP サーバーへの信頼性の高い接続を実現できます。

    いつ使用するか

    ゲームで Web サイトにアクセスして情報を取得または保存する必要がある場合に、Windows.Web.HTTP を使います。

    詳細情報

    ゲームでのネットワークの使用」をご覧ください。

     

  • サポート ユーティリティ: Windows 10 API に基づいて構築されたライブラリです。

    ライブラリ 説明
    DirectX ツール キット

    DirectX ツール キット (DirectXTK) は、C++ で DirectX 11.x コードを作成するためのヘルパー クラスのコレクションです。

    いつ使用するか

    C++ を使っている開発者がレガシ D3DX ユーティリティ コードに代わる最新のユーティリティを探している場合や、XNA Game Studio を使っている開発者がネイティブ C++ に移行する場合に、DirectX ツール キットを使います。

    詳細情報

    DirectX ツール キットのプロジェクト ページ https://github.com/Microsoft/DirectXTK を参照してください。

    Win2D

    Win2D は、即時モードの 2D グラフィックス レンダリング用の、使いやすい Windows ランタイム API です。

    いつ使用するか

    C++ を使っている開発者が Direct2D と DirectWrite の使いやすい WinRT ラッパーを必要としている場合や、C# を使っている開発者が Direct2D と DirectWrite を使う必要がある場合に、Win2D を使います。

    詳細情報

    Win2D プロジェクト ページ https://github.com/Microsoft/Win2D を参照してください。

Xbox Live サービス

Xbox 開発者プログラムでは、すべての開発者が Xbox Live を UWP ゲームに統合して、Xbox One や Windows 10 に公開することができます。 最小限の開発時間で、サインイン、プレゼンス、ランキングなどの Xbox Live ソーシャル エクスペリエンスをタイトルに統合できます。 Xbox Live のソーシャル機能では、5,500 万人以上のアクティブ ゲーマーに情報を発信して、オーディエンスを自然に増やすことができます。

Xbox Live の他の機能にアクセスしたり、マーケティングと開発に関する専用のサポートを受けたり、Xbox One ストアのメイン ページで取り上げられたりすることを希望する場合は、ID@Xbox プログラムへの登録を申し込んでください。 Xbox Live クリエーターズ プログラムと ID@Xbox プログラムで利用できる機能については、「機能比較テーブル」を参照してください。

詳しくは、「ゲームへの Xbox Live の追加」をご覧ください。

DirectX と UWP を使ったゲーム作成の代替手段

DirectX を使わない UWP ゲーム

カード ゲームやボード ゲームなど、最低限のパフォーマンスの要件を満たす単純なゲームは、DirectX を使わずに作成でき、必ずしも C++ で記述されている必要はありません。 このような種類のゲームでは、C#、Visual Basic、C++、HTML/JavaScript など、UWP でサポートされている言語のいずれかを利用できます。 パフォーマンスと負荷の高いグラフィックスがゲームで必要な場合は、JavaScript と HTML5 のタッチ ゲームのサンプルを参考にしてください。

ゲーム エンジン

Windows ゲーム開発 API を使って独自のゲーム エンジンを作成する代替手段として、Windows ゲーム開発 API を基にして作成された多くの高品質ゲーム エンジンを、Windows プラットフォームでのゲームの開発に利用できます。 ゲーム エンジンまたはライブラリを検討する場合、複数のオプションがあります。

  • フル ゲーム エンジン: フル ゲーム エンジンは、ゲーム エンジンをゼロから作成する場合に使用する、グラフィックス、オーディオ、入力、ネットワークなどの Windows 10 API のほとんどまたはすべてをカプセル化します。 また、フル ゲーム エンジンは、人工知能や経路探索などのゲーム ロジック機能も備えています。
  • グラフィックス エンジン: グラフィックス エンジンは、Windows 10 のグラフィックス API をカプセル化して、グラフィックス リソースを管理し、さまざまなモデルとワールドの形式をサポートします。
  • オーディオ エンジン: オーディオ エンジンは Windows 10 のオーディオ API をカプセル化して、オーディオ リソースを管理し、高度なオーディオ処理とエフェクトを提供します。
  • ネットワーク エンジン: ネットワーク エンジンは、Windows 10 のネットワーク API をカプセル化して、ピア ツー ピアまたはサーバー ベースのマルチプレイヤーのサポートをゲームに追加します。また、多数のプレイヤーをサポートするための高度なネットワーク機能が含まれる場合もあります。
  • 人工知能と経路探索エンジン: AI と経路探索エンジンは、ゲーム内でエージェントの動作を制御するためのフレームワークを提供します。
  • 特殊な用途のエンジン: インベントリ システムやダイアログ ツリーなど、発生する可能性があるほぼすべてのゲーム開発関連タスクを処理するために、さまざまな追加のエンジンが存在します。

Microsoft Store へのゲームの提出

ゲームを公開する準備ができたら、開発者アカウントを作成して、ゲームを Microsoft Store に提出する必要があります。

Microsoft Store へのゲームの提出については、「ゲームの申請と公開」をご覧ください。