Swapping the LEAP1A with Pratt and Whitney 1000g for the A320neo and A321LR

Hi all, I have made a model of the Pratt and Whitney 1000g engines ready to use. My issue is importing the engines into the simulator and replacing the default LEAP1A. When I try nothing shows up.

Any help would be much appreciated.

@carrot9162,

How are you currently attempting to implement the engine swap?

Furthermore, are you looking for a straight replacement, or the creation of an additional variant/preset for the PW1000Gs? That will help discern what is the best path for making this work.

-Zach

@ZachB My apologies, I meant to say creating a new variant/preset.

Hi @carrot9162,

No worries! I have put together a little example below for the A320neo V2 with some placeholder PW1000Gs that get attached via a new preset. It’s a bit of a long write up, but it should set you on the right track :slight_smile:

PW1000G Attachment Example.zip (3.0 MB)

Setting up a new preset is relatively straightforward. Methodical, but straightforward. To begin, let’s start with a clean slate folder structure. You can also use the above example to follow along, as that is set up exactly how I’ll explain the below. /yourname-a20n-pw1000g/SimObjects/Airplanes/microsoft-a320neo/ will be the file structure we want, as this mimics the core A320neo’s file structure exactly. This allows our package to “merge” into the A320neo’s.

Once that is done, our first order of business is to understand how the A320neo is set up. For modular FS24-native aircraft, setups are relatively similar across aircraft, but they can differ a bit. 9 times out of 10 though, you will find Attachments, Common, Liveries, and Presets inside of /SimObjects/Airplanes/xxx/.... Inside of the Attachments folder, you’ll see an iniBuilds folder. This is the creator name. You can host your parts/functions in a folder under your own name, but I generally prefer just to use the original name so that they are all in the same folder.

Inside of ../Attachments/iniBuilds/ are all of the part_xxx and function_xxx folders. These are just as the names imply — separated parts (wings, fuselage, tail, etc), and functions which are the “brains” for a collection of parts. In iniBuilds’ case, they have their LEAP engines inside part_exterior_engines_leap, and the “brains” are inside function_exterior_engines_leap.

So, now that we know where the LEAP parts are, we need to figure out where they are attached so that we can remove them. If looking at the VFS, we can go back to the microsoft-a320neo folder, and then enter the presets folder. Here we will again see the creator name, and then beyond that, the various presets. We are looking for the A20N preset. In here, let’s take a look at the attached_objects.cfg located within the config folder. This is where all of the functions are brought together, along with any other attachments, to create the list of attached objects for a given preset. In this case, we can see that the attached objects for the A20N preset are the interior function, LEAP engines function, and exterior function.

So, now we have a basic understanding of how everything is set up for the A320neo. Let’s go back to .../Attachments/iniBuilds/ and create three new folders, as seen in the example. Part_Exterior_PW1000G_L, Part_Exterior_PW1000G_R, and Function_Exterior_Engines_PW1000G. This makes up the 2 parts folders for the left and right engines, and the function that will tie them together.

Inside of Part_Exterior_PW1000G_L, let’s make a model folder and a texture folder. Inside of the texture folder, place your KTX2s and accompanying JSONs. A texture.cfg can also be included if you decide to use callbacks/fallbacks. Inside of the model folder, place your GLTF+BIN for the left engine, and the accompanying model xml and behavior xml. The example file shows how this is set up, with the model xml having an LODs section and a link to the behavior xml. The behavior xml is where you can set up any animations that you wish to have, such as fan blade rotation, engine wiggling animation, low poly switching, etc.

You can now repeat this process for the right side engine. Once that is done, let’s move on to the Function_Exterior_Engines_Leap folder. Here you will need to create a config folder, a model folder, and an attachment.cfg. Inside of the config folder, create an attached_objects.cfg file. We will come back to that later. Inside the model folder, is where we will put a placeholder GLTF. This can be just a single-empty GLTF, or it can contain attach points, whatever you’d like. I included one that is just recycled from another project of mine. Feel free to use that if you’d like. Accompanying the GLTF is a model.xml referencing the GLTF in the LODs section, and again a link to a behaviors xml. Create these XMLs, where the behaviors xml can be pretty much empty. Again, feel free to just copy over the contents from my example if you’d like.

With the model folder done, let’s go back to the attached_objects.cfg inside of the config folder. Here, this CFG is like an “index” for all of the parts that we want to attach into the function, kind of like a group. As seen in the example, it’ll look something like this:

