Currently I am working on Zenture Online and I have been asking myself for a while, which condition would be better in order to decrease bandwidth? Please share with all of us the reason behind your choice.
The NPC System is more like the dialog, shop or trader system.
Conditions are: Distance form NPC / Player Level / Player Skills and etc… You can say location and player data.
Using the NPC System locally and check for conditions globally.
Building the system on severside such that there is nothing visible to the player. (Modules In ServerScriptService)
That’s why I included the key phrase “properly validate”, which means that you perform all important checks server-side to validate the purchase, while also performing those on the client for immediate feedback.
I’d suggest having the server track the position and status of all NPC entities, but display the actual humanoid model locally and animate it all on the client. This allows for some neat tricks to cut down on resource usage by only sending data about NPCs to players that are within a certain range of the NPC.
Whenever a player performs an action involving an NPC, have the server do some sanity checks like checking the position of the player against the requested NPC server position etc.