MSFSアドオンコンテンツ用のプロジェクトの作り方
ユーザーは、MSFS SDKを使って、航空機や空港、シーナリーやリバリー(Livery:航空機のカラーリング)など、マイクロソフトフライトシミュレーター用のアドオンコンテンツを作ることができます。 これは、SDKによって定義される「プロジェクト」というフォルダー構造に格納されます。ここではMSFS SDKのプロジェクトの解説と、その作り方を解説します。
Show this page in English
もくじ
各種ツール類のインストール
マイクロソフトフライトシミュレーター用のアドオンコンテンツを作るには、まず各種ツール類をパソコンにインストールしてください。 下記のページをご参照ください。プロジェクトとパッケージとアセットグループ
アドオンコンテンツは、MSFS SDKの「プロジェクト」として作成します。 そして「プロジェクト」をビルドすると、シミュレータに組み込むことができる「パッケージ」が完成します。MSFS SDKの「プロジェクト」には複数の「パッケージ」を作ることができます。 そして各「パッケージ」には、複数の「アセットグループ」を組み込むことができます。
「パッケージ」とは、アドオンとして配布される単位です。 flightsim.to などのサイトで配布されているシーナリーや航空機、空港などのアドオンは、この「パッケージ」フォルダーを圧縮したものです。
「アセットグループ」とは、パッケージに組み込まれる部品です。 「アセットグループ」の種類には、ModelLib、ArtProj、BGL、Mission、SimObjectなどがあります。 これらアセットグループの詳細については、MSFS SDKドキュメントの ASSET TYPES のページで読めます。
「パッケージ」フォルダーは、MSFSのデータ格納フォルダの中にある"Community"フォルダーにコピーすると、ゲームに読み込まれ(インストールされ)ます。 ゲーム内のマーケットプレースからダウンロード購入したアドオン「パッケージ」は、MSFSのデータ格納フォルダの中にある"Official"フォルダーに保存されます。
USING THE SDK (MSFS SDK docs)
ASSET TYPES (MSFS SDK docs)
プロジェクトの構造
各プロジェクトフォルダーの中には、次のようなフォルダーが生成されます。 開発者が、PackageSourcesフォルダーにデータ(部品)を準備して、ビルドという操作を行うことでパッケージが生成されます。Folder | Description |
---|---|
_PackageInt | 開発に伴い、パッケージに加えられた変更の履歴や各種パラメーターなどの情報が記録されていきます。SDKによって生成されます。 |
PackageDefinitions | パッケージに組み込まれたアセットグループの情報など、パッケージの内部構造を示す情報が格納されます。SDKによって生成されます。 |
Packages | パッケージの完成品が格納されます。この中身を、アドオンとしてほかのユーザーに配布することができます。ビルドという操作を行うことで、SDKによって生成されます。 |
PackagesMetadata | (??) |
PackageSources | シーナリーの3Dモデルなど、パッケージを構成する元データ(アセットグループ)を保存します。開発者が準備します。 |
[プロジェクト名].xml | プロジェクトの基本情報が格納されます。MSFS SDKでプロジェクトを開くときは、このファイルを指定します。SDKによって生成されます。 |
USING THE SDK (MSFS SDK docs)
パッケージの命名規則
MSFS SDKでは、パッケージの命名規則が厳密に決められています。 あなたが開発したアドオンを、広くほかのユーザーに配布する場合は、この命名規則にのっとった名前を付ける必要があります。 また、パッケージ名は"-(ハイフン)"と英数字のみが使用可能で、128文字以内に収める必要があります。基本規則 | developer - type ( - subtype ) - name-of-asset ( - variation-of-named-asset ) ( - subcontent ) |
---|
"type"とは、アドオンのタイプを示す単語で、下記の表のように決められています。
この後ろに、アドオンの内容を示す名前を付けます。
Package Type | Naming conventions |
---|---|
空港(Airports) | <company>-airport-<ICAO>-<airport_name> |
航空機(Aircraft) | <company>-aircraft-<aircraft_name> |
航空機のペイント(Aircraft Liveries) | <company>-aircraft-<aircraft_name>-livery-<livery_name> |
着陸チャレンジ(Landing Challenges) | <company>-landingchalenge-<ICAO>-<name> |
ディスカバリーミッション | <company>-discovery-<name> |
ブッシュトリップ | <company>-bushtrip-<name> |
モデルライブラリ | <company>-modellib-<name> |
動くオブジェクト(SimObjects) | <company>-simobjects-<type> |
シーナリー | <company>-scenery-<name> |
例えば開発者someoneさんが、tokyoという名前のシーナリーを配布する場合は、パッケージに"someone-scenery-tokyo"という名前を付ける必要があります。 同様に開発者someoneさんが羽田空港(RJTT)を"tokyo-international-airport"という名前で「空港」として開発する場合は、"someone-airport-RJTT-tokyo-international-airport"という名前を付ける必要があります。
命名規則の詳細については、MSFS SDKドキュメントの THE PROJECT EDITOR のページで読めます。
THE PROJECT EDITOR (MSFS SDK docs)
パッケージ情報の設定

