This document describes how the ID (which is an UUID) of a Place is defined and the semantics to keep or replace it if the deployments of its parcels change. In many conditions deployments of new parcels won't modify the ID of the Place, other conditions are enumerated.
As the platform and the protocol are growing, a few initiatives like the possibility to save, rank and recommend scenes are becoming essential tools to strengthen the social interaction and discoverability in Decentraland. But, each new scene deployed has a new entity id in the Catalyst Network, which would reset every time that the scene could collect on each deployment.
The next approach was to track only x,y positions, but since a scene can grow, shrink, and change shape, this could result in misleading behavior for our users when, suddenly, a position they were already keeping track is not the scene they were following.
Instead of the previously mentioned approach, we will assign a virtual UUID to each new deployment and use a set of rules detailed in the following section to determine if this new deployment corresponds to the same place or to a new one, in which case a new virtual ID will be assigned.
A Place is defined as a scene occupying a set of positions, each new deploy on an empty set of lands will receive a new virtual UUID.
When a new deployment replaced an already existing scene it will keep the same virtual UUID if the scene metadata meets one of the following criteria:
✅ The new scene gets the same UUID if it occupies the same parcel | |
✅ The new scene gets the same UUID if occupy the same parcel, even if it has a different base parcel | |
❌ The new scene gets a new UUID if it doesn't occupy the same parcels and same base parcel | |
✅ The new scene gets the same UUID if it doesn't occupy the same parcel but preserves the same base parcel | |
✅ The new scene gets the same UUID if it doesn't occupy the same parcel but preserves the same base parcel | |
❌ The new scene gets a new UUID if it doesn't occupy the same parcels and same base parcel |
✅ The new scene gets the same UUID if it occupies all previous parcels + any additional one | |
✅ The new scene gets the same UUID if it occupies all previous parcels + any additional one, even if it has a different base parcel | |
✅ The new scene gets the same UUID if it has same base parcel | |
❌ The new scene gets a new UUID if it doesn't occupy all previous parcels and has different base parcel |
✅ The new scene gets the same UUID if it has the same base parcel | |
❌ The new scene gets a new UUID if it has a different base parcel | |
❌ The new scene gets a new UUID if it has a different base parcel | |
✅ The new scene gets the same UUID if it has the same base parcel |
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.