Windows ゲーム開発ガイド

Windows ゲーム開発ガイドへようこそ。

このガイドでは、ユニバーサル Windows プラットフォーム (UWP) ゲームの開発に必要なリソースと情報のエンドツーエンドのコレクションを提供します。 このガイドの英語 (米国) 版は PDF 形式で入手できます。

ユニバーサル Windows プラットフォーム (UWP) 向けゲーム開発の概要

Windows ゲームを作成すると、PC や Xbox One を通じて何百万人もの世界中のプレーヤーにリーチする機会が得られます。 Windows 版 Xbox、Xbox Live、クロスデバイス マルチプレーヤー、驚くべきゲーム コミュニティ、およびユニバーサル Windows プラットフォーム (UWP) や DirectX 12 などの強力な新機能が使用された Windows ゲームは、あらゆる年代やジャンルのプレーヤーを興奮させます。 ユニバーサル Windows プラットフォーム (UWP) は、PC と Xbox One 用の共通の API と、ゲームを各デバイス エクスペリエンス向けに調整するツールやオプションとで、ゲームに Windows デバイスにわたる互換性を提供します。

このガイドは、ゲームの開発時に役立つ情報とリソースのエンドツーエンドのコレクションを提供します。 セクションはゲーム開発の段階に従って編成されているので、必要なときにどこで情報を探せばよいかがわかります。

Windows または Xbox で初めてゲームを開発する場合は、最初にファースト ステップ ガイドを参照してください。 「ゲーム開発のリソース」セクションでは、ゲームの作成時に役立つドキュメント、プログラム、その他のリソースの概要も示します。 代わりに UWP コードを確認することから始める場合は、「ゲームのサンプル」を参照してください。

ゲーム開発のリソース

ドキュメントから開発者プログラム、フォーラム、ブログ、サンプルまで、ゲーム開発の過程で役立つリソースが数多くあります。 ここでは、Windows ゲームの開発を始めるにあたって役立つリソースをまとめています。

Note

一部の機能は、さまざまなプログラムを通じて管理されます。 このガイドでは幅広いリソースを取り上げているため、参加しているプログラムや特定の開発の役割によっては、一部のリソースにアクセスできない場合があります。 たとえば、developer.xboxlive.comforums.xboxlive.comxdi.xboxlive.com、または Game Developer Network (GDN) に解決されるリンクです。 Microsoft との提携の詳細については、「開発者プログラム」を参照してください。

ゲーム開発ドキュメント

このガイド全体を通して、タスク、テクノロジ、ゲーム開発のステージ別に整理された関連ドキュメントへの詳細なリンクが掲載されています。 利用可能なドキュメントのさまざまなビューを提供するために、Windows ゲーム開発用の主要なドキュメント ポータルを次に示します。

Windows デベロッパー センター メイン ポータル Windows デベロッパー センター
Windows アプリの開発 Windows アプリの開発
ユニバーサル Windows プラットフォーム アプリの開発 ユニバーサル Windows プラットフォームのドキュメント
UWP ゲームの攻略ガイド ゲームと DirectX
DirectX リファレンスと概要 DirectX のグラフィックスとゲーム
ゲームのための Azure Azure を使ったゲームの構築とスケーリング
Azure PlayFab ライブ ゲーム用の完全なバックエンド ソリューション
Xbox One の UWP Xbox One 上の UWP アプリのビルド
HoloLens 上の UWP HoloLens 上の UWP アプリのビルド
Xbox Live のドキュメント Xbox Live 開発者ガイド
Xbox One 開発のドキュメント (XGD) Xbox One 開発
Xbox One 開発のホワイトペーパー (XGD) ホワイト ペーパー
Mixer Interactive のドキュメント ゲームに対話機能を追加する

パートナー センター

Windows ゲームの公開に向けての最初の一歩は、パートナー センターで開発者として登録することです。 開発者アカウントでは、ゲームの名前を予約することや、すべての Windows デバイスに対応する無料ゲームと有料ゲームを Microsoft Store に申請することができます。 開発者アカウントを使って、ゲームとゲーム内製品を管理し、詳細な分析を入手し、世界各地のプレーヤーにすばらしいエクスペリエンスを提供するサービスを実現できます。

また、Microsoft は、Windows ゲームの開発と公開を支援するいくつかの開発者プログラムも提供しています。 パートナー センター アカウントに登録する前に、自分にとって適切なものがあるかどうかを確認することをお勧めします。 詳細については、「開発者プログラム」を参照してください

開発者プログラム

Microsoft は、Windows ゲームの開発と公開を支援するいくつかの開発者プログラムを提供しています。 Xbox One のゲームを開発し、Xbox Live の機能をゲームに統合する場合には、開発者プログラムへの参加を検討してください。 Microsoft Store でゲームを公開するには、さらにパートナー センターで開発者アカウントを作成する必要があります。

Xbox Live クリエーターズ プログラム

Xbox Live クリエーターズ プログラムでは、だれでも Xbox Live を自分のタイトルに統合して、Xbox One や Windows に公開することができます。 認定プロセスが簡素化され、標準的な Microsoft Store ポリシー以外に概念の承認はありません。

クリエーターズ プログラムでは、専用の開発キットを使わずに、小売ハードウェアのみを使ってゲームを展開、設計、公開できます。 まず、お使いの Xbox One に開発モード有効化アプリをダウンロードします。

他の Xbox Live 機能へのアクセス、マーケティングと開発に関する専用のサポート、メイン Xbox One ストアでの紹介を希望する場合は、ID@Xbox プログラムへの登録を申し込んでください。

Xbox Live クリエーターズ プログラム Xbox Live クリエーターズ プログラムの詳細

ID@Xbox

