Marble Maze の開発 — C++ for DirectX を使用して作成されたユニバーサル Windows プラットフォーム (UWP) ゲーム

このトピックでは、DirectX と C++ を使って 3D のユニバーサル Windows プラットフォーム (UWP) ゲームを作成する方法について説明します。 Marble Maze と呼ばれるこのゲームでは、タブレット、従来のデスクトップ PC、ノート PC などの、複数のフォーム ファクターを活用しています。

注意

Marble Maze のソース コードをダウンロードするには、GitHub のサンプルをご覧ください。

重要

Marble Maze では、UWP ゲームを作成するためのベスト プラクティスと考えられる設計パターンが示されます。 各自のプラクティスと開発するゲームの固有の要件に適合するように、このゲームの実装の詳細を利用できます。 各自のニーズに適合する別のテクニックやライブラリがある場合はそれを自由にお使いください (ただし、コードが Windows アプリ認定キットによるテストに合格することを常に確かめてください。) ゲームの開発を成功させるために Marble Maze の実装が不可欠であると見なされる場合は、このドキュメントでその点を強調しています。

Marble Maze について

Marble Maze を選んだのは、それが比較的基本的なゲームであるにもかかわらず、多くのゲームで使われる多様な機能を備えているためです。 Marble Maze は、グラフィックス、入力処理、オーディオの使用方法を示しています。 さらに、規則やゴールなどのゲームのメカニズムも示します。

Marble Maze は、通常は穴がある箱と金属かガラス製のビー玉で構成される卓上版の迷路ゲームに似ています。 Marble Maze の目的は、卓上版と同じです。迷路を傾けて、ビー玉を迷路の入り口から出口まで、穴に落とさずにできるだけ短い時間で誘導することです。 Marble Maze には、チェックポイントという概念が追加されています。 大理石が穴に落ちた場合、ゲームは、大理石が通過した最後のチェックポイントの場所から再開されます。

Marble Maze では、ユーザーは複数の方法でゲーム ボードを操作できます。 タッチ対応または加速度計対応デバイスの場合は、これらのデバイスを使ってゲーム ボードを動かすことができます。 コントローラーまたはマウスを使用してゲーム プレイを制御することもできます。

screen shot of the marble maze game.

前提条件

  • Windows 10 Creators Update
  • Microsoft Visual Studio 2017
  • C++ プログラミングの知識
  • DirectX と DirectX の用語に関する知識
  • COM に関する基本的な知識

対象読者

Windows 10 用の 3D ゲームやその他のグラフィックスを多用するアプリケーションの作成に関心がある場合は、これが適しています。 このドキュメントで説明する基本原則とプラクティスを活用して、各自の UWP ゲームを作成してください。 C++ と DirectX のプログラミングの知識または強い興味があれば、このドキュメントを活用するのに役に立ちます。 DirectX の経験がない場合でも、類似の 3D グラフィックスのプログラミング環境の経験があれば役に立ちます。

ドキュメント「チュートリアル: DirectX によるシンプルな UWP ゲームの作成」に、DirectX と C++ を使った基本的な 3D シューティング ゲームを実装するサンプルの説明があります。

このドキュメントの内容

このドキュメントでは、以下の方法について説明します。

  • Windows ランタイム API と DirectX を使って UWP ゲームを作成する。
  • Direct3DDirect2D を使って、モデル、テクスチャ、頂点シェーダー、ピクセル シェーダー、2D オーバーレイ等の視覚的なコンテンツを操作する。
  • タッチ、加速度計、ゲーム コントローラーなどの入力メカニズムを統合します。
  • XAudio2 を使って、音楽とサウンド エフェクトを組み込む。

このドキュメントで扱われていない内容

このドキュメントでは、ゲーム開発の次の側面は扱いません。 これらの側面は、追加リソースで扱われます。

  • 3D ゲームの設計原則。
  • C++ または DirectX プログラミングの基本。
  • テクスチャ、モデル、オーディオなどのリソースを設計する方法。
  • ゲームの動作またはパフォーマンスに関する問題をトラブルシューティングする方法。
  • 海外で使用できるようにゲームを準備する方法。
  • ゲームを検証して Microsoft Store に公開する方法。

Marble Maze では、DirectXMath ライブラリを使って、3D ジオメトリの操作と衝突などの物理計算が行われます。 DirectXMath については、このセクションでは詳しく説明しません。 Marble Maze での DirectXMath の使用方法については、ソース コードを参照してください。

Marble Maze には再利用可能なコンポーネントがたくさん用意されていますが、それは完全なゲーム開発フレームワークではありません。 Marble Maze のコンポーネントが皆さんのゲームで再利用できると考えられる場合は、このドキュメントでその点を強調しています。

次の手順

Marble Maze サンプルの基礎」で、Marble Maze の構造と、Marble Maze のソース コードが従っているコーディング ガイドラインとスタイル ガイドラインを確認することから始めることをお勧めします。 次の表に、簡単に参照できるように、このセクションに含まれるドキュメントの概要を示します。

このセクションの内容

Title 説明
Marble Maze サンプルの基礎 ゲームの構造の概要と、ソース コードが従っているコーディング ガイドラインとスタイル ガイドラインの一部を示します。
Marble Maze のアプリケーション構造 Marble Maze アプリケーション コードの構造と、DirectX UWP アプリの構造と従来のデスクトップ アプリケーションの構造の違いについて説明します。
Marble Maze サンプルへの視覚的なコンテンツの追加 Direct3D と Direct2D を使うときに留意する主なプラクティスについて説明します。 また、Marble Maze で、これらのプラクティスを視覚的なコンテンツに適用する方法についても説明します。
Marble Maze サンプルへの入力と対話機能の追加 ユーザーがメニュー間を移動し、ゲーム ボードを操作できるように、Marble Maze が加速度計、タッチ、ゲーム コントローラーの入力を処理する方法について説明します。 入力を操作するときに留意するベスト プラクティスについても説明します。
Marble Maze のサンプルへのオーディオの追加 Marble Maze でオーディオを操作して音楽とサウンド エフェクトをゲームのエクスペリエンスに追加する方法について説明します。