General build process and precedence/dependencies?

I’m somewhat new to building scenery in MSFS2020, and have had some challenges in using the various online tutorials. Each 10 minute YT tutorial seems to translates to an hour of frustration and backtracking to get basic things working. Some of it is due to changes in the SDK, but most likely to be me making assumptions about what is going on under the hood.

In broad terms, can anyone speak with authority on the overall build process and dependencies?

If I create a new scenery project and save the scenery to a source project directory, I see that in the same way as editing and saving source code. The build button, I see that as compiling source code - look for no errors, etc - into a binary package. Copying the package to the community directory, I see that as deploying my binaries.

HOWEVER if I add a custom blender model to my package externally and rebuild the package, I don’t see the model in my objects list - do I have to deploy the new package to community folder AS WELL in order for the new model to appear?

It’s a little confusing about what the editor is actually looking at and when, e.g. local source, local package, community package, default scenery… does anyone know what the actual dependencies or orders or precedence are?

Hi Gypsymoth, my little experimental projects also import Blender data. I’ll give you a sneak preview of a Tutorial I am creating for the scenery editor.

To make sure your Blender work is suitable for use in MSFS, install the appropriate Blender glTF 2.0 addin (Khronos/Asobo tools for MSFS)

…in the Blender Export dialog, you will export to glTF 2.0 for MSFS (lowest choice). Check “GenerateAppend”, fillin your object name and check “Create Guid”. Set include the currently selected object(s). Make sure you have an object selected, else your mesh will be empty.

As a result of the Blender export, you will get at least three files. A glTF, a BIN, a XML. If you have used textures in Blender, make sure you copy the PNG’s seperately (see below)

The main path structure for my project is copied from the SimpleScenery example in the SDK:

SceneryProject
A “binary compile” takes place on the Project Build stage. Textures of type jpg, png are translated into DDS files and your Khronos gltf (json) meshes are translated into a binary .BLG file. When you are not sure if your project part has been compiled or not, check if new files created in Packages\

The PackageSources path is the only path you’ll have to actually fill… you find 2 paths, that is scene and modellib.

SceneryProject1

Forget scene for now. In scene\objects.xml a file is placed by the sim, that contains the position of your objects. You won’t have anything to do manually with that.

Your actual scenery project is in \modellib, mine looks as follows now:

My object under test is e.g. in \texturecube10. These are the files from Blender (bin, gltf and xml) except the textures, these will be placed in …\texture. In my projects, I use a shared …\texture, if you don’t fillin the target texture directory in Blender, you will get the files together.

SceneryProject5

Now go to the sim… switch on developer mode AND FIRST load the airport where you want to put your objects. Then

  • menu SDK/Open Project

Open your project (in above case: “SceneryProject.xml”) and click Window/Console so you can see progress. Now build your project, by clicking “Build”. In the Console, you will see some red lines. At this point, clear the console… and build your project again. Then it should work (0 errors) else there is really something wrong with your blender project.

In the compile stage of Project Editor, the sim has done all binaries (BLG and DDS files) and everything is set up to load your scenery. At this point, click…

  • Tools / Scenery Editor.

And then click the Load Assets Group button. And wait. Note: this wait is the most important beginners error ! People open View Objects and expect their objects to be searchable right away, but they are not. You have to wait until the scenery has been loaded. To see that, open View Objects and just watch… at some point, you will see other objects appear… and then you can type your object name in the Filter box. In this case that would be “texturebox10”. If you start typing before that point, it is lost and you’ll have to start the dialog again.

When you see your object was found in the little list, select it and then “Click once to place”, use your mouse to put the object and click left to fix it somewhere. Mind that this allows repeating… a little confusing, when you have only 1 object to place. Go to Click once to place again, to switch it offf. Then you can move the object with the SDK options. Key W to move, key E to turn the object.

A few pitfalls: if you don’t see your object, first check the Console if there was a compile error for your project. Build again, reload the project and build again. Then click “Load Assets Group” again. If still nothing appears, check the files compiled. Where did you move your files after creating them with Blender? I always make a new directory with the object under modelLib.

2 Likes

@ArcanePython931 Thank you so much - I had about 90% of that, but that missing 10% is absolutely invaluable!!

So the deploy to community after building is NOT required for my Blender object to appear in the object list - it’s a matter of a) waiting and b) also being aware that the list is not alphabetical! My blender object appeared right at the bottom of the objects list… :roll_eyes:

Glad to be of help.

Export option gives a nice .ZIP … your actual “binary” is there ! and it can be deployed in Community so others can install the ZIP and see it too, that’s the beauty of this system. But export is not needed in a session.

So thanks. I forgot one important thing about Export and Community, and how the edit affects the current session of MSFS.

Clicking “update scenery” button in scenery editor and then building your project makes your scenery permanent for the current project and your session of the simulator. You can leave SDK mode and fly around your scenery, without need to have it in \Community. Only thing is… scenery will be gone when you restart the game. If you want it permanently, unpack your zip in your \Community directory. I always remove my Community version when I proceed on a new version, but you’ll have to decide if you need that. You can also start a new project, with new names.

1 Like

So I don’t have to keep restarting MSFS2020 or the flight, I can just hit “update scenery” from within the scenery editor until I’m happy with it and THEN do the build/deploy to my community folder to make it “permanent”?