ID@Xbox プログラムは、資格のあるゲーム開発者が Windows および Xbox One で自己公開できるように支援します。 Xbox One 向けに開発する場合、またはゲーマースコア、達成度、ランキングなどの Xbox Live 機能を自分の Windows ゲームに追加する場合は、ID@Xbox にサインアップしてください。 ID@Xbox 開発者になると、創造性を発揮して成功を最大化するために必要なツールとサポートを得ることができます。 パートナー センターで開発者アカウントを登録する前に、まず ID@Xbox に申し込むことをお勧めします。

ID@Xbox 開発者プログラム Xbox One 用独立開発者プログラム
ID@Xbox コンシューマー サイト ID@Xbox

ゲームのサンプル

Windows ゲームとアプリのサンプルが数多く用意されており、Windows のゲーム機能を理解して、ゲーム開発をすぐに始めることができます。 サンプルは開発され、定期的に公開されるため、ときどきサンプル ポータルをチェックして、新機能を確認することを忘れないでください。 GitHub リポジトリをウォッチして、変更と追加の通知を受け取ることもできます。

ユニバーサル Windows プラットフォームのサンプル アプリ Windows-universal-samples
Direct3D 12 グラフィックス サンプル DirectX-Graphics-Samples
Direct3D 11 グラフィックス サンプル directx-sdk-samples
Direct3D 11 の一人称ゲーム サンプル DirectX によるシンプルな UWP ゲームの作成
Direct2D のカスタム画像効果のサンプル D2DCustomEffects
Direct2D のグラデーション メッシュのサンプル D2DGradientMesh
Direct2D の写真調整のサンプル D2DPhotoAdjustment
Xbox Advanced Technology Group のパブリック サンプル Xbox-ATG-Samples
Xbox Live のサンプル xbox-live-samples
Xbox One ゲームのサンプル (XGD) サンプル
Windows ゲームのサンプル (MSDN コード ギャラリー) Microsoft Store ゲームのサンプル
JavaScript 2D ゲームのサンプル JavaScript で UWP ゲームを作成する
JavaScript 3D ゲームのサンプル three.js を使って 3D JavaScript ゲームを作成する
MonoGame 2D UWP ゲームのサンプル MonoGame 2D で UWP ゲームを作成する

開発者フォーラム

開発者フォーラムは、ゲームの開発に関する質疑応答を行ったり、ゲーム開発コミュニティで交流を深めたりするのに適した場所です。 フォーラムは、開発者が過去に直面して解決した困難な問題に対する既存の答えを見つけるためのすばらしいリソースでもあります。

アプリとゲームの公開開発者フォーラム 公開とアプリ内広告
UWP アプリ デベロッパー フォーラム ユニバーサル Windows プラットフォーム アプリの開発
デスクトップ アプリケーション デベロッパー フォーラム Windows デスクトップ アプリケーション フォーラム
DirectX Microsoft Store ゲーム (アーカイブされたフォーラムの投稿) DirectX を使った Microsoft Store ゲームの構築 (アーカイブ)
Windows 10 対象パートナー デベロッパー フォーラム XBOX デベロッパー フォーラム: Windows 10
Xbox Live フォーラム Xbox Live 開発フォーラム
PlayFab フォーラム PlayFab フォーラム

開発者ブログ

開発者ブログは、ゲーム開発に関する最新情報を入手できるもう 1 つの優れたリソースです。 新機能、実装の詳細、ベスト プラクティス、アーキテクチャの背景などに関する投稿が見つかります。

Windows 用アプリのビルド (ブログ) Windows 用アプリのビルド
Windows 10 (ブログ記事) Windows 10 の投稿
Visual Studio エンジニアリング チームのブログ Visual Studio ブログ
Visual Studio 開発者ツールのブログ 開発者ツールのブログ
Somasegar の開発者ツールのブログ Somasegar のブログ
DirectX 開発者のブログ DirectX 開発者のブログ
DirectX 12 の概要 (ブログ記事) DirectX 12
Visual C++ ツール チームのブログ Visual C++ チーム ブログ
PIX チームのブログ Windows と Xbox 上の DirectX 12 ゲームのパフォーマンス チューニングとデバッグ
ユニバーサル Windows アプリ展開チームのブログ UWP アプリのビルドと展開チームのブログ

概念と計画

概念と計画の段階では、ゲームの全体像とそれを実現するために使用するテクノロジやツールを決定します。

ゲーム開発技術の概要

UWP 用ゲームの開発を始める場合、グラフィックス、入力、オーディオ、ネットワーク、ユーティリティ、ライブラリについて複数のオプションが用意されています。

ゲームで使うすべてのテクノロジを既に決定しているのであれば、準備は完了です。 そうでない場合は、「UWP アプリのゲーム テクノロジ」ガイドには、使用できる多くのテクノロジがよくまとまっており、オプションとそれらをどのように組み合わせるかを理解するために役立つので、参照することを強くお勧めします。

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

ゲームの計画

これらは、いくつかの高レベルの概念と、ゲームを計画するときに考慮する計画のトピックです。

ゲームをアクセシビリティ対応にする ゲームのアクセシビリティ
クラウドを使ってゲームを構築する ゲーム用のクラウド
ゲームを収益化する ゲームの収益化

グラフィックス テクノロジとプログラミング言語の選択

Windows ゲームでは、複数のプログラミング言語やグラフィックス テクノロジを使うことができます。 どれを選ぶかは、開発しているゲームの種類、開発スタジオの経験や好み、ゲームの具体的な機能要件によって決まります。 使うのは C#、C++、または JavaScript ですか? DirectX、XAML、または HTML5 ですか?

DirectX

