I simply have one script that requires all my modules which I store in serverstorage.
I have two types of modules. Runtime modules and just regular Modules. There is a difference here. Runtime Modules is what that one script requires. When the script is run it simply requires every module in a Runtime folder.
The other modules folder is the folder I use when I need to require modules in a specific order, it’s also a place used to store modules in progress. Basically, I have a couple of scripts. One is called Debug, another is called Helper and then you have DataHandler.
All of my other modules still require them manually. But they all start automatically as long as they’re in the runtime folder.
For my NPCService there isn’t really another module. It creates and keep track of all NPCs. So there’s no need for an extra module to require the NPCService module.
I’d recommend just getting the NPCData directly from NPC. Since you don’t want to require things you don’t need. But if you think you’ll need them then you should go through ServerHandler.