In this particular case, it is mostly due to lack of documentation from Asobo, and lack of Asobo demanding that unique paths be used.
mycompany is the example name Asobo uses in their examples, and developers just copy the example, make a couple changes to code, and ship it out, without understanding they need to create a unique file path to their package contents for the VFS. This is just one small example of reasons why CTD’s happen.
One, Asobo should be verifying the VFS as they load it. How hard is it to say “Hey, wait a second, I thought I already read this file… and… why is it different… maybe you want to look at this”, instead of “la dee dah, here’s a file… hmm, it’s got the same name… oh no! I’m so confused… What do I do??? ahhhhhhhh” and crash…
Two, They need to be more explicit in some of the rules developers should follow in package creation
Three, they shouldn’t accept stuff that is the same as their examples. Granted, that’s not easy to do. But, I dunno, something’s got to be done about developers not understanding what things mean and that it actually is important that they come up with a name for themselves.
Maybe it’s just a case that they need to implement more guid’s so these names are just symbols and then they don’t matter?

