I have been working on a game that uses Object Oriented Programming (simply for practice) and on top of wrapping my head around formatting my scripts, I’m unsure how to go forward with some simple concepts for my game.
I’ve seen lots of scripts that deal with proximity using magnitude, but that always seemed like it’d quickly become extremely performance heavy. Instead, I started experimenting with something I’ve seen used in other games outside of Roblox, simple collision spheres and touch tracking (via the HumanoidRootPart) to handle zones.
One of my features, having to deal with the doors in the game, should handle something like this: A player enters within a collision sphere, and when they are within that sphere a highlight should appear on the door, where the player can then click/interact with it until they are out of that radius. I plan to use these collision zones to handle almost every radius based item in my game, as they seem way simpler than checking magnitude for hundreds of different objects every frame.
Here is my issue, I’d rather not handle Touched on the server, as you then have to either fire constant remote events to the client (I’d assume at least) to keep the client updated on whether they are able to open the door, or you handle the Touched on the client, which raises issues because I’ve been using attributes and a repository of different types of functions for my Interactive objects and I’m unsure how I determine which Interactives should be passed to the client for touched tracking or which should be handled on the server, or the communication between them.
Overall, my question is simply what would be the best way to go about making this complex system? Would firing a bunch of remote events even be intensive, would magnitude truthfully be the best option, or is there some third thing I can do to make interactive objects and zones extremely modular and streamlined for my game. I can provide additional context if needed, but my overall script is very “in-between” right now and wouldn’t give much insight beyond what I’ve already described.

Here is an example of the door as it should look (assuming collision spheres are made visible)