I'm trying to come up with an elegant solution to track changes made to the values of my game entities so that those changes when they happen on the server can be synchronized to clients who can then apply the changes. I'm using protobuf-net for my serialization.
essentially what I've come up with so far is that the game entity base class has a queue of changes:
private readonly ConcurrentQueue<ChangedProperty> propertyChanges = new ConcurrentQueue<ChangedProperty>();