Microsoft DirectX は、最高パフォーマンスの 2D および 3D グラフィックスとマルチメディアを実現するための選択肢です。

DirectX 12 は、以前のバージョンよりも高速かつ効率的になっています。 Direct3D 12 は、より豊かなシーン、より多くのオブジェクト、より複雑な効果を実現し、Windows PC や Xbox One の最新の GPU ハードウェアを十分に活用できます。

Direct3D 11 の使い慣れたグラフィックス パイプラインを使う場合でも、Direct3D 11.3 に追加された新しいレンダリングおよび最適化機能を活かすことができます。 さらに、Win32 をルーツとする実証済みのデスクトップ Windows API の開発者は、Windows ゲーム用にそのオプションを選ぶこともできます。

DirectX の広範な機能と深いプラットフォーム統合により、最も要求の厳しいゲームに必要なパワーとパフォーマンスが提供されます。

UWP 開発用 DirectX DirectX プログラミング
チュートリアル: UWP DirectX ゲームを作成する方法 DirectX によるシンプルな UWP ゲームの作成
DirectX の概要とリファレンス DirectX のグラフィックスとゲーム
Direct3D 12 プログラミング ガイドとリファレンス Direct3D 12 グラフィックス
グラフィックスと DirectX 12 開発に関する動画 (YouTube チャンネル) Microsoft DirectX 12 とグラフィックスに関する教育

XAML

XAML は、使いやすい宣言型 UI 言語です。アニメーション、ストーリーボード、データ バインディング、スケーラブルなベクトルベースのグラフィックス、動的なサイズ変更、シーン グラフなどの便利な機能を備えています。 XAML は、ゲーム UI、メニュー、スプライト、2D グラフィックスに最適です。 UI レイアウトを簡単にするために、XAML は Expression Blend や Microsoft Visual Studio などの設計および開発ツールと互換性があります。 XAML はよく C# と同時に使用されますが、希望する言語が C++ の場合や、ゲームが多くの CPU を必要とする場合は、C++ も適しています。

XAML プラットフォームの概要 XAML プラットフォーム
XAML UI とコントロール コントロール、レイアウト、テキスト

HTML 5

ハイパーテキスト マークアップ言語 (HTML) は、Web ページ、アプリ、リッチ クライアントに使われる一般的な UI マークアップ言語です。 Windows ゲームでは、HTML の使い慣れた機能、ユニバーサル Windows プラットフォームへのアクセス、AppCache、Web Workers、キャンバス、ドラッグアンドドロップ、非同期プログラミング、SVG などのモダン Web 機能のサポートを備えたフル機能のプレゼンテーション レイヤーとして HTML5 を使用できます。 HTML レンダリングはバックグラウンドで DirectX ハードウェア アクセラレーションの機能を利用するので、追加のコードを記述することなく、DirectX のパフォーマンス上の恩恵を受けることもできます。 Web 開発に熟練している場合、Web ゲームを移植する場合、または他の選択肢よりアプローチしやすい言語およびグラフィックス レイヤーを使う場合は、HTML5 が最適です。 HTML5 は JavaScript と共に使われますが、C# または C++/CX を使って作成されたコンポーネントを呼び出すこともできます。

HTML5 とドキュメント オブジェクト モデルの情報 HTML と DOM のリファレンス
HTML5 W3C の推奨事項 HTML5

プレゼンテーション テクノロジの組み合わせ

Microsoft DirectX Graphic Infrastructure (DXGI) には、複数のグラフィックス テクノロジにおける相互運用性と互換性が備わっています。 高パフォーマンスのグラフィックスを実現するため、メニューや他のシンプルな UI には XAML を使い、複雑な 2D および 3D シーンのレンダリングには DirectX を使うことで、XAML と DirectX を組み合わせることができます。 DXGI は、Direct2D、Direct3D、DirectWrite、DirectCompute、Microsoft メディア ファンデーション間の互換性も提供します。

DirectX Graphic Infrastructure (DXGI) プログラミング ガイドとリファレンス DXGI
DirectX と XAML の組み合わせ DirectX と XAML の相互運用機能

C++

C++/WinRT はオーバーヘッドの低い高パフォーマンスな言語であり、速度、互換性、プラットフォーム アクセスがうまく組み合わせられています。 C++/WinRT により、DirectX や Xbox Live など、Windows のすばらしいゲーム機能すべてが使いやすくなります。 既存の C++ コードとライブラリを再利用することもできます。 C++/WinRT を使うと、ガベージ コレクションのオーバーヘッドを生じさせない高速なネイティブ コードが作成されるため、ゲームのパフォーマンスが向上し、電力消費が低くなり、結果としてバッテリ寿命が延びます。 C++/WinRT を DirectX または XAML と同時に使うか、両方の組み合わせを使って、ゲームを作成することができます。

C#

C# ("C シャープ" と発音) は、シンプル、強力、タイプセーフ、オブジェクト指向の現代的で革新的な言語です。 C# を使うと、C スタイル言語の使いやすさと表現力を維持しながら、迅速な開発が可能になります。 C# は使いやすい言語ですが、ポリモーフィズム、デリゲート、ラムダ、クロージャ、反復子メソッド、共変性、統合言語クエリ (LINQ) 式など、多くの高度な言語機能が備わっています。 XAML を対象としている場合、ゲームの開発をすぐに始めたい場合、または過去に C# の経験がある場合は、C# が最適な選択肢です。 C# は主に XAML と併用されるので、DirectX を使う場合は、代わりに C++ を選ぶか、ゲームの一部を DirectX とやり取りする C++ コンポーネントとして記述します。 または、C# および C++ 用のイミディエイト モードの Direct2D グラフィックス ライブラリである Win2D を検討します。

