Windows ゲーム開発ガイド
[アーティクル] 2024/08/21
8 人の共同作成者
フィードバック
この記事の内容
ユニバーサル Windows プラットフォーム (UWP) 向けゲーム開発の概要
ゲーム開発のリソース
概念と計画
プロトタイプと設計
実稼働
ゲームの申請と公開
ゲームのライフサイクル管理
ゲームへの Xbox Live の追加
その他のリソース
さらに 5 個を表示
Windows ゲーム開発ガイドへようこそ。
注意
UWP フレームワークに基づくゲームの開発に時間を費やす前に、UWP がアクティブな開発を行っていないことに注意してください。 さらに、UWP ベースのゲームは Xbox ストアでは受け入れなくなりました。
このガイドでは、ユニバーサル Windows プラットフォーム (UWP) ゲームの開発に必要なリソースと情報のエンドツーエンドのコレクションを提供します。 このガイドの英語 (米国) 版は PDF 形式で入手できます。
このガイドは、ゲームの開発時に役立つ情報とリソースのエンドツーエンドのコレクションを提供します。 セクションはゲーム開発の段階に従って編成されているので、必要なときにどこで情報を探せばよいかがわかります。
Windows でのゲーム開発を初めて使用する場合は、「 作業の開始 ガイド」を参照してください。 「ゲーム開発のリソース 」セクションでは、ゲームの作成時に役立つドキュメント、プログラム、その他のリソースの概要も示します。 代わりに UWP コードを確認することから始める場合は、「ゲームのサンプル 」を参照してください。
ドキュメントから開発者プログラム、フォーラム、ブログ、サンプルまで、ゲーム開発の過程で役立つリソースが数多くあります。 ここでは、Windows ゲームの開発を始めるにあたって役立つリソースをまとめています。
注意
一部の機能は、さまざまなプログラムを通じて管理されます。 このガイドでは幅広いリソースを取り上げているため、参加しているプログラムや特定の開発の役割によっては、一部のリソースにアクセスできない場合があります。 Microsoft との提携の詳細については、「開発者プログラム 」を参照してください。
このガイド全体を通して、タスク、テクノロジ、ゲーム開発のステージ別に整理された関連ドキュメントへの詳細なリンクが掲載されています。 利用可能なドキュメントのさまざまなビューを提供するために、Windows ゲーム開発用の主要なドキュメント ポータルを次に示します。
テーブルを展開する
Windows ゲームの公開に向けての最初の一歩は、パートナー センターで開発者として登録する ことです。 開発者アカウントでは、ゲームの名前を予約することや、すべての Windows デバイスに対応する無料ゲームと有料ゲームを Microsoft Store に申請することができます。 開発者アカウントを使って、ゲームとゲーム内製品を管理し、詳細な分析を入手し、世界各地のプレーヤーにすばらしいエクスペリエンスを提供するサービスを実現できます。
また、Microsoft は、Windows ゲームの開発と公開を支援するいくつかの開発者プログラムも提供しています。 パートナー センター アカウントに登録する前に、自分にとって適切なものがあるかどうかを確認することをお勧めします。 詳細については、「開発者プログラム 」を参照してください
Microsoft Store でゲームを公開するには、さらにパートナー センター で開発者アカウントを作成する必要があります。
Windows ゲームとアプリのサンプルが数多く用意されており、Windows のゲーム機能を理解して、ゲーム開発をすぐに始めることができます。 サンプルは開発され、定期的に公開されるため、ときどきサンプル ポータルをチェックして、新機能を確認することを忘れないでください。 GitHub リポジトリをウォッチ して、変更と追加の通知を受け取ることもできます。
テーブルを展開する
開発者フォーラムは、ゲームの開発に関する質疑応答を行ったり、ゲーム開発コミュニティで交流を深めたりするのに適した場所です。 フォーラムは、開発者が過去に直面して解決した困難な問題に対する既存の答えを見つけるためのすばらしいリソースでもあります。
テーブルを展開する
開発者ブログは、ゲーム開発に関する最新情報を入手できるもう 1 つの優れたリソースです。 新機能、実装の詳細、ベスト プラクティス、アーキテクチャの背景などに関する投稿が見つかります。
テーブルを展開する
概念と計画の段階では、ゲームの全体像とそれを実現するために使用するテクノロジやツールを決定します。
UWP 用ゲームの開発を始める場合、グラフィックス、入力、オーディオ、ネットワーク、ユーティリティ、ライブラリについて複数のオプションが用意されています。
ゲームで使うすべてのテクノロジを既に決定しているのであれば、準備は完了です。 そうでない場合は、「UWP アプリのゲーム テクノロジ 」ガイドには、使用できる多くのテクノロジがよくまとまっており、オプションとそれらをどのように組み合わせるかを理解するために役立つので、参照することを強くお勧めします。
テーブルを展開する
これらは、いくつかの高レベルの概念と、ゲームを計画するときに考慮する計画のトピックです。
テーブルを展開する
グラフィックス テクノロジとプログラミング言語の選択
Windows ゲームでは、複数のプログラミング言語やグラフィックス テクノロジを使うことができます。 どれを選ぶかは、開発しているゲームの種類、開発スタジオの経験や好み、ゲームの具体的な機能要件によって決まります。 使うのは C#、C++、または JavaScript ですか? DirectX、XAML、または HTML5 ですか?
Microsoft DirectX は、最高パフォーマンスの 2D および 3D グラフィックスとマルチメディアを実現するための選択肢です。
DirectX 12 は、以前のバージョンよりも高速かつ効率的になっています。 Direct3D 12 は、より豊かなシーン、より多くのオブジェクト、より複雑な効果を実現し、Windows PC や Xbox One の最新の GPU ハードウェアを十分に活用できます。
Direct3D 11 の使い慣れたグラフィックス パイプラインを使う場合でも、Direct3D 11.3 に追加された新しいレンダリングおよび最適化機能を活かすことができます。 さらに、Win32 をルーツとする実証済みのデスクトップ Windows API の開発者は、Windows ゲーム用にそのオプションを選ぶこともできます。
DirectX の広範な機能と深いプラットフォーム統合により、最も要求の厳しいゲームに必要なパワーとパフォーマンスが提供されます。
テーブルを展開する
XAML は、使いやすい宣言型 UI 言語です。アニメーション、ストーリーボード、データ バインディング、スケーラブルなベクトルベースのグラフィックス、動的なサイズ変更、シーン グラフなどの便利な機能を備えています。 XAML は、ゲーム UI、メニュー、スプライト、2D グラフィックスに最適です。 UI レイアウトを簡単にするために、XAML は Expression Blend や Microsoft Visual Studio などの設計および開発ツールと互換性があります。 XAML はよく C# と同時に使用されますが、希望する言語が C++ の場合や、ゲームが多くの CPU を必要とする場合は、C++ も適しています。
テーブルを展開する
ハイパーテキスト マークアップ言語 (HTML) は、Web ページ、アプリ、リッチ クライアントに使われる一般的な UI マークアップ言語です。 Windows ゲームでは、HTML の使い慣れた機能、ユニバーサル Windows プラットフォームへのアクセス、AppCache、Web Workers、キャンバス、ドラッグアンドドロップ、非同期プログラミング、SVG などのモダン Web 機能のサポートを備えたフル機能のプレゼンテーション レイヤーとして HTML5 を使用できます。 HTML レンダリングはバックグラウンドで DirectX ハードウェア アクセラレーションの機能を利用するので、追加のコードを記述することなく、DirectX のパフォーマンス上の恩恵を受けることもできます。 Web 開発に熟練している場合、Web ゲームを移植する場合、または他の選択肢よりアプローチしやすい言語およびグラフィックス レイヤーを使う場合は、HTML5 が最適です。 HTML5 は JavaScript と共に使われますが、C# または C++/CX を使って作成されたコンポーネントを呼び出すこともできます。
テーブルを展開する
Microsoft DirectX Graphic Infrastructure (DXGI) には、複数のグラフィックス テクノロジにおける相互運用性と互換性が備わっています。 高パフォーマンスのグラフィックスを実現するため、メニューや他のシンプルな UI には XAML を使い、複雑な 2D および 3D シーンのレンダリングには DirectX を使うことで、XAML と DirectX を組み合わせることができます。 DXGI は、Direct2D、Direct3D、DirectWrite、DirectCompute、Microsoft メディア ファンデーション間の互換性も提供します。
テーブルを展開する
C++/WinRT はオーバーヘッドの低い高パフォーマンスな言語であり、速度、互換性、プラットフォーム アクセスがうまく組み合わせられています。 C++/WinRT により、DirectX や Xbox Live など、Windows のすばらしいゲーム機能すべてが使いやすくなります。 既存の C++ コードとライブラリを再利用することもできます。 C++/WinRT を使うと、ガベージ コレクションのオーバーヘッドを生じさせない高速なネイティブ コードが作成されるため、ゲームのパフォーマンスが向上し、電力消費が低くなり、結果としてバッテリ寿命が延びます。 C++/WinRT を DirectX または XAML と同時に使うか、両方の組み合わせを使って、ゲームを作成することができます。
C# ("C シャープ" と発音) は、シンプル、強力、タイプセーフ、オブジェクト指向の現代的で革新的な言語です。 C# を使うと、C スタイル言語の使いやすさと表現力を維持しながら、迅速な開発が可能になります。 C# は使いやすい言語ですが、ポリモーフィズム、デリゲート、ラムダ、クロージャ、反復子メソッド、共変性、統合言語クエリ (LINQ) 式など、多くの高度な言語機能が備わっています。 XAML を対象としている場合、ゲームの開発をすぐに始めたい場合、または過去に C# の経験がある場合は、C# が最適な選択肢です。 C# は主に XAML と併用されるので、DirectX を使う場合は、代わりに C++ を選ぶか、ゲームの一部を DirectX とやり取りする C++ コンポーネントとして記述します。 または、C# および C++ 用のイミディエイト モードの Direct2D グラフィックス ライブラリである Win2D を検討します。
テーブルを展開する
Windows ランタイム コンポーネントを使って言語を組み合わせる
ユニバーサル Windows プラットフォームでは、異なる言語で記述されたコンポーネントを簡単に組み合わせることができます。 C++、C#、Visual Basic で Windows ランタイム コンポーネントを作成した後、JavaScript、C#、C++、Visual Basic から呼び出すことができます。 これは、選んだ言語でゲームの一部をプログラムするのに最適な方法です。 コンポーネントにより、特定の言語でのみ使用可能な外部ライブラリや、既に記述しているレガシ コードを使うこともできるようになります。
テーブルを展開する
ゲームで 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 でも有効な新しいレンダリングと最適化の機能が含まれています。
テーブルを展開する
ゲームのニーズに応じて、ブリッジ、ゲーム エンジン、またはミドルウェアを使うと、開発とテストの時間とリソースを節約できます。 ここでは、ブリッジ、ゲーム エンジン、ミドルウェアの概要とリソースについて紹介します。
Microsoft ファミリの一部となった Azure PlayFab は、ライブ ゲームの完全なバックエンド プラットフォームであり、独立系のスタジオが開発を開始するための強力な手段です。 ゲーム サービス、リアルタイム分析、LiveOps により、コストを削減しつつ、収益、顧客エンゲージメント、顧客維持率を飛躍的に高めることができます。
テーブルを展開する
Unity には、美しく魅力的な 2D、3D、VR、AR のゲームやアプリを作成するためのプラットフォームが用意されています。 クリエイティブな構想をすばやく実現することができ、事実上、あらゆるメディアやデバイスにコンテンツを提供できます。
Unity 5.4 以降、Unity は Direct3D 12 開発をサポートします。
テーブルを展開する
Havok のモジュール化された一連のツールとテクノロジによって、ゲーム クリエーターは新しいレベルの対話式操作と没入感を提供できます。 Havok を使うと、非常にリアルな物理演算、対話型のシミュレーション、魅力的な映画を実現できます。 Version 2015.1 以降では、x86、64 ビット、ARM 上の Visual Studio 2015 で UWP を正式にサポートします。
テーブルを展開する
Unreal Engine は、あらゆる種類のゲームや開発者に適したゲーム開発ツールがすべて揃ったスイートです。 最も要求の厳しいコンソール ゲームや PC ゲームの場合、世界各地のゲーム開発者は Unreal Engine を使っています。
テーブルを展開する
BabylonJS は、HTML5、WebGL、WebVR、Web Audio を使って 3D ゲームを構築するための機能がそろった JavaScript フレームワークです。
テーブルを展開する
作成するゲームの種類と、ゲームの構築に使うツールとグラフィックス テクノロジが決まったら、すぐに設計とプロトタイプを開始できます。 ゲームの中核となるのはユニバーサル Windows プラットフォーム アプリなので、そこから始めます。
ユニバーサル Windows プラットフォーム (UWP) は、Windows デバイス間で共通の API プラットフォームを提供します。 UWP を対象とするゲームは、すべてのデバイスに共通の WinRT API を呼び出すことができます。 UWP により保証された API 層が提供されるため、あらゆる Windows デバイスにインストールできる 1 つのアプリ パッケージを作成することもできます。 また、必要に応じて、ゲームが実行されるデバイスに固有の API (Win32 や .NET のいくつかの従来の Windows API を含む) をゲームから呼び出すこともできます。
ユニバーサル Windows プラットフォーム アプリについて詳しく説明した優れたガイドを次に示します。このプラットフォームを理解するために読むことをお勧めします。
テーブルを展開する
ユニバーサル Windows プラットフォーム アプリを開発する設定と準備は、短時間で簡単に完了できます。 次のガイドでは、プロセスを段階的に説明します。
テーブルを展開する
UWP プログラミングのまったくの初心者であり、ゲームで XAML を使うことを検討している場合 (「グラフィックス テクノロジとプログラミング言語の選択 」を参照) は、まずまったくの初心者向けの Windows 10 開発動画シリーズをご覧になることをお勧めします。
テーブルを展開する
テーブルを展開する
デスクトップと UWP コード間の相互運用に役立つリンクをいくつか紹介します。
テーブルを展開する
プロセス ライフタイム管理 (アプリのライフサイクル) は、ユニバーサル Windows プラットフォーム アプリが遷移する可能性があるさまざまなアクティブ化状態を表します。 ゲームはアクティブ化、中断、再開、または終了されることがあり、さまざまな方法でこれらの状態を遷移する可能性があります。
テーブルを展開する
優れたゲームは、インスピレーションを受けた設計から始まります。
ゲームは、共通のユーザー インターフェイス要素と設計原則をアプリと共有していますが、ユーザー エクスペリエンスの外観、機能、設計目標が独特であることがよくあります。 ゲームはテスト済みの UX をいつ使う必要があるか、いつ分岐して刷新する必要があるか、という両方の側面に思慮深い設計を適用すると、ゲームは成功します。 ゲーム用に選んだプレゼンテーション テクノロジ (DirectX、XAML、HTML5、またはその 3 つの組み合わせ) は実装の詳細に影響しますが、適用する設計原則はその選択とはほとんど関係ありません。
UX 設計とは別に、レベル設計、ペーシング、ワールド設計、その他の側面などのゲームプレイ設計は、それ自体が 1 つの芸術形式です。これはあなたとあなたのチーム次第であり、この開発ガイドでは取り上げません。
テーブルを展開する
ゲーム内で一貫した色のガイドラインに従うと、美観が向上し、ナビゲーションが容易になり、メニューと HUD の機能をプレーヤーに知らせる強力なツールになります。 警告、ダメージ、XP、成績などのゲーム要素の色が一貫していると、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 のサポートをゲームまたはストリーミング メディア アプリケーションに追加できます。
テーブルを展開する
Direct3D 12 の新着情報と相違点 (Direct3D 11 との比較)、Direct3D 12 を使ってプログラミングを始める方法について説明します。
テーブルを展開する
DirectX ゲーム開発のガイドとリファレンス。
テーブルを展開する
DirectX ツール キット、DirectX テクスチャ処理ライブラリ、DirectXMesh ジオメトリ処理ライブラリ、UVAtlas ライブラリ、DirectXMath ライブラリには、DirectX 開発用のテクスチャ、メッシュ、スプライト、その他のユーティリティ機能とヘルパー クラスが用意されています。 これらのライブラリは、開発の時間と労力を減らすために役立ちます。
テーブルを展開する
外部のパートナーによって作成された補足の DirectX ドキュメントを次に示します。
テーブルを展開する
この段階で制作スタジオの準備が整ったら、チーム全体に作業を分散して制作サイクルに移行します。 プロトタイプを磨き、リファクタリングし、拡張して、完全なゲームを作り上げます。
タイルとは、[スタート] メニュー上でゲームを表すものです。 現在ゲームをプレイしていなくても、タイルと通知を使ってプレーヤーの興味を引くことができます。
テーブルを展開する
アドオン (アプリ内製品) は、プレイヤーがゲーム内で購入できる補助アイテムです。 アドオンには、ゲームのレベル、アイテム、プレーヤーを楽しませるその他のものが含まれます。 適切に使用すると、アドオンはゲームのエクスペリエンスを向上させると共に、収益の増加につながります。 パートナー センターでゲームのアドオンを定義して公開し、ゲームのコードでアプリ内購入を有効にします。
テーブルを展開する
パフォーマンスを最適化するには、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 のスパイクを監視し、ゲームのクラッシュ時にダンプ ファイルを生成するコマンドライン ユーティリティです。
テーブルを展開する
DirectX の開発には微妙で複雑な部分があります。 運用環境で、DirectX エンジンの詳細を掘り下げる必要がある、または難しいパフォーマンスの問題をデバッグする必要があるという問題が生じたら、このセクションのリソースと情報が役に立ちます。
テーブルを展開する
ハイ ダイナミック レンジ (HDR) コンテンツ開発
HDR のフル カラー機能を使うゲーム コンテンツを構築します。
テーブルを展開する
Windows プラットフォーム用の多言語対応ゲームを開発し、Microsoft の有力製品に組み込まれている地域と言語の機能について説明します。
テーブルを展開する
次のガイドと情報は、公開と申請のプロセスをできるだけスムーズに進めるために役立ちます。
パートナー センター を使用して、ゲーム パッケージの公開と管理を行います。
テーブルを展開する
テーブルを展開する
認定の問題によってゲームのリリースが遅れないようにします。 ここでは、注意すべきポリシーと一般的な認定の問題について説明します。
テーブルを展開する
Store マニフェスト (StoreManifest.xml)
Store マニフェスト (StoreManifest.xml
) は、アプリ パッケージに含めることができる省略可能な構成ファイルです。 Store マニフェストには、AppxManifest.xml
ファイルに含まれていないその他の機能が用意されています。 たとえば、ターゲット デバイスが指定された DirectX の最小機能レベルまたは指定された最小システム メモリの条件を満たしていない場合に、Store マニフェストを使ってゲームのインストールをブロックできます。
テーブルを展開する
開発が終了し、ゲームを出荷しても、"ゲーム オーバー" というわけではありません。 バージョン 1 の開発は終了ですが、マーケットプレースでのゲームの旅は始まったばかりです。 使用状況とエラーのレポートを監視し、ユーザーのフィードバックに対応し、ゲームの更新プログラムを公開する必要があります。
テーブルを展開する
Visual Studio Application Insights
Visual Studio Application Insights には、公開したゲームのパフォーマンス、テレメトリ、使用状況の分析機能があります。 Application Insights は、リリース後のゲームの問題の検出と解決、使用状況の継続的な監視と向上、プレイヤーがゲームを操作する方法の把握に役立ちます。 Application Insights は SDK をアプリに追加することで動作し、テレメトリを Azure ポータル に送信します。
テーブルを展開する
テーブルを展開する
公開されたゲームを更新するには、バージョン番号が大きい新しいアプリ パッケージを申請します。 パッケージの申請と認定を完了すると、自動的に更新プログラムとして顧客にリリースされます。
テーブルを展開する
Xbox Live は、世界各地の何百万人ものゲーマーをつなぐ最高のゲーム ネットワークです。 開発者は、Xbox Live プレゼンス、ランキング、クラウド保存、ゲーム ハブ、クラブ、パーティー チャット、ゲーム DVR など、ゲームの対象ユーザーを組織的に拡大できる Xbox Live の機能にアクセスできます。
テーブルを展開する
Xbox Live クリエーターズ プログラムの開発者向け
テーブルを展開する
対象パートナーおよび ID@Xbox プログラムの開発者向け
テーブルを展開する
テーブルを展開する