This gets asked around some times. Here's two of my posts on the subject:
also see this and this (both in the same thread), where I suggest cosmetic (aka, interface-only) solutions to the problem.
Keep in mind that the solution only involves changes to the IDE, the engine itself need not be affected. In fact, since each variable can only be in one group (a tree structure), all the engine has to do is concatenate the parents to get the final variable name. So player.ship.resistances.fire could be converted to "playershipresistancesfire" on exporting. It seems pretty simple to me, but only Ashley can say with certainty how hard it would be to change the IDE (I hear it's a bit painful).
While the solution above applies to instance variables, there's no reason a similar scheme can't be applied to global/local variables as well.