C# プログラミング ガイドとリファレンス C# 言語リファレンス

Windows ランタイム コンポーネントを使って言語を組み合わせる

ユニバーサル Windows プラットフォームでは、異なる言語で記述されたコンポーネントを簡単に組み合わせることができます。 C++、C#、Visual Basic で Windows ランタイム コンポーネントを作成した後、JavaScript、C#、C++、Visual Basic から呼び出すことができます。 これは、選んだ言語でゲームの一部をプログラムするのに最適な方法です。 コンポーネントにより、特定の言語でのみ使用可能な外部ライブラリや、既に記述しているレガシ コードを使うこともできるようになります。

Windows ランタイム コンポーネントを作成する方法 C++/WinRT を使用した Windows ランタイム コンポーネント

ゲームに使うべき DirectX のバージョン?

ゲームで DirectX を使うことを選んだ場合、使うバージョン (Microsoft Direct3D 12 または Microsoft Direct3D 11) を決定する必要があります。

DirectX 12 は、以前のバージョンよりも高速かつ効率的になっています。 Direct3D 12 は、より豊かなシーン、より多くのオブジェクト、より複雑な効果を実現し、Windows PC や Xbox One の最新の GPU ハードウェアを十分に活用できます。 Direct3D 12 は非常に低いレベルで動作するため、専門的なグラフィックス開発チームや経験豊富な DirectX 11 開発チームは、グラフィックスの最適化を十分に活かすために必要となるすべてのコントロールを利用することができます。

Direct3D 11.3 は、使い慣れた Direct3D プログラミング モデルを使う低レベルのグラフィックス API であり、GPU レンダリングに伴う複雑な部分の多くを開発者に代わって処理します。 また、Windows と Xbox One でもサポートされています。 Direct3D 11 で記述された既存のエンジンがあり、Direct3D 12 に移行する準備がまだ整っていない場合は、Direct3D 11 on 12 を使ってパフォーマンスをある程度向上させることができます。 バージョン 11.3 以降には、Direct3D 12 でも有効な新しいレンダリングと最適化の機能が含まれています。

Direct3D 12 または Direct3D 11 の選択 Direct3D 12 の概要
Direct3D 11 の概要 Direct3D 11 グラフィックス
Direct3D 11 on 12 の概要 Direct3D 11 on 12

ブリッジ、ゲーム エンジン、ミドルウェア

ゲームのニーズに応じて、ブリッジ、ゲーム エンジン、またはミドルウェアを使うと、開発とテストの時間とリソースを節約できます。 ここでは、ブリッジ、ゲーム エンジン、ミドルウェアの概要とリソースについて紹介します。

Azure PlayFab

Microsoft ファミリの一部となった Azure PlayFab は、ライブ ゲームの完全なバックエンド プラットフォームであり、独立系のスタジオが開発を開始するための強力な手段です。 ゲーム サービス、リアルタイム分析、LiveOps により、コストを削減しつつ、収益、顧客エンゲージメント、顧客維持率を飛躍的に高めることができます。

PlayFab ツールとサービスの概要
作業の開始 PlayFab とは?
動画チュートリアル シリーズ PlayFab のコア システムに関するデモ動画シリーズ
レシピ レシピ
GitHub リポジトリ Android、iOS、Windows、Unity、Unreal など、さまざまなプラットフォーム用のスクリプトと SDK を入手できます。
API ドキュメント REST API の概要
フォーラム PlayFab フォーラム

Unity

Unity には、美しく魅力的な 2D、3D、VR、AR のゲームやアプリを作成するためのプラットフォームが用意されています。 クリエイティブな構想をすばやく実現することができ、事実上、あらゆるメディアやデバイスにコンテンツを提供できます。

Unity 5.4 以降、Unity は Direct3D 12 開発をサポートします。

Unity ゲーム エンジン Unity - ゲーム エンジン
Unity を入手する Unity を入手する
Windows 用 Unity のドキュメント Unity のマニュアル / Windows
PlayFab を使って LiveOps を追加する クイックスタート: Unity の C# 用 PlayFab クライアント ライブラリ
Mixer Interactive を使ってゲームに対話機能を追加する方法 ファースト ステップ ガイド
Unity 用 Mixer SDK Mixer Unity プラグイン
Mixer SDK for Unity のリファレンス ドキュメント Mixer Unity プラグインの API リファレンス
.NET API に関連するアセンブリ リファレンスが見つからない場合のトラブルシューティング Unity や UWP で不足している .NET API
Unity ゲームをユニバーサル Windows プラットフォーム アプリとして公開する (動画) Unity ゲームを UWP アプリとして公開する方法
Unity を使って Windows ゲームとアプリを作成する (動画) Unity を使った Windows ゲームとアプリの作成
Visual Studio を使った Unity ゲーム開発 (動画シリーズ) Visual Studio 2015 での Unity の使用

Havok

Havok のモジュール化された一連のツールとテクノロジによって、ゲーム クリエーターは新しいレベルの対話式操作と没入感を提供できます。 Havok を使うと、非常にリアルな物理演算、対話型のシミュレーション、魅力的な映画を実現できます。 Version 2015.1 以降では、x86、64 ビット、ARM 上の Visual Studio 2015 で UWP を正式にサポートします。

Havok の Web サイト Havok

MonoGame

MonoGame は、もともと Microsoft の XNA Framework 4.0 に基づいたオープン ソースのクロスプラットフォーム ゲーム開発フレームワークです。 現在、Monogame は、Windows、Xbox と共に、Linux、macOS、iOS、Android、その他のいくつかのプラットフォームをサポートしています。

MonoGame Web サイトにアクセス
MonoGame のドキュメント ドキュメントにアクセス
Monogame リリース NuGet 経由で最新リリースを入手

