SharedModule Proposal

This is an extremely bad idea, you’re misunderstanding part of the contract of ModuleScripts.

The idea of a ModuleScript is that it represents some block of functionality that loaded and can now be included from any other place in your project. But you should not rely on any particular initialization order for your ModuleScripts, doing so is extremely unstable and error prone, as you can end up destroying your entire initialization order by accidentally requiring one module in the wrong place.

As a result, the main code in your ModuleScript should not be “[accessing] variables from within the Main script” like you want the feature to enable, since the ModuleScript has no idea whether the Main script variables in question have actually been initialized yet.

Ideally if you need your ModuleScript to be using information from your game-logic scripts you should have those scripts pass that information into the functions that they call on the ModuleScript, not the other way around having the ModuleScript go digging up information from the things that call it. EG:

-- Like this:
barSettings = ...
Mod = require(module)
Mod.foo(barSettings)

-- NOT like this:
_G.barSettings = ...
Mod = require(module)
Mod.foo() --> reads _G.barSettings