たとえば右の図のように設定します。
Version欄には、今回のパッケージのバージョンを設定します。
Item Name欄には、命名規則にしたがったパッケージ名を設定します。
Item Settings欄には、パッケージの開発会社名(この例では空白)、パッケージタイトル、開発者名などを設定します。
Content Manager Thumbnail欄には、パッケージを表す画像をセットします。 解像度412x170ピクセルのjpeg形式の画像をセットします。 枠をクリックするとファイル選択画面が開くので、セットしたいjpeg画像を指定します。
Communityフォルダが整理できるMSFS Addons Linkerの使い方
プロジェクトを保存する場所
プロジェクトの開発時には、データに対する大量の読み書きが発生します。 SSD上でプロジェクトを開発すると、SSDの劣化が早まり、また書き込みが遅いとビルドに時間がかかります。プロジェクトを保存するドライブは、MSFS SDKのインストールドライブと異なっていても構いません。 プロジェクトの開発には、SSDではなく、専用のハードディスクを準備するのがおすすめです。
頻繁にバックアップを取りましょう
リリースから4年以上が過ぎてもなおMSFS SDKの動作は不安定で、操作中にクラッシュしたり、意味不明の状況に陥ることがあります。 最悪の場合は、二度とビルドできない状況になる場合もあります。 特にアセットグループの追加と削除を繰り返すと、プロジェクトが壊れることが多いようです。 開発の区切りがつくごとにプロジェクトをフォルダーごとバックアップを取り、プロジェクトが壊れたときは元に戻せるようにしておきましょう。なお、形状が破綻しているオブジェクトをシーナリーに取り込んだ場合もMSFSがクラッシュするときがあります。 オブジェクトの頂点の一部が、変な場所に移動していないかチェックしてみてください。
Blenderのプラグイン(GEDOT)でプロジェクトを作る
まずは、 Google Earth Decoder(Google Earthの3DマップをMSFS用に変換するツール) のためのシーナリープロジェクトを作る手順を紹介します。 これにはBlenderのプラグイン「Google Earth Decoder Optimization Tools (GEDOT)」を使います。プラグインのインストール
「Google Earth Decoder Optimization Tools (GEDOT)」のインストール方法については、下記をご覧ください。
MSFS SDK/Blender/プラグイン/ツールのダウンロードとインストールの方法
パッケージ名の決定
ここでは仮に、開発者名を"someone"、シーナリーの名前を"tokyo"とします。 すると、上に示した命名規則にのっとり、パッケージ名は"someone-scenery-tokyo"となります。
プロジェクトの作成


画面上部中央にあるPath of the MSFS projects...と書かれた部分をクリックすると、フォルダー選択画面が開きます。 プロジェクトを保存する場所を指定します。
Name of the project to initialize欄には、命名規則にのっとって決めたパッケージ名(この例では"scenery-tokyo")を指定します。
Author of the project欄には、あなたの名前/ペンネームなど(この例では"someone")を指定します。
赤い[Initialize a new MSFS project scenery...]ボタンをクリックすると、新しいプロジェクトフォルダーが生成されます。
なお、青い[OK]を押すと、このダイアログボックスが閉じます。

完了したら、この画面は最小化しておきましょう。 なお、この画面を[X]ボタンで閉じると、Blenderが終了します。

この中にある"PackageSources"フォルダーを、Google Earth Decoderの出力先として指定します。
MSFS SDKでプロジェクトを作る
シーナリーはもちろんのこと、航空機や空港、リバリー(Livery:航空機のカラーリング)など、MSFSコンテンツ用のプロジェクトはすべてMSFS SDKで作ることができます。 ここでは特にシーナリー用のプロジェクトを作る方法を紹介します。パッケージ名の決定
ここでは仮に、開発者名を"someone"、シーナリーの名前を"tokyo"とします。 すると、上に示した命名規則にのっとり、パッケージ名は"someone-scenery-tokyo"となります。
プロジェクトの作成


Projects Folder欄には、プロジェクトを保存するフォルダーを指定します。 大量のデータを何度も読み書きするので、SSDではなく、大容量のハードディスクを使うのがおすすめです。
Project Name欄には、開発者名の部分を除いたプロジェクト名を指定します。今回の例では"scenery-tokyo"となります。
Default creator name欄には、開発者の名前を入れます。あなたの名前、ペンネームなどを指定します。今回の例では"someone"となります。
Default company name欄には、制作会社名を入れます。個人開発者の場合はDefault creator name欄と同じで良いでしょう。今回の例では"someone"となります。
そして画面右下の[Create new project]ボタンをクリックします。 するとProjects Folder欄で指定したフォルダーの下に、"scenery-tokyo"という名前のプロジェクトフォルダーが生成されます。

なお、Packs(複数の作成済みパッケージをセットにして配布する)やBundles(すでにマーケットプレースで公開済みのパッケージをセットにして販売する)を作るときは[Bundle/Pack]を選びます。 この場合は、一つのプロジェクトに複数のパッケージを含むことになります。
また、PacksやBundlesを新しいプロジェクトとして作成するときには、今回作る新しいプロジェクトに、既存のパッケージを追加することができます。この場合は[Import Item]を選びます。