Cocos2d

Cocos2d-x は、UWP ゲームの構築をサポートするクロスプラットフォームのオープン ソース ゲーム開発エンジンとツール スイートです。 バージョン 3 以降では、3D 機能も追加されています。

Cocos2d-x Cocos2d-x とは
Cocos2d-x プログラマ ガイド Cocos2d-x プログラマ ガイド
Windows 10 上の Cocos2d-x (ブログ記事) Windows 10 上での Cocos2d-x の実行
PlayFab を使って LiveOps を追加する Cocos2D-x のクイックスタート

Unreal Engine

Unreal Engine は、あらゆる種類のゲームや開発者に適したゲーム開発ツールがすべて揃ったスイートです。 最も要求の厳しいコンソール ゲームや PC ゲームの場合、世界各地のゲーム開発者は Unreal Engine を使っています。

Unreal Engine の概要 Unreal Engine

BabylonJS

BabylonJS は、HTML5、WebGL、WebVR、Web Audio を使って 3D ゲームを構築するための機能がそろった JavaScript フレームワークです。

BabylonJS BabylonJS
BabylonJS を使ったクロスプラットフォーム WebGL ゲームの構築 BabylonJS を使ってクロスプラットフォーム ゲームを開発する

ゲームの移植

既存のゲームがある場合は、ゲームをすぐに UWP に移行するために役立つリソースとガイドが多数あります。

ユニバーサル Windows プラットフォーム アプリへの Windows 8 アプリの移植 Windows ランタイム 8.x から UWP への移行
ユニバーサル Windows プラットフォーム アプリへの Windows 8 アプリの移植 (動画) Windows 10 への 8.1 アプリの移植
ユニバーサル Windows プラットフォーム アプリへの iOS アプリの移植 iOS から UWP への移行
ユニバーサル Windows プラットフォーム アプリへの Silverlight アプリの移植 Windows Phone Silverlight から UWP への移行
XAML または Silverlight からユニバーサル Windows プラットフォーム アプリへの移植 (動画) XAML または Silverlight から Windows 10 へのアプリの移植
ユニバーサル Windows プラットフォーム アプリへの Xbox ゲームの移植 Xbox One の UWP
DirectX 9 から DirectX 11 への移植 DirectX 9 からユニバーサル Windows プラットフォーム (UWP) への移植
Direct3D 11 から Direct3D 12 への移植 Direct3D 11 から Direct3D 12 への移植
OpenGL ES から Direct3D 11 への移植 OpenGL ES 2.0 から Direct3D 11 への移植
ANGLE を使って OpenGL ES から Direct3D 11 へ ANGLE
UWP での従来の Windows API と同等の機能 ユニバーサル Windows プラットフォーム (UWP) アプリでの Windows API の代替手段

プロトタイプと設計

作成するゲームの種類と、ゲームの構築に使うツールとグラフィックス テクノロジが決まったら、すぐに設計とプロトタイプを開始できます。 ゲームの中核となるのはユニバーサル Windows プラットフォーム アプリなので、そこから始めます。

ユニバーサル Windows プラットフォーム (UWP) の概要

Windows はユニバーサル Windows プラットフォーム (UWP) のホームであり、Windows デバイス間で共通の API プラットフォームが用意されています。 UWP は、Windows ランタイム (WinRT) モデルを発展させて拡張したもので、まとまりのある統一されたコアとなっています。 UWP を対象とするゲームは、すべてのデバイスに共通の WinRT API を呼び出すことができます。 UWP により保証された API 層が提供されるため、あらゆる Windows デバイスにインストールできる 1 つのアプリ パッケージを作成することもできます。 また、必要に応じて、ゲームが実行されるデバイスに固有の API (Win32 や .NET のいくつかの従来の Windows API を含む) をゲームから呼び出すこともできます。

ユニバーサル Windows プラットフォーム アプリについて詳しく説明した優れたガイドを次に示します。このプラットフォームを理解するために読むことをお勧めします。

ユニバーサル Windows プラットフォーム アプリの概要 ユニバーサル Windows プラットフォーム アプリとは

UWP 開発の概要

ユニバーサル Windows プラットフォーム アプリを開発する設定と準備は、短時間で簡単に完了できます。 次のガイドでは、プロセスを段階的に説明します。

UWP 開発の概要 Windows アプリの概要
UWP 開発の準備 準備

UWP プログラミングのまったくの初心者であり、ゲームで XAML を使うことを検討している場合 (「グラフィックス テクノロジとプログラミング言語の選択」を参照) は、まずまったくの初心者向けの Windows 10 開発動画シリーズをご覧になることをお勧めします。

XAML を使った Windows 10 のまったくの初心者シリーズの発表 (ブログ記事) 初心者のための Windows 10 の開発

UWP 開発の概念

ユニバーサル Windows プラットフォーム アプリ開発 Windows アプリの開発
UWP でのネットワーク プログラミングの概要 ネットワークと Web サービス
ゲームでの Windows.Web.HTTP と Windows.Networking.Sockets の使用 ゲームのネットワーク
UWP での非同期プログラミングの概念 非同期プログラミング

Windows デスクトップ API と UWP

デスクトップと UWP コード間の相互運用に役立つリンクをいくつか紹介します。

UWP ゲーム開発に既存の C++ コードを使う 方法: UWP アプリで既存の C++ コードを使う
Win32 および COM API 用の Windows ランタイム API UWP アプリ用の Win32 API と COM API
UWP でサポートされていない CRT 関数 ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数
Windows API の代替手段 ユニバーサル Windows プラットフォーム (UWP) アプリでの Windows API の代替手段

プロセス ライフタイム管理