[SIM_ATTACHMENT.0]
attachment_root=“SimObjects/Airplanes/microsoft-a320neo/attachments/inibuilds/Part_Exterior_PW1000G_R”
attachment_file=“model/PW1000G_R.xml”
attach_to_model=“exterior”
attach_to_model_minsize=1
always_execute_associate_js=1
always_execute_model_behavior=1
alias=“PW1000G_R”

[SIM_ATTACHMENT.1]
attachment_root=“SimObjects/Airplanes/microsoft-a320neo/attachments/inibuilds/Part_Exterior_PW1000G_L”
attachment_file=“model/PW1000G_L.xml”
attach_to_model=“exterior”
attach_to_model_minsize=1
always_execute_associate_js=1
always_execute_model_behavior=1
alias=“PW1000G_L”

This part should be fairly self explanatory. These are just entries that list the specifics of each SimAttachment that the function is to be comprised of. We have the root filepath, XML location, etc. There are a host of other tags that can be added as desired, such as attach to nodes, pitch/bank/height/rotation adjustments, scale, etc which can be found in the SDK here.

Now we’re almost done, just a few more steps. Go back to the root of the function folder and let’s open up the attachment.cfg. Here we can define some tags that will be used elsewhere, such as for liveries. To keep things simple and similar to how the LEAPs are set up, I put the following in:

[Version]
major = 1
minor = 0

[Tags]
tag.0 = “a20n_eng_pw”
tag.1 = “eng_pw”

Later on down the line when you make a livery, you can use these tags in your livery.cfg to limit your livery only to presets with one or both of those tags — that way, you won’t have PW-equipped liveries showing up under the LEAP variant/preset in the sim’s menu. (see here)

Now, for the last step. Head back to the main microsoft-a320neo folder and create a presets folder. Inside of there, make an iniBuilds folder, and then inside of there, make another folder called a20n_pw1000g. Finally, inside of that folder, create another called config. Alongside the config folder should be a navigation_graph folder and a thumbmail folder. These you can just copy from the example, as the navigation graph will stay the same, as will the thumbnails (you can change the variation thumbnail if you want, I’ll touch on that later). Now, back to the config folder.

In that config folder, you’ll see in the example that there are a host of CFGs. Most of these are just automerge and have no changes that we need to make. To make it easy, you can just copy all of the CFGs over from the example into your own config folder. We’ll really only be touching the aircraft.cfg and the attached_objects.cfg, engines.cfg too if you plan to use the sim’s new shader for fan blur/rotation.

Let’s start with the aircraft.cfg here. The main two lines are title = “” and ui_variation=“”. UI_Variation is the most important, as that will be the title of your variant/preset in the sim selection menu. To keep things simple, I did the following;

[FLTSIM.0]
title = “A320neo V2 PW 1000G” ; Variation name
isUserSelectable = 1 ; Is the plane selectable by the user
;cabin_tags = “Commercial”
capacity = 186 ; Cabin seat count (placeholder)
targeted_specializations = COF-PCC
ui_variation=“PW 1000G”
operating_status= in_service

With that done, open up the attached_objects.cfg, where we will now marry everything together. If looking at the VFS, you can see that iniBuilds has 3 functions linked in here, as described earlier. The exterior function, interior function, and the leap engines function. Since we want everything but the leap engines, we can just swap out their leap engine function entry for our PW engine function. It should look something like this:

[SIM_ATTACHMENT.0]
attachment_root=“SimObjects\Airplanes\microsoft-a320neo\attachments\inibuilds\Function_Exterior”
attachment_file=“model/A20N_EXTERIOR.xml”
attach_to_model=“exterior”
attach_to_model_minsize=1 ; attaches to LODs that have a minSize of at least this value
always_execute_associate_js=1 ; Par défaut : 0
always_execute_model_behavior=1 ; Par défaut : 0
alias=“exterior_A32N”

[SIM_ATTACHMENT.1]
attachment_root=“SimObjects\Airplanes\microsoft-a320neo\attachments\inibuilds\Function_Exterior_Engines_PW1000G”
attachment_file=“model/AttachNodes.xml”
attach_to_model=“exterior”
attach_to_model_minsize=1 ; attaches to LODs that have a minSize of at least this value
always_execute_associate_js=1 ; Par défaut : 0
always_execute_model_behavior=1 ; Par défaut : 0
alias=“exterior_engine_pw1000g”

