@Mathias Thanks for your response and I appreciate what you are saying fully. You definitely better understand what I’m suggesting on the technical side, so when you say it’s non-trivial, I totally get it. Discussing it internally is all I could ask.
Since you say it’s worthy of discussion, I want to make the case from my perspective, as a user, coming from a conceptual / sustainability viewpoint.
One of the main design choices that I value in Coherence is that it is very much an additive framework. That is, I can use my own code base, add a few attributes, and now my code base is networked. This is extremely powerful.
Every other networking system I’ve used is more of a dependency framework. That is, you need to fit inside the box that they give you to work in.
When I make this suggestion about OnValueSynced, I’m saying Coherence has become very much aligned with ease of use and being non-disruptive with the development process. Even though, the boilerplate I’m using is really not that bad, I also imagine a world where it could be easier because you’ve shown me how easy a thoughtful system can make it for a user.
I imagine most users of Coherence are not going to be multiplayer-only games because most games that are multiplayer also have single player modes. Even though we are a “multiplayer-first” team, it only makes sense to leverage all our work and dedication in the multiplayer mode, by also molding the game into a single player mode, which quite frankly, might lead to more sales than the multiplayer version.
I would also imagine the even more common use case will be games that are already single player and want to add multiplayer onto their already existing game. This is where Coherence shines and has the most advantage imo
All this is to say, I believe it is fair to assume that, generally speaking, when we are using Coherence and we are offline, we still want our machine to act as if we are a “client”. The only thing that has changed, is that we are now ALSO the sim. We never stopped being a client though, and the current functionality treats us as if we did.
There was a change in 1.1 – Release Notes | SDK 1.1 | Unity Multiplayer SDK Documentation | coherence
- CoherenceSync: we now allow sending commands while disconnected (method gets called locally).
This is a change that has already been made that is in alignment with the idea that we are a “client”, even while offline. This change may be trivial in comparison to the OnValueSynced suggestion, but it is in the same spirit.