プロセス ライフタイム管理 (アプリのライフサイクル) は、ユニバーサル Windows プラットフォーム アプリが遷移する可能性があるさまざまなアクティブ化状態を表します。 ゲームはアクティブ化、中断、再開、または終了されることがあり、さまざまな方法でこれらの状態を遷移する可能性があります。

アプリ ライフサイル遷移の処理 アプリのライフサイクル
Microsoft Visual Studio を使ったアプリ遷移のトリガー Visual Studio で UWP アプリの中断、再開、バックグラウンド イベントをトリガーする方法

ゲーム UX の設計

優れたゲームは、インスピレーションを受けた設計から始まります。

ゲームは、共通のユーザー インターフェイス要素と設計原則をアプリと共有していますが、ユーザー エクスペリエンスの外観、機能、設計目標が独特であることがよくあります。 ゲームはテスト済みの UX をいつ使う必要があるか、いつ分岐して刷新する必要があるか、という両方の側面に思慮深い設計を適用すると、ゲームは成功します。 ゲーム用に選んだプレゼンテーション テクノロジ (DirectX、XAML、HTML5、またはその 3 つの組み合わせ) は実装の詳細に影響しますが、適用する設計原則はその選択とはほとんど関係ありません。

UX 設計とは別に、レベル設計、ペーシング、ワールド設計、その他の側面などのゲームプレイ設計は、それ自体が 1 つの芸術形式です。これはあなたとあなたのチーム次第であり、この開発ガイドでは取り上げません。

UWP 設計の基本とガイドライン UWP アプリの設計
アプリのライフサイクル状態の設計 起動、中断、再開に関する UX ガイドライン
Xbox One とテレビ画面用の UWP アプリを設計する Xbox およびテレビ向け設計

色のガイドラインとパレット

ゲーム内で一貫した色のガイドラインに従うと、美観が向上し、ナビゲーションが容易になり、メニューと HUD の機能をプレーヤーに知らせる強力なツールになります。 警告、ダメージ、XP、成績などのゲーム要素の色が一貫していると、UI がわかりやすくなるため、ラベルによって説明する必要性が減ります。

色のガイド Windows 11 の色

タイポグラフィ

文字体裁を適切に使うと、UI レイアウト、ナビゲーション、読みやすさ、雰囲気、ブランド、プレーヤーの没入感など、ゲームのさまざまな側面が向上します。

文字体裁ガイド ベスト プラクティス: 文字体裁

UI マップ

UI マップは、ゲーム ナビゲーションとメニューのレイアウトをフロー チャートで表したものです。 UI マップを使うと、すべての関係者が、ゲームのインターフェイスとナビゲーション パスを理解しやすくなり、開発サイクルの初期段階で潜在的な障害や行き詰まりが明らかになります。

UI マップ ガイド ベスト プラクティス: UI マップ

ゲームのオーディオ

XAudio2、XAPO、Windows Sonic を使ってオーディオをゲームで実装するためのガイドとリファレンスをここに示します。 XAudio2 は、パフォーマンスの高いオーディオ エンジンを開発するための、信号処理とミキシングの基盤を提供する低水準のオーディオ API です。 XAPO API を使用すると、XAudio2 を使用するクロスプラットフォーム オーディオ処理オブジェクト (XAPO) を、Windows と Xbox の両方で作成できます。 Windows Sonic オーディオのサポートにより、Dolby Atmos for Home Theater、Dolby Atmos for Headphones、Windows HRTF のサポートをゲームまたはストリーミング メディア アプリケーションに追加できます。

XAudio2 API XAudio2 のプログラミング ガイドと API リファレンス
クロスプラットフォーム オーディオ処理オブジェクトを作成する XAPO の概要
オーディオの概念の紹介 ゲームのオーディオ
Windows Sonic の概要 立体音響
Windows Sonic 立体音響のサンプル Xbox Advanced Technology Group のオーディオ サンプル

Direct3D 12

Direct3D 12 の新着情報と相違点 (Direct3D 11 との比較)、Direct3D 12 を使ってプログラミングを始める方法について説明します。

Direct3D 12 プログラミング ガイドとリファレンス Direct3D 12 グラフィックス
プログラミング環境を設定する Direct3D 12 プログラミング環境のセットアップ
基本的なコンポーネントを作成する方法 Direct3D 12 の基本的なコンポーネントの作成
Direct3D 12 の変更点 Direct3D 11 から Direct3D 12 への移行に関する重要な変更
Direct3D 11 から Direct3D 12 に移植する方法 Direct3D 11 から Direct3D 12 への移植
リソース バインドの概念 (記述子、記述子テーブル、記述子ヒープ、ルート署名について説明します) Direct3D 12 でのリソース バインディング
メモリの管理 Direct3D 12 でのメモリ管理

DirectX 開発

DirectX ゲーム開発のガイドとリファレンス。

UWP 開発用 DirectX DirectX プログラミング
チュートリアル: UWP DirectX ゲームを作成する方法 DirectX によるシンプルな UWP ゲームの作成
DirectX と UWP アプリ モデルの対話 アプリ オブジェクトと DirectX
DirectX の概要とリファレンス DirectX のグラフィックスとゲーム
DirectX 12 の基礎 (動画) 機能の向上、パフォーマンスの向上: DirectX 12 でのゲーム

DirectX ツール キットとライブラリ

DirectX ツール キット、DirectX テクスチャ処理ライブラリ、DirectXMesh ジオメトリ処理ライブラリ、UVAtlas ライブラリ、DirectXMath ライブラリには、DirectX 開発用のテクスチャ、メッシュ、スプライト、その他のユーティリティ機能とヘルパー クラスが用意されています。 これらのライブラリは、開発の時間と労力を減らすために役立ちます。

