I was trying to troubleshoot some scenery conflicts that were causing CTDs yesterday when I noticed something concerning. It seems that a lot of scenery creators are not changing the location of the modelLib.BGL
that is output by default for an ArtProj. I wrote a quick python script to scan every layout.json
in my airport folder, and out of 170-some add-on airports that I have almost 40 are shipping a file named scenery/global/scenery/modelLib.BGL
. This is less than ideal.
For those who don’t understand how the MSFS VFS works, the short version is that when the sim starts it loads all its own files first, then it reads the layout.json
of everything in the Community folder in alphabetical order and “stacks” those layouts on top of each other. If ever two packages have files with exactly the same name in exactly the same path whichever one was loaded first does not get its own copy – it gets the other package’s copy.
This is the output from my script just for the path scenery/global/scenery/modelLib.BGL
. Each line represents an airport that is trying to put something in that location. There are 38 of these. That means if everything is enabled, 37 of those airports are not going to have that file contain what they want it to contain. Needless to say, that can cause problems.
>> scenery/global/scenery/modelLib.BGL
fd24c6b5792a3ccde5d1359fe992fde6 ./Asia Pacific/airport-ychl-charlton/layout.json
7d27df7dfa23670bf513cc01490cbd4f ./Asia Pacific/airport-ymav-avalon/layout.json
2314c2dad9ce30e8427cf87b3ca86245 ./Asia Pacific/airport-yred/layout.json
5fde84dfa0b3d65cdab4aeee31bd297b ./Asia Pacific/NZA-Discord_YPKG_Kalgoorlie-Boulder-Scenery-Pack-1.0/layout.json
8b28bed6741ad34264e71d1a30325753 ./Asia Pacific/ykbn/layout.json
f7ffd330b88bd57b0f4aa16d8984766e ./Bush League Legends/stageonelabs-35me-matinicus-island-v1.1/layout.json
e4e7059cba3e29f7dc5b7ea335217318 ./Bush League Legends/stageonelabs-bc02-moh-creek-v1.1/layout.json
91353f4aedaa8264a09882b66f9148f3 ./Bush League Legends/stageonelabs-bc04-middle-lake-v1.1/layout.json
b30931f841a5b6e69f38795db0982c1c ./Bush League Legends/stageonelabs-bc05-north-tsuniah-lake-v1.1/layout.json
46dfdce0022df32cde7d2a047786e574 ./Bush League Legends/stageonelabs-c01a-boneyard-v1.1/layout.json
cb9e79fa18cc4bd46bad5c6aa6960376 ./Bush League Legends/stageonelabs-caf4-tsuniah-lake-lodge-v1.1/layout.json
ba9646e9bb771d04ad4a7442fe0cdbd0 ./Bush League Legends/stageonelabs-cyjt-stephenville-v1.1/layout.json
eaf02ec3c4769f740afefaf22a5f7612 ./Bush League Legends/stageonelabs-cyyr-goose-bay-v1.1/layout.json
57fdf49b7d75e72a79b6bd6ff32b0c32 ./Bush League Legends/stageonelabs-ida1-mile-hi/layout.json
57fdf49b7d75e72a79b6bd6ff32b0c32 ./Bush League Legends/stageonelabs-ida1-mile-hi-v1.1/layout.json
45f70c076cf9832ca7c430527351af55 ./Bush League Legends/stageonelabs-kpvc-provincetown-v1.2/layout.json
afdd16c01ea352d0aa419adc82369881 ./Bush League Legends/stageonelabs-ns01-atlantic-skydiving-v1.2/layout.json
cd4158f9abb995494e2d777f09aca7e8 ./Europe/dwp-lfro/layout.json
0ec410e8b80e1df8c7c7a75b205687a7 ./Europe/ehhv_new/layout.json
6251ea16bbd5a854b9d6ddb0b38d8627 ./Europe/kjh-engs/layout.json
a5550f14384ee261a70f6d1dddaf337c ./Europe/kjh-enr1/layout.json
126d20d1a6178591fd69737307b58cc6 ./Europe/kjh-ens1/layout.json
08a50bacf047ec1d1ddac9e72bf275cb ./Europe/kjh-envu/layout.json
1247e6734c044d949e19d7949a9ff28f ./Europe/LFPD BERNAY/layout.json
c1f5990dd00d992c71ce9d40fea9c299 ./Europe/lhbs/layout.json
cdac58c429832af0836cef6738805c8b ./Europe/lhfh/layout.json
bc51039252cba35383db579e54a78e1c ./Europe/liri/layout.json
98a7fa6787f73b4216efb9be06f613ac ./Europe/OthertonAirfield/layout.json
ad5e65858c9f57989483eb4d28b3ee58 ./Europe/piotrkol-airport-epnl-lososina2/layout.json
b164e6bf72331d6e2e7fd28207c6425a ./Europe/pyreegue-lytv/layout.json
dd4087e1cfad54cd116184662f2c2251 ./Europe/tailrotor-lidn/layout.json
748f363a7ff97b63dec79645d3b9d562 ./Europe/UK Farm Fields/gate/layout.json
646c0af11d239e5dd5b041913db77c59 ./Europe/UK Farm Fields/glider/layout.json
937f6c4bf56d70095d48ecea3b111ed6 ./Europe/UK Farm Fields/t3/layout.json
735ad2341a5be4cd144df985d26e05b6 ./North America/USA/campbell/layout.json
f40aa7468018924e06ba80281deadec6 ./North America/USA/julysfire-airport-talkeetna-area-pack/layout.json
d78a430fde95bedd96f8fab80093a6c1 ./North America/USA/u60-u60/layout.json
43fd8524c9a04a8123d77e51015598c7 ./North America/USA/verticalsim-kittyhawk-first-flight/layout.json
I’m an avionics developer (you may recognize me from such favorites as the Working Title G1000 and G3X), not a scenery developer, but after talking to a couple folks who do scenery it sounds like the problem is coming from folks who do net set unique paths for their ArtProj project in this window:
I believe that simply adding a unique path for your own scenery, like this, should solve that problem:
Doing that will make sure that your scenery gets exactly what it expects, and that you don’t step on anyone else’s stuff. It’s only neighborly.
I hope this helps some folks. If I got anything wrong, please feel free to correct me. And to be clear: I doin’t blame the content creators at all for this. I blame the incomplete SDK documentation combined with a ■■■■■■interface.
Thanks for your time.