MSFS SDKのプロジェクトの作り方/Google Earth Decoderのためのプロジェクトを作る
ユーザーは、MSFS SDKを使って、マイクロソフトフライトシミュレーター用のアドオンコンテンツを作ることができます。 これは、SDKによって定義される「プロジェクト」というフォルダー構造に格納されます。ここではMSFS SDKのプロジェクトの解説と、Google Earth Decoder(Google Earthの3DマップをMSFS用に変換するツール)のためのプロジェクトを作る方法を解説します。
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)
プロジェクトの構造
各プロジェクトフォルダーの中には、次のようなフォルダーが生成されます。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"という名前を付ける必要があります。
命名規則の詳細については、MSFS SDKドキュメントの THE PROJECT EDITOR のページで読めます。
THE PROJECT EDITOR (MSFS SDK docs)
プロジェクトを保存する場所
プロジェクトの開発時には、データに対する大量の読み書きが発生します。 SSD上でプロジェクトを開発すると、SSDの劣化が早まり、また書き込みが遅いとビルドに時間がかかります。プロジェクトを保存するドライブは、MSFS SDKのインストールドライブと異なっていても構いません。 プロジェクトの開発には、SSDではなく、専用のハードディスクを準備するのがおすすめです。
Blenderのプラグイン(GEDOT)でプロジェクトを作る
例として、Google Earth Decoder(Google Earthの3DマップをMSFS用に変換するツール)のためのシーナリープロジェクトを作る手順を紹介します。 これには、MSFS SDKで作る方法と、Blenderプラグインで作る方法があります。 まずは、Blenderのプラグイン「Google Earth Decoder Optimization Tools (GEDOT)」を使って、Google Earth Decoderのためのシーナリープロジェクトを作成する方法を解説します。プラグインのインストール
「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でプロジェクトを作る
ここでは、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欄には、このパッケージの表示名を指定します。 これはマーケットプレイスなどで配布するときのタイトルとして表示されます。
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)することができます。
Google Earth Decoder使用後の設定
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"が生成されていない場合は、ビルドに失敗しています。 データ量が多すぎる場合には、ビルドが途中でクラッシュしてしまうことがあります。 シーナリーの範囲を狭めるなどしてみてください。