DirectX 12 用 DirectX ツール キットを入手する DirectXTK 12
DirectX 11 用 DirectX ツール キットを入手する DirectXTK
DirectX テクスチャ処理ライブラリを入手する DirectXTex
DirectXMesh ジオメトリ処理ライブラリを入手する DirectXMesh
isochart テクスチャ アトラスを作成してパッケージ化するために UVAtlas を入手する UVAtlas
DirectXMath ライブラリを入手する DirectXMath
DirectXTK での Direct3D 12 のサポート (GitHub の issue) DirectX 12 のサポート

パートナーからの DirectX リソース

外部のパートナーによって作成された補足の DirectX ドキュメントを次に示します。

Nvidia: DX12 の注意事項 (ブログ記事) DX12 の注意事項 (更新されました)
Intel: DirectX 3D 12 による並列処理 DirectX 3D 12 による並列処理
Intel: DirectX 12 を使った明示的なマルチ アダプターアプリケーションを実装する方法 DirectX 12 でのマルチアダプターのサポート
Intel: Suzhou Snail、Microsoft によって共同制作されたホワイト ペーパー チュートリアル: DirectX 12 へのアプリの移行 - パート 1

実稼働

この段階で制作スタジオの準備が整ったら、チーム全体に作業を分散して制作サイクルに移行します。 プロトタイプを磨き、リファクタリングし、拡張して、完全なゲームを作り上げます。

通知とライブ タイル

タイルとは、[スタート] メニュー上でゲームを表すものです。 現在ゲームをプレイしていなくても、タイルと通知を使ってプレーヤーの興味を引くことができます。

タイルとバッジの開発 タイル、バッジ、通知
ライブ タイルと通知を示すサンプル 通知のサンプル
アダプティブ タイル テンプレート (ブログ記事) アダプティブ タイル テンプレート - スキーマとドキュメント
タイルとバッジの設計 タイルとバッジのガイドライン
ライブ タイル テンプレートを対話形式で開発するための Windows 10 アプリ Notifications Visualizer
Visual Studio 用 UWP Tile Generator 拡張機能 1 つの画像を使ってすべての必要なタイルを作成するためのツール
Visual Studio 用 UWP Tile Generator 拡張機能 (ブログ記事) UWP Tile Generator ツールの使用に関するヒント

アプリ内製品 (アドオン) の購入を有効にする

アドオン (アプリ内製品) は、プレイヤーがゲーム内で購入できる補助アイテムです。 アドオンには、ゲームのレベル、アイテム、プレーヤーを楽しませるその他のものが含まれます。 適切に使用すると、アドオンはゲームのエクスペリエンスを向上させると共に、収益の増加につながります。 パートナー センターでゲームのアドオンを定義して公開し、ゲームのコードでアプリ内購入を有効にします。

永続的なアドオン アプリ内製品購入の有効化
コンシューマブルなアドオン コンシューマブルなアプリ内製品購入の有効化
アドオンの詳細と申請 アドオンの申請
アドオンの売り上げとゲームの人口統計の監視 アドオン取得レポート

デバッグ、パフォーマンスの最適化、監視

パフォーマンスを最適化するには、Windows のゲーム モードを活用し、ハードウェアの機能を最大限に活用して、ゲーマーに可能な限りのゲーム エクスペリエンスを提供します。

Windows Performance Toolkit (WPT) は、Windows オペレーティング システムとアプリケーションの詳細なパフォーマンス プロファイルを作成するパフォーマンス監視ツールで構成されています。 これは、メモリ使用量を監視し、ゲームのパフォーマンスを向上させるために特に便利です。 Windows Performance Toolkit は、Windows SDK と Windows ADK に含まれています。 このツールキットは、Windows Performance Recorder (WPR) と Windows Performance Analyzer (WPA) という 2 つの独立したツールで構成されています。 Windows Sysinternals の一部である ProcDump は、CPU のスパイクを監視し、ゲームのクラッシュ時にダンプ ファイルを生成するコマンドライン ユーティリティです。

コードのパフォーマンス テスト Azure Test Plans
ゲーム デバイス情報を使って Xbox 本体の種類を取得する ゲーム デバイス情報
ゲーム モード API を使ってハードウェア リソースへの排他的または優先的アクセスを取得することでパフォーマンスを向上させる ゲーム モード
Windows Performance Toolkit (WPT) を入手する Windows パフォーマンス ツールキット
Windows ADK から Windows Performance Toolkit (WPT) を入手する Windows ADK
ProcDump を入手する ProcDump

高度な DirectX の手法と概念

DirectX の開発には微妙で複雑な部分があります。 運用環境で、DirectX エンジンの詳細を掘り下げる必要がある、または難しいパフォーマンスの問題をデバッグする必要があるという問題が生じたら、このセクションのリソースと情報が役に立ちます。

Windows 上の DirectX 12 のパフォーマンス チューニングとデバッグ ツール Windows 上の PIX の概要
Direct3D 12 プログラミング ガイド Direct3D 12 グラフィックス
DirectX と XAML の組み合わせ DirectX と XAML の相互運用機能

ハイ ダイナミック レンジ (HDR) コンテンツ開発

HDR のフル カラー機能を使うゲーム コンテンツを構築します。

HDR コンテンツをレンダリングし、現在のディスプレイでサポートされているかどうかを検出する方法を確認する Direct3D 12 HDR サンプル
DirectX を使って高度な色を作成して構成する Direct2D の高度なカラー画像レンダリングのサンプル

グローバリゼーションとローカリゼーション

Windows プラットフォーム用の多言語対応ゲームを開発し、Microsoft の有力製品に組み込まれている地域と言語の機能について説明します。

