DirectX を使った単純なユニバーサル Windows プラットフォーム (UWP) ゲームの作成

[Windows 10 の UWP アプリ向けに更新。 Windows 8.x の記事については、アーカイブをご覧ください]

この一連のチュートリアルでは、DirectX と C++ を使って基本的なユニバーサル Windows プラットフォーム (UWP) ゲームを作成する方法を説明します。 アートやメッシュなどのアセットの読み込み、主要なゲーム ループの作成、簡易なレンダリング パイプラインの実装、サウンドやコントロールの追加を行うプロセスなど、ゲームの主要な要素すべてについて説明します。

UWP ゲーム開発の手法と考慮事項について説明します。 完全なエンド ツー エンドのゲームを示すのではなく、 むしろ、UWP DirectX ゲーム開発の主要な概念に焦点を当てて、これらの概念に関係する Windows ランタイム固有の考慮事項を示します。

目標

  • UWP DirectX ゲームの基本的な概念とコンポーネントを使い、DirectX を使って UWP ゲームをより快適に設計できるようになること。

始める前に理解しておく必要があること

説明を始める前に、次の事項について理解しておく必要があります。

  • Microsoft C++ コンポーネント拡張 (C++/CX) これは自動参照カウントが組み込まれた Microsoft C++ の更新であり、DirectX 11.1 以降のバージョンを使って UWP ゲームを開発するための言語です。
  • 線形代数およびニュートン物理学の基本的な概念。
  • 基本的なグラフィックス プログラミング用語。
  • Windows プログラミングの基本的な概念。
  • Direct2D および Direct3D 11 API に関する基本的な知識。

Windows ストア Direct3D シューティング ゲームのサンプル

このサンプルは、プレーヤーが動く標的に弾を撃つ、簡単なファーストパーソン シューティング ギャラリーを実装しています。 標的に命中するたびにポイントが与えられ、プレーヤーは難度が上がっていく 6 つのレベルを進むことができます。 レベルの最後に、ポイントが集計されて、プレーヤーに最終スコアが与えられます。

サンプルで示されているゲームの概念は、次のとおりです。

  • DirectX 11.1 と Windows ランタイムの間の相互運用
  • 主観 3D 視点およびカメラ
  • ステレオスコピック 3D 効果
  • 3D でのオブジェクト間の衝突検出
  • マウス、タッチ、および Xbox 360 コントローラー操作のプレーヤー入力の処理
  • オーディオ ミキシングおよび再生
  • 基本的なゲームのステート マシン

ゲーム サンプルの動作

トピック 説明
ゲーム プロジェクトのセットアップ ゲームを作るための最初の手順は、必要なコード インフラストラクチャ作業の量を最小限に抑えるように Microsoft Visual Studio でプロジェクトを設定することです。 適切なテンプレートを使い、ゲーム開発用にプロジェクトを構成することで、時間や手間を大幅に節約できます。 シンプルなゲーム プロジェクトを設定および構成する手順を紹介します。
ゲームの UWP アプリ フレームワークの定義 DirectX による UWP ゲームのコーディングでは、まず、ゲーム オブジェクトと Windows との対話を可能にするフレームワークを構築します。 これには、中断/再開イベントの処理、ウィンドウのフォーカス、スナップなどの Windows ランタイムのプロパティや、ユーザー インターフェイスのイベント、対話式操作、トランザクションが含まれます。 ここでは、サンプル ゲームを構成する方法と、サンプル ゲームでプレーヤーとシステムの対話用の上位レベルのステート マシンを定義する方法について説明します。
メイン ゲーム オブジェクトの定義 ここでは、ゲーム サンプルのメイン オブジェクトの詳細と、実装するルールをゲーム ワールドとの対話式操作に変換する方法について説明します。
レンダリング フレームワークの作成 次に、作成した構造と状態をサンプル ゲームで使ってグラフィックスを表示する方法を見てみましょう。 ここでは、グラフィックス デバイスの初期化からディスプレイへのグラフィックス オブジェクトの表示まで、レンダリング フレームワークの実装方法について見ていきます。
ユーザー インターフェイスの追加 これまでは、サンプル ゲームでメイン ゲーム オブジェクトと基本的なレンダリング フレームワークを実装する方法について確認してきました。 次は、サンプル ゲームでゲームの状態に関するフィードバックをプレイヤーに提供する方法を見てみましょう。 ここでは、単純なメニュー オプションとヘッドアップ ディスプレイ コンポーネントを、3-D グラフィックス パイプラインの出力の上に追加する方法について説明します。
コントロールの追加 次は、ゲーム サンプルで 3-D ゲームにムーブ/ルック コントロールを実装する方法と、タッチ コントローラー用、マウス コントローラー用、ゲーム コントローラー用の基本的なコントロールを開発する方法について説明します。
サウンドの追加 この手順では、シューティング ゲームのサンプルで XAudio2 API を使ってサウンド再生用のオブジェクトを作る方法について説明します。
ゲーム サンプルの紹介 これで、 基本的な UWP DirectX 3D ゲームの主なコンポーネントについては理解できました。 ビュー プロバイダーやレンダリング パイプラインなどのゲームのフレームワークをセットアップして、基本的なゲーム ループを実装することができます。 また、基本的なユーザー インターフェイス オーバーレイを作成したり、サウンドやコントロールを統合したりできます。 独自のゲームを自力で作成できるため、ここでは、DirectX ゲーム開発の知識をさらに深めるためのリソースをいくつか紹介します。