Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
197 stars 9 forks source link

Object versioning and instancing/linking #2829

Closed shadowpanther closed 2 months ago

shadowpanther commented 2 years ago

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

With the current inventory system, each time you save an object, an entirely separate new copy is created in your inventory.

Alongside that, an item spawned into the world becomes a part of the world and does not carry any relation to its prototype in the inventory.

Relevant issues

Describe the solution you'd like

Describe alternatives you've considered

Make a custom system that uses a bunch of manually maintained cloud variables to watch for the changes and allow the user to update an object to a new version of itself.

Additional context

Such functionality would allow creators to update all instances of the same object (say, a lantern, or a visit card) across all their worlds in just one action.

Similarly, it would allow to make object systems (gun and vehicle mechanics) and avatar addons (custom HUDs) that update automatically to their respective new versions without the need to spawn each object/avatar, replace small parts on it and save new copies.

This also somewhat resembles GitHub's functionality that allows you to include parts of other repositories into your own without copying the code over.

Relevant discussion that prompted the creation of this request: https://discord.com/channels/402159838827905024/477711742001086505/877223034770055208

Earthmark commented 2 years ago

This would help the mentor signal as well, as it wouldn't need to be manually updated.

In my mind this feels kinda like describing git or docker, each checkpoint/build/commit represents a snapshot, and can be tagged/pointed to by a branch or tag or the raw commit ID. I think this is a well trodden concept.

Earthmark commented 2 years ago

I believe similar requests have been said to require merging of versions in the past, perhaps not if manual merging is available... Personally I can't run auto save on my public build worlds cause if someone breaks the world and then it saves, but if it could have a few rolling checkpoints that would resolve my concerns around that. I think this request is specifically about items, but just bringing up worlds are valid here as well.

shadowpanther commented 2 years ago

This would help the mentor signal as well, as it wouldn't need to be manually updated.

Yes, that was one of the objects I was thinking of.

I think this request is specifically about items, but just bringing up worlds are valid here as well.

See #2630 for the worlds versioning. Worlds already have the same ID and incrementing version, it's just that the previous versions are not saved or are not currently available to load.

Frooxius commented 2 years ago

Versioning is pretty much same thing as https://github.com/Neos-Metaverse/NeosPublic/issues/2630, the cloud uses the same system for both objects and worlds and doesn't make a distinction there.

For instancing and linking, we have an issue here for Prefabs: https://github.com/Neos-Metaverse/NeosPublic/issues/83 That's a separate feature set. Something we'd like to add, not sure when exactly and how to best handle certain things, although I think I got a much better idea now.

shadowpanther commented 2 years ago

Yeah, I didn't expect this to be implemented right away, just a proposal of a feature that would be nice to have in a long term. It might be also tied to the Marketplace (automatically updating purchased assets/objects).