MSFSアドオンコンテンツ用のプロジェクトの作り方
アドオンコンテンツは、MSFS SDKの「プロジェクト」として作成します。 そして「プロジェクト」をビルドすると、シミュレータに組み込むことができる「パッケージ」が完成します。 MSFS SDKの「プロジェクト」には複数の「パッケージ」を作ることができます。 そして各「パッケージ」には、複数の「アセットグループ」を組み込むことができます。 「パッケージ」とは、アドオンとして配布される単位です。 Flightsim.to などのサイトで配布されているシーナリーや航空機、空港などのアドオンは、この「パッケージ」フォルダーを圧縮したものです。 「アセットグループ」とは、パッケージに組み込まれる部品です。 「アセットグループ」の種類には、ModelLib、ArtProj、BGL、Mission、SimObjectなどがあります。 これらアセットグループの詳細については、MSFS SDKドキュメントの ASSET TYPES のページで読めます。 「パッケージ」フォルダーは、MSFSのデータ格納フォルダの中にある"Community"フォルダーにコピーすると、ゲームに読み込まれ(インストールされ)ます。 ゲーム内のマーケットプレースからダウンロード購入したアドオン「パッケージ」は、MSFSのデータ格納フォルダの中にある"Official"フォルダーに保存されます。
USING THE SDK (MSFS 2024 SDK Documentation) USING THE SDK (MSFS SDK Documentation) ASSET TYPES (MSFS 2024 SDK Documentation) ASSET TYPES (MSFS SDK Documentation)プロジェクトの構造
General Package Folder Structure FolderDescription _PackageInt開発に伴い、パッケージに加えられた変更の履歴や各種パラメーターなどの情報が記録されていきます。SDKによって生成されます。 PackageDefinitionsパッケージに組み込まれたアセットグループの情報など、パッケージの内部構造を示す情報が格納されます。SDKによって生成されます。 Packagesパッケージの完成品が格納されます。この中身を、アドオンとしてほかのユーザーに配布することができます。ビルドという操作を行うことで、SDKによって生成されます。 PackagesMetadata(??) PackageSourcesシーナリーの3Dモデルなど、パッケージを構成する元データ(アセットグループ)を保存します。開発者が準備します。 [プロジェクト名].xmlプロジェクトの基本情報が格納されます。MSFS SDKでプロジェクトを開くときは、このファイルを指定します。SDKによって生成されます。 これらの詳細については、MSFS SDKドキュメントの下記のページで読めます。 USING THE SDK (MSFS 2024 SDK Documentation) USING THE SDK (MSFS SDK Documentation)パッケージの命名規則
MSFS SDKでは、パッケージの命名規則が厳密に決められています。 あなたが開発したアドオンを、広くほかのユーザーに配布する場合は、この 命名規則 にのっとった名前を付ける必要があります。 また、パッケージ名は "-(ハイフン)"と英数字のみ が使用可能で、 128文字以内 に収める必要があります。
Basics of package naming conventions 基本規則developer - type ( - subtype ) - name-of-asset ( - variation-of-named-asset ) ( - subcontent )"developer"とは開発者(あなた)の名前です。下記の一覧表では"company(会社名)"と表現されています。 MSFS SDKでプロジェクトを作ると、自動的に付加されます。 "type"とは、アドオンのタイプを示す単語で、下記の表のように決められています。 この後ろに、アドオンの内容を示す名前を付けます。
Google Earth Decoderを使って作成するアドオンのタイプは「シーナリー」になります。 例えば開発者someoneさんが、tokyoという名前のシーナリーを配布する場合は、パッケージに"someone-scenery-tokyo"という名前を付ける必要があります。 同様に開発者someoneさんが羽田空港(RJTT)を"tokyo-international-airport"という名前で「空港」として開発する場合は、"someone-airport-RJTT-tokyo-international-airport"という名前を付ける必要があります。 命名規則の詳細については、、MSFS SDKドキュメントの下記のページで読めます。
THE PROJECT EDITOR (MSFS 2024 SDK Documentation) THE PROJECT EDITOR (MSFS SDK Documentation)パッケージ情報の設定
パッケージの情報は、Inspector画面に入力します。 これらの項目はProject Editor画面でBGLファイルを選択したときに、Inspector画面に表示されます。 これらの項目が正しく入力されていないと、パッケージの配布時に支障が出たり、 MSFS Addons Linkerツール などで変な情報が表示される場合があります。 パッケージが完成したら、配布する前にこれらの情報を入力してください。 たとえば右の図のように設定します。 Version 欄には、今回のパッケージのバージョンを設定します。 バージョン番号は3つの数字から成り、左からメジャーバージョン、マイナーバージョン、パッチバージョンです。 軽微な修正はパッチバージョンをアップします。 機能追加など行ったときはマイナーバージョンをアップします。 大幅な改造を行ったときはメジャーバージョンをアップします。 Item Name 欄には、命名規則にしたがったパッケージ名を設定します。 Item Settings 欄には、パッケージの開発会社名(この例では空白)、パッケージタイトル、開発者名などを設定します。 Content Manager Thumbnail 欄には、パッケージを表す画像をセットします。 解像度412x170ピクセルのjpeg形式の画像をセットします。 jpeg圧縮率は75%程度を指定し、画像ファイルサイズが20kbyte前後になるようにします。 枠をクリックするとファイル選択画面が開くので、セットしたいjpeg画像を指定します。
Communityフォルダが整理できるMSFS Addons Linkerの使い方プロジェクトを保存する場所
プロジェクトの開発時には、データに対する大量の読み書きが発生します。 SSD上でプロジェクトを開発すると、SSDの劣化が早まり、また書き込みが遅いとビルドに時間がかかります。 プロジェクトを保存するドライブは、MSFS SDKのインストールドライブと異なっていても構いません。 プロジェクトの開発には、SSDではなく、専用のハードディスクを準備するのがおすすめです。
頻繁にバックアップを取りましょう
リリースから4年以上が過ぎてもなおMSFS SDKの動作は不安定で、操作中にクラッシュしたり、意味不明の状況に陥ることがあります。 最悪の場合は、二度とビルドできない状況になる場合もあります。 特にアセットグループの追加と削除を繰り返すと、プロジェクトが壊れることが多いようです。 開発の区切りがつくごとにプロジェクトをフォルダーごとバックアップを取り、プロジェクトが壊れたときは元に戻せるようにしておきましょう。 なお、形状が破綻している3Dオブジェクトをシーナリーに取り込んだ場合もMSFSがクラッシュするときがあります。 オブジェクトの頂点の一部が、変な場所に移動していないかチェックしてみてください。
自作するアドオンコンテンツを広く配布したい場合
Flightsim.toというサイトでは、あなたの作成したアドオンコンテンツを、広くユーザーに配布することができます。 ただしFlightsim.toへコンテンツをアップロードするには、ファイルサイズ(圧縮後各2.5GB/圧縮前約4~5GB程度)やファイル数(最大4つ)など、数々の制約があります。 また、事前に準備しておくべきものもいくつかあります。 アドオンコンテンツを開発する前に、この手順に目を通しておくことをお勧めします。
自作したMSFSアドオンコンテンツをFlightsim.toで配布する方法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"となります。 プロジェクトの作成 Google MapでMSFSのシーナリーが作れるGoogle Earth Decoderの使い方MSFS SDKでプロジェクトを作る
シーナリーはもちろんのこと、航空機や空港、リバリー(Livery:航空機のカラーリング)など、MSFSコンテンツ用のプロジェクトはすべてMSFS SDKで作ることができます。 ここでは特にシーナリー用のプロジェクトをMSFS SDKで作る方法を紹介します。
パッケージ名の決定 ここでは仮に、開発者名を"someone"、シーナリーの名前を"tokyo"とします。 すると、上に示した命名規則にのっとり、パッケージ名は"someone-scenery-tokyo"となります。 プロジェクトの作成MSFSを起動し、開発者メニューで[File]-[New project]を選びます。 このようなウインドウが開きます。 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"という名前のプロジェクトフォルダーが生成されます。 次にこのようなウィザード画面が開きます。 今回作成するのはパッケージなので、画面の一番左にある[ Package ]ボタンをクリックします。 そして画面右下の[Next]をクリックします。 なお、Packs(複数の作成済みパッケージをセットにして配布する)やBundles(すでにマーケットプレースで公開済みのパッケージをセットにして販売する)を作るときは[ Bundle/Pack ]を選びます。 この場合は、一つのプロジェクトに複数のパッケージを含むことになります。 また、PacksやBundlesを新しいプロジェクトとして作成するときには、今回作る新しいプロジェクトに、既存のパッケージを追加することができます。この場合は[ Import Item ]を選びます。 [参考] 開発者メニューを操作していると、次々と新しいウインドウが開いていきます。 操作しやすいように、適宜ウインドウを並べ替えながら作業を進めてください。 あるいは各ウインドウの左上、ウインドウ名の左にある「▼」マークをクリックすると、この図のようにウインドウを折り畳んでおくことができます。 つづいてこのような画面になります。 航空機を作るときは[Aircraft]、空港を作るときは[Airport]、炎や煙などの視覚効果を作るときは[Visual effect]ボタンをクリックします。 シーナリーなど、その他のタイプのアドオンを作る場合は、画面一番右の[Custom]ボタンをクリックします。 [Custom]をクリックすると、その下に次のような項目が現れます。 Display title 欄には、このパッケージの表示名を指定します。 これはMSFSのマーケットプレイスや、ツール"MSFS Addons Linker"などにおいて、あなたのパッケージのタイトルとして表示されます。 図の例にあるように、だれが見てもすぐにパッケージの中身がわかるようなタイトルを入力してください。 Company name 欄には、制作会社名を入れます。個人開発者の場合は、あなたの名前やペンネームなどを指定します。 Package name 欄には、命名規則にのっとって決めたパッケージ名"scenery-tokyo"を指定します。 Content-Type 欄のドロップダウンリストで、パッケージのタイプを指定します。 今回は"SCENARY"を指定します。 そして画面右下の[Next]をクリックします。 つづいてアセットグループの指定画面になります。 パッケージには最低一つのアセットグループが必要です。 まずは最も基本的な情報を保存する"BGL"タイプのアセットグループを作ります。 Asset group name 欄には、アセットグループの名前を指定します。 Google Earth Decoderを使うと、"scene"というBGLアセットグループが生成されます。 今回は、これに合わせて"scene"と入力することにします。 Asset type 欄には、アセットグループのタイプを指定します。 ここでは"BGL"を選択します。 そして画面下の[Create]をクリックします。 MSFSの画面には"Project Editor"が表示されます。 その中には、青い文字で、このプロジェクトに含まれているパッケージ名の一覧が表示されます。 図の例では、"someone-scenery-tokyo"というパッケージ1つだけが含まれています。 パッケージ名をクリックすると、そこに含まれるアセットグループの一覧が表示されます。 図の例では、"scene"という名前の"BGL"タイプのアセットグループ1つだけが含まれています。 なお、この画面の下にある[Add Item]ボタンを使うと、新たなパッケージを追加することができます。 また[Import Item]ボタンを使うと、既存のパッケージを追加(Bundle/Pack)することができます。 以上でシーナリープロジェクトの作成は完了しました。 Project Editorの[Project]-[Save]を選んでプロジェクトを保存し、[Project]-[Close]を選んでプロジェクトを閉じ、MSFSを終了します。 プロジェクト保存フォルダーの下には、このようなフォルダーが生成されます。 この中にある"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の使い方Google Earth Decoderを起動して、"PackageSources"フォルダーを出力先に指定して、マップデーターをダウンロードします。 すると"PackageSources"フォルダーの下に"modelLib"と"scene"という2つのアセットグループが生成されます。 これらをMSFSプロジェクトに組み込みます。 なお、この図で見えている"Scenery"というフォルダーは、SDKでプロジェクトにBGLアセットグループを追加したときに、SDKによって自動的に生成されたものです。 MSFSを起動し、開発者メニューで[File]-[Open project]を選びます。 またはこの下の[Open recent]を選ぶと、最近開いたプロジェクトの一覧から選択することも可能です。 するとファイル選択ダイアログボックスが表示されるので、プロジェクトフォルダーの直下にある"[パッケージ名].xml"ファイルを選択します。 なお、一つのプロジェクトに複数のパッケージを作ると、ここに複数の"[パッケージ名].xml"ファイルが生成されます。 プロジェクトが読み込まれて、"Project Editor"が表示されます。 青い文字のパッケージ名("someone-scenery-tokyo")をクリックし、アセットグループの一覧を表示させます。 そしてプロジェクトの新規作成時に追加した、"scene"という名前の"BGL"アセットグループを選択します。 アセットグループ"scene"の設定を変更します。 Project Editorのメニューから[View]-[Inspector]を選びます。 するとInspectorが開き、アセットグループ"scene"の詳細情報が表示されます。 ソースフォルダー(AssetDir欄)が、SDKによって自動生成されたフォルダーとなっているので、これをGoogle Earth Decoderが生成した"scene"フォルダーに変更します。 "AssetDir"と書かれている場所の左にある[. ]をクリックすると、フォルダー選択ダイアログ画面が表示されます。 "PackageSources"フォルダー直下にある、Google Earth Decoderが生成した"scene"を選びます。 このようになりました。 "OutputDir"については特に変更は不要です。 あなたのパッケージの設計に合わせて、お好みで修正してください。 一般に配布されているGoogle Earthから生成されたシーナリーアドオンでは、ここには"scenery/world/scenery"が指定されることが多いようです。 つづいてプロジェクトに、3Dマップデーターが保存されている"modelLib"を追加します。 Project Editorの画面で、青い文字のパッケージ名("someone-scenery-tokyo")をクリックします。 するとInspectorの画面が、パッケージ全体情報に切り替わります。 画面下部のアセットグループ一覧にある[Add asset group]ボタンをクリックします。 もしInspectorを閉じてしまった場合は、Project Editorの画面で[View]-[Inspector]を選んでください。 追加するアセットグループのタイプは[Custom]を選びます。 そして画面下の[Next]をクリックします。 つづいて追加するアセットグループの情報を入力します。 Asset group name 欄には、アセットグループの名前を指定します。 Google Earth Decoderを使うと、"modelLib"というModelLibアセットグループが生成されます。 今回は、これに合わせて"modelLib"と入力することにします。 Asset type 欄には、アセットグループのタイプを指定します。 ここでは"ModelLib"を選択します。 そして画面下の[Create]をクリックします。 するとパッケージに"modelLib"という名前の"ModelLib"アセットグループが追加されました。 アセットグループ"modelLib"の設定を変更します。 "scene BGL"の設定を変更したときと同じように、Project Editorの画面で"modelLib"をクリックし、Inspectorの画面でソースフォルダー(AssetDir)を変更します。 "OutputDir"については特に変更は不要です。 あなたのパッケージの設計に合わせて、お好みで修正してください。 一般に配布されているGoogle Earthから生成されたシーナリーアドオンでは、ここには"scenery/global/scenery"が指定されることが多いようです。 以上でGoogle Earth Decoder向けのプロジェクトの作成は完了です。 Project Editorの画面で[Project]-[Save]を選んで、プロジェクトを保存しましょう。 つづいて プロジェクトのビルド作業 に進みましょう。
プロジェクトをビルドするPackageSourcesフォルダーの下にある"Scenery"フォルダーは、MSFS SDKによって自動生成されたアセットグループのフォルダーです。 Google Earth Decoderで生成したアセットグループを使用する場合は、このフォルダーは使用しないので、削除しておきましょう。
プロジェクトをビルドする
開発者メニューで[File]-[Open project]を選び、プロジェクトフォルダーの直下にある"[パッケージ名].xml"ファイルを選択します。 するとプロジェクトがSDKに読み込まれます。 初めてビルドするときは、事前にプロジェクトの保存が必須です。 Project Editorの画面で[Project]-[Save]をクリックしてください。 Project Editorの画面で[Build All]ボタンをクリックすると、ビルドが始まります。 なお、ここで[Clean All]ボタンをクリックすると"Packages"フォルダの下にある古いパッケージを削除することができます。 しかし、同じプロジェクト内に、Blendarなどから取り込んだ3DモデルのmodelLibが含まれていると、[Clean All]した時にプロジェクトが壊れる場合があります。 [Clean All]ボタンを使う場合にはプロジェクトのバックアップを取っておいてください。 ビルドの状況は、Windowsのタスクマネージャーで確認できます。 ビルド中はCPU使用率が100%に張り付き、プロジェクトを作成したディスクの使用率も上昇します。 ビルドにかかる時間は、Google Earthから切り取った領域の広さとLODレベルによって変わります。 ビルドが終わるとSDKのConsole画面が開き、結果が表示されます。 もし画面左上のErrorsが0ではなかったときは、画面を上に向かってスクロールして、エラー内容を確認して対処してください。 ここで発生するエラーの多くは、SDKが認識しているアセットグループの格納パス/フォルダー名と、実際の格納パス/フォルダー名の不一致です。 PackageDefinitionsフォルダーに格納されている"[パッケージ名].xml"をテキストエディタなどで開いて、""タグの中身と、実際の格納パス/フォルダー名が一致していることを確認してください。 ビルドに成功すると、Packagesフォルダーの下に、パッケージ名のフォルダー"someone-scenery-tokyo"ができています。 これをMSFSのデータ格納フォルダの中にある"Community"フォルダーにコピーすれば、あなたのMSFSにインストールされます。 パッケージを配布するときは、このフォルダーを圧縮して、配布サイトなどにアップロードします。 プロジェクトフォルダの[Packages]-[(パッケージ名)]フォルダの下に、"layout.json"と"manifest.json"が生成されていない(または更新日時が古い)場合は、ビルドに失敗しています。 データ量が多すぎる場合には、ビルドが途中でクラッシュしてしまうことがあります。 シーナリーの範囲を狭めるなどしてみてください。