My favorite way for synchronized values is using Value-type objects like NumberValue or StringValue. If you create a Configuration in the Player object when they join and put value objects in it, it is far easier to use. NumberValue | Documentation - Roblox Creator Hub
List of value objects:
The reason I think it is easier is because of the Changed event. This event allows server and client scripts alike to act immediately when the value changes.
One important thing to remember is that only the server should be changing the value if they are synchronized. That is because if the client does it, it will only be different for that client.