開発者メニューを操作していると、次々と新しいウインドウが開いていきます。 操作しやすいように、適宜ウインドウを並べ替えながら作業を進めてください。
あるいは各ウインドウの左上、ウインドウ名の左にある「▼」マークをクリックすると、この図のようにウインドウを折り畳んでおくことができます。

[Custom]をクリックすると、その下に次のような項目が現れます。
Display title欄には、このパッケージの表示名を指定します。 これはMSFSのマーケットプレイスや、ツール"MSFS Addons Linker"などにおいて、あなたのパッケージのタイトルとして表示されます。 図の例にあるように、だれが見てもすぐにパッケージの中身がわかるようなタイトルを入力してください。
Company name欄には、制作会社名を入れます。個人開発者の場合は、あなたの名前やペンネームなどを指定します。
Package name欄には、命名規則にのっとって決めたパッケージ名"scenery-tokyo"を指定します。
Content-Type欄のドロップダウンリストで、パッケージのタイプを指定します。 今回は"SCENARY"を指定します。
そして画面右下の[Next]をクリックします。

Asset group name欄には、アセットグループの名前を指定します。 Google Earth Decoderを使うと、"scene"というBGLアセットグループが生成されます。 今回は、これに合わせて"scene"と入力することにします。
Asset type欄には、アセットグループのタイプを指定します。 ここでは"BGL"を選択します。
そして画面下の[Create]をクリックします。

パッケージ名をクリックすると、そこに含まれるアセットグループの一覧が表示されます。 図の例では、"scene"という名前の"BGL"タイプのアセットグループ1つだけが含まれています。
なお、この画面の下にある[Add Item]ボタンを使うと、新たなパッケージを追加することができます。 また[Import Item]ボタンを使うと、既存のパッケージを追加(Bundle/Pack)することができます。


この中にある"PackageSources"フォルダーに、シーナリーに取り込む3Dモデルを格納します。 Google Earth Decoderを使う時は、このフォルダーを出力先に指定します。
3Dモデルをプロジェクトに取り込む方法については BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方 のページをご覧ください。
BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方
Google Earth Decoder使用後の設定
ここからは、MSFS SDKで作成したプロジェクトに、Google Earth Decoderで生成した3Dマップデータを組み込む方法を解説します。
Google Earth Decoderの使い方については Google MapでMSFSのシーナリーが作れるGoogle Earth Decoderの使い方 のページをご覧ください。
Google MapでMSFSのシーナリーが作れるGoogle Earth Decoderの使い方


なお、この図で見えている"Scenery"というフォルダーは、SDKでプロジェクトにBGLアセットグループを追加したときに、SDKによって自動的に生成されたものです。

またはこの下の[Open recent]を選ぶと、最近開いたプロジェクトの一覧から選択することも可能です。

なお、一つのプロジェクトに複数のパッケージを作ると、ここに複数の"[パッケージ名].xml"ファイルが生成されます。





"OutputDir"については特に変更は不要です。 あなたのパッケージの設計に合わせて、お好みで修正してください。 一般に配布されているGoogle Earthから生成されたシーナリーアドオンでは、ここには"scenery/world/scenery"が指定されることが多いようです。


もしInspectorを閉じてしまった場合は、Project Editorの画面で[View]-[Inspector]を選んでください。


Asset group name欄には、アセットグループの名前を指定します。 Google Earth Decoderを使うと、"modelLib"というModelLibアセットグループが生成されます。 今回は、これに合わせて"modelLib"と入力することにします。
Asset type欄には、アセットグループのタイプを指定します。 ここでは"ModelLib"を選択します。
そして画面下の[Create]をクリックします。


"OutputDir"については特に変更は不要です。 あなたのパッケージの設計に合わせて、お好みで修正してください。 一般に配布されているGoogle Earthから生成されたシーナリーアドオンでは、ここには"scenery/global/scenery"が指定されることが多いようです。

プロジェクトをビルドする

プロジェクトをビルドする

初めてビルドするときは、事前にプロジェクトの保存が必須です。 Project Editorの画面で[Project]-[Save]をクリックしてください。
Project Editorの画面で[Clean All]ボタンをクリックすると、"Packages"フォルダの下にある古いパッケージが削除されます。 つづいて[Build All]ボタンをクリックすると、ビルドが始まります。

ビルドにかかる時間は、Google Earthから切り取った領域の広さとLODレベルによって変わります。

ここで発生するエラーの多くは、SDKが認識しているアセットグループの格納パス/フォルダー名と、実際の格納パス/フォルダー名の不一致です。 PackageDefinitionsフォルダーに格納されている"[パッケージ名].xml"をテキストエディタなどで開いて、"<AssetDir>"タグの中身と、実際の格納パス/フォルダー名が一致していることを確認してください。

プロジェクトフォルダの[Packages]-[(パッケージ名)]フォルダの下に、"layout.json"と"manifest.json"が生成されていない場合は、ビルドに失敗しています。 データ量が多すぎる場合には、ビルドが途中でクラッシュしてしまうことがあります。 シーナリーの範囲を狭めるなどしてみてください。