Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
138 stars 2 forks source link

Implement localness tracking/analysis with ProtoFlux #571

Open Frooxius opened 11 months ago

Frooxius commented 11 months ago

Is your feature request related to a problem? Please describe.

Currently ProtoFlux has a number of storage elements which are "local" - they are not part of the synchronized data model. While this is quite powerful when the data does not need to be synced (or specifically should not be), it makes it easy to build systems that become desynced.

For example, driving a value in the data model using setup that sources at least one of its values from a Local can result in that driven value to be locally dependent. User might not realize that a Local is being sourced and will not notice the issue until it's used in a multiplayer setting.

Describe the solution you'd like

ProtoFlux has systems for tracking a number of properties of nodes, such as continuous changes. Utilizing these systems, we can track additional properties, like "localness".

When plugging behaviors that will result in driving a value (or something else that will reflect in the data model), we can check if the inputs source any nodes whose outputs are marked as "Local" and provide a warning to the user.

This way the user can explicitly decide whether this is intended or not.

Describe alternatives you've considered

We can keep this be something that user needs to be aware of, but this would increase the rate of errors and mistakes and confusion, which we want to avoid.

Additional Context

No response

ukilop commented 11 months ago

nodes whose outputs are marked as "Local" and provide a warning to the user.

Could this extend to other types of output marking? Could we have a some "Static" outputs on the many multiplexers that provide input/output counts? "Static" being a tag that would allow cyclic connections in data evaluation and function the same as Globals: immutable during execution.

Frooxius commented 11 months ago

That wouldn't work with this system.

ProtoFlux has a separate system for following "flow" of inputs, outputs and impulses and detecting cyclic connections, but that's not part of this.

JackTheFoxOtter commented 5 months ago

just going to bump this issue

Please don't bump issues, it doesn't help anyone. Just give them a thumbs up if you want it to be prioritized higher.