ゲームをグローバル市場に向けて準備する グローバライズとローカライズ

ゲームの申請と公開

次のガイドと情報は、公開と申請のプロセスをできるだけスムーズに進めるために役立ちます。

公開

パートナー センターを使用して、ゲーム パッケージの公開と管理を行います。

パートナー センターでのアプリの公開 Windows アプリを公開する
Azure Active Directory (AAD) を使用して、ユーザーをパートナー センター アカウントに追加する ユーザー グループを作成する
ゲームを評価する (ブログ記事) 公開中: アプリの申請を簡略化する単一の年齢区分システム

パッケージ化とアップロード

コンテンツを分割し、グループ化してストリーミング インストールを可能にする UWP アプリ ストリーミング インストール
DLC ゲーム コンテンツなどのオプション パッケージを作成する オプション パッケージと関連セットの作成
UWP ゲームをパッケージ化する アプリのパッケージ化
UWP DirectX ゲームをパッケージ化する UWP DirectX ゲームをパッケージ化する
サード パーティ開発者としてゲームをパッケージ化する (ブログ記事) 発行元のストア アカウント アクセスを使わずにアップロード可能なパッケージを作成する
MakeAppx を使ったアプリ パッケージとアプリ パッケージ バンドルの作成 アプリ パッケージ ツール MakeAppx.exe を使ってパッケージを作成する
SignTool を使ってファイルにデジタル署名する SignTool を使ってファイルに署名し、ファイル内の署名を確認する
ゲームのアップロードとバージョン管理 アプリ パッケージのアップロード

ポリシーと認定

認定の問題によってゲームのリリースが遅れないようにします。 ここでは、注意すべきポリシーと一般的な認定の問題について説明します。

Microsoft Store アプリ開発者契約 アプリ開発者契約
Microsoft Store でアプリを公開するためのポリシー Microsoft Store ポリシー
アプリの認定に関する一般的な問題を回避する方法 一般的な認定エラーを回避する

Store マニフェスト (StoreManifest.xml)

Store マニフェスト (StoreManifest.xml) は、アプリ パッケージに含めることができる省略可能な構成ファイルです。 Store マニフェストには、AppxManifest.xml ファイルに含まれていないその他の機能が用意されています。 たとえば、ターゲット デバイスが指定された DirectX の最小機能レベルまたは指定された最小システム メモリの条件を満たしていない場合に、Store マニフェストを使ってゲームのインストールをブロックできます。

Store マニフェストのスキーマ StoreManifest のスキーマ (Windows 10)

ゲームのライフサイクル管理

開発が終了し、ゲームを出荷しても、"ゲーム オーバー" というわけではありません。 バージョン 1 の開発は終了ですが、マーケットプレースでのゲームの旅は始まったばかりです。 使用状況とエラーのレポートを監視し、ユーザーのフィードバックに対応し、ゲームの更新プログラムを公開する必要があります。

パートナー センターの分析と販売促進

パートナー センターの分析 アプリのパフォーマンスの分析
顧客がゲームの Xbox 機能をどのように利用しているかを確認する Xbox 分析レポート
顧客のレビューへの対応 顧客のレビューへの対応
ゲームを宣伝する方法 顧客を引き付け、アプリを宣伝する

Visual Studio Application Insights

Visual Studio Application Insights には、公開したゲームのパフォーマンス、テレメトリ、使用状況の分析機能があります。 Application Insights は、リリース後のゲームの問題の検出と解決、使用状況の継続的な監視と向上、プレイヤーがゲームを操作する方法の把握に役立ちます。 Application Insights は SDK をアプリに追加することで動作し、テレメトリを Azure ポータルに送信します。

アプリケーションのパフォーマンスと使用状況の分析 Application Insights の概要
Azure Monitor Azure Monitor の概要

分析とプロモーションのためのサード パーティ ソリューション

GameAnalytics を使ってプレーヤーの行動を理解する GameAnalytics
UWP ゲームを Google Analytics に接続する Google Analytics 用 Windows SDK を入手する
Facebook アプリ インストール広告を使って Facebook ユーザーにゲームを宣伝する Windows SDK for Facebook を入手する
Vungle を使ってゲームに動画広告を追加する Windows 用 Vungle SDK をダウンロード

コンテンツの更新プログラムの作成と管理

公開されたゲームを更新するには、バージョン番号が大きい新しいアプリ パッケージを申請します。 パッケージの申請と認定を完了すると、自動的に更新プログラムとして顧客にリリースされます。

ゲームの更新とバージョン管理 パッケージ バージョンの番号付け
ゲーム パッケージ管理のガイダンス アプリ パッケージ管理のガイダンス

ゲームへの Xbox Live の追加

Xbox Live は、世界各地の何百万人ものゲーマーをつなぐ最高のゲーム ネットワークです。 開発者は、Xbox Live プレゼンス、ランキング、クラウド保存、ゲーム ハブ、クラブ、パーティー チャット、ゲーム DVR など、ゲームの対象ユーザーを組織的に拡大できる Xbox Live の機能にアクセスできます。

Note

Xbox Live 対応タイトルを開発する場合、いくつかのオプションが用意されています。 さまざまなプログラムの詳細については、Xbox Live 開発者プログラムの選択に関する記事を参照してください。

Xbox Live の概要 Xbox Live のドキュメント

Xbox Live クリエーターズ プログラムの開発者向け

概要 クリエーターズ プログラムへの参加

対象パートナーおよび ID@Xbox プログラムの開発者向け

概要 対象パートナー向けの Xbox Live の概要
サンプル Xbox ゲーム開発サンプル

その他のリソース

GDC や //build などの主要なカンファレンスの動画 ゲーム開発ビデオ