[SIM_ATTACHMENT.2]
attachment_root=“SimObjects\Airplanes\microsoft-a320neo\attachments\inibuilds\Function_Interior”
attachment_file=“model/A20N_INTERIOR.xml”
attach_to_model=“interior”
attach_to_model_minsize=1 ; attaches to LODs that have a minSize of at least this value
always_execute_associate_js=1 ; Par défaut : 0
always_execute_model_behavior=1 ; Par défaut : 0
alias=“interior_A32N”

And that’s pretty much it! Takes a little bit of extra learning the first time around, second time and beyond it’ll be a piece of cake for you.

____________________________________________________________________________

Extra:**
**
If you wish to make use of FS24’s new fan blade rotation/blur shader system, the modular preset system is a perfect way to put it to use. Since you are creating a new preset, you can “merge” any of those CFGs inside presets/config into the core CFGs without having to overwrite a core CFG or include the entire CFG. Let’s say you wanted to use this shader on both engines, along with the low poly setup for both engines. You’d take the engines.cfg inside of presets/inibuilds/a20n_pw1000g/config, clear it out, and put in the following;

[MODULAR_MERGE]
auto = true

[VERSION]
major = 1
minor = 0

[TURBINEENGINEDATA]

N1_100pc_rpm = 2000
turbine_blades = 18
turbine_node.0 = Nodes:FanBlades_Left ,FanBlades_Left_Low
turbine_node.1 = Nodes:FanBlades_Right ,FanBlades_Right_Low

This is straight out of the A320neo LEAP in the VFS, and you can configure it as necessary to fit your nodes and engine data for the PW’s. The Turbine Fans section of the SDK has a nice write up on it. Essentially, you input the N1’s RPM at 100%, the number of fan blades, and the nodenames for your left and right engine fan blades. The “low” nodenames after the comma are optional, if you have a lowpoly fan blade version that you’d like to insert as well (requires XML, the SDK covers this too). This is a really neat feature as animating the blades is no longer necessary, and this really looks a lot nicer/smoother too.

Once you have your specs input into there, save the file and you’re good to go. Should you have any other modifications that you wish to make CFG-wise, it’s the same ordeal. Just put them into the preset’s respective CFG, and the only thing you need is the section header and the desired line items + parameters as seen above. It will automatically merge this new data in with the core CFG(s).

____________________________________________________________________________

Extra 2:

You likely have seen in the sim selection menu, variants/presets have their own little thumbnail picture when looking at them in the sim. The corresponding thumbnail for this is thumbnail_variation.png. Inside presets/inibuilds/a20n_pw1000g/thumbnail, you’ll see this png. Just replace it with whatever picture you’d like, such as a photo of the PWs taken by the sim’s aircraft capture tool in DevMode. Ideally, this thumbnail is focused on whatever is the key characteristic of the preset, which in this case, are of course the PWs.

_____________________________________________________________________________

I think that should just about cover everything here, if you have any questions, feel free to ask! This stuff stumped me for longer than I’d like to admit when the sim first came out… so if I can prevent someone from having to rip their hair out on it like I did… I’m happy to help :sweat_smile:

-Zach

Hi @ZachB, I am having trouble getting the engines to spawn in. I tried using my PW engine model(the actual engine), everything is aligned with where the engine is usually supposed to be. Unfortunately, that didn’t work. I decided to troubleshoot and use a regular cube; that didn’t work either. I currently do not know what the problem is as I have been trying to fix it. Any help would be much appreciated.

Hi @carrot9162,

Sorry for the delayed response, it’s been a busy couple of days for me.

If you model still isn’t showing up in the sim, it’d be best to take a look through the console log in the DevMode tab at the top of the screen. There is a search bar there, keywords such as “GLTF”, or the name of your GLTF would be the best place to start looking. If there is a problem with the model itself, such as a failed compilation/corrupted model, it’ll let you know there in the log. That would be my best guess.

It may also be worthwhile to double check that your model compiled properly. I’ve had it happen sometimes where the package builder output shows that it was compiled, but for some reason it didn’t. An uncompiled GLTF when opened with a text editor will look like nicely formatted JSON, and when compiled, it’ll look like just a big run-on string of text.

I attached an image below, where the GLTF on the left side is uncompiled, and the GLTF on the right side is compiled, for reference.

-Zach

Hi @ZachB, no worries! I discovered my issue was that I didn’t compile the GLTF, once I did that it worked and I finally saw my model in the sim. Thank you so much for all of your help!

Awesome!! Glad it is working now! :grinning_face: