decentraland / proposals

Review of community proposals for Decentraland's art and applications
46 stars 16 forks source link

DecentralApps #108

Open antoniosotomayor opened 6 years ago

antoniosotomayor commented 6 years ago

Name: DecentralApps

Purpose: Wrap services in apps, allowing discovery, direct access and focus on the presentation of content as defined by the content creator.

Description

The Wishful Project

Alice is thrilled about her idea for a Decentraland project: "Crypto on the Beach: Talks about BlockChain in a VR sunny paradise", a podcast-like show featuring interviews with influential people in the crypto space, to be developed in a new plot of Decentraland.

dcl_proposal_base_perspective

dcl_proposal_base "Crypto on the Beach" sunny paradise setup

The Harsh (V)Reality

As soon as Alice deploys her project in her plot of LANDs, she is struck with two unexpected problems:

  1. The Distant Distractions
  2. The Naughty Neighbors

The Distant Distractions

As z-axis in Decentraland is unlimited, Alice suddenly discovers that some distant landowners have created giant structures that generates a real distraction in her audience while she conducts the interviews. One of them is an art installation with constant movement and the other is a obscenity 1000 feet tall. In any case, Alice is aesthetically horrified and starts to think about building walls around her plot, losing the "This is Alice from Decentraland" effect that, as a marketing strategy, she wants to achieve.

dcl_proposal_dd "Look at me. Not there. At me. Please."

The Naughty Neighbors

As Alice is thinking about these problems, a new one appears: her big landlords direct neighbors, Bob and Carol, that had unsuccessfully tried to purchase her little plot (enclosed inside their huge properties), start a new strategy to persuade her to sell. A series of big story buildings are build right in the frontier with her little plot, making impossible for anybody to discover her by passing by, and blocking away the sun. Forever.

dcl_proposal_nn_perspective

dcl_proposal_nn "Hey! Where is the sun in "sunny paradise"??"

The proposal

It is possible to avoid both problems if we consider that a piece of land that provides a service is an app (a DecentralApp) that has some rights to control its environment in order to properly fulfill its purpose.

To provide that rights, we need:

The "Decentraland Name Service":

  1. Allows the creation of a unique name that identify the app
  2. Classify a "plot" (a set of LANDs, owned or rented by a single owner or a unified/coordinated set of owners, that provides a unified service) as an app
  3. Provides the information for controling the experience of a new visitor with:
    1. Direct access to that app (from inside Decentraland of from the web)
    2. Setting of the initial position and camera orientation that gets a new visitor on arrival
    3. Blacklisting and Whitelisting the visualization of content of the rest of the VR world

The "Decentraland App Store":

That information can be provided with a JSON document, fulfilled via a Multisig Smart Contract that checks the ownership (or usage rights) of the sender(s) to registry the described plot as an app.

The format of that Plot Registry JSON document could be:

{
    "id": "<unique name of app>",
    "type": "<app / point>",
    "location": "<x, y coordinates>",
    "arrival-at": "<x, y coordinates>",
    "arrival-camera-orientation": "<point-of-view at arrival>",
    "app": {
        "title": "<app title>",
        "subtitle": "<app subtitle>",
        "description": "<app description>",
        "categories": "<comma separated list of categories to be listed under>",
        "dimensions":  ["<array of the all the plots that provide the service, defined by location and size>"],
        "tags": ["<array of custom and 'official' tags>"],
        "whitelist": ["<array of plots by location and size, by name and/or by tag>"],
        "blacklist": ["<array of plots by location and size, by name and/or by tag>"]
    }
}

As an example, Alice owns a plot of 8 LANDS, distributed in a 4x2 plot at (333, 666) x,y position. So, the data that Alice provides in this "DNS", could be:

{
    "id": "cryptoonthebeach.podcast",
    "type": "app",
    "location": "(333, 666)",
    "arrival-at": "(333.2, 666.2)",
    "arrival-camera-orientation": "(-4, -20, 0)",
    "app": {
        "title": "Crypto on the Beach",
        "subtitle": "Talks about BlockChain in a VR sunny paradise",
        "description": "Join Alice in her restless search for enlightenment!",
        "categories": "podcast, news, entertainment",
        "dimensions":  ["(333, 666, 4, 2)"],
        "tags": ["podcast", "blockchain", "dcl:rating:G"],
        "whitelist": ["dcl:rating:G", "main.city", "nature.beach"],
        "blacklist": ["(696969, 6969, 69, 69)", "thehumongousdisturbinginstallation.art", "bobworld.me", "caroluniverse.meandonlyme", "dcl:rating:NC-17"]
    }
}

Some notes:

Direct link from the web

A user can arrive at a DecentralApp via a link to the name of the app.

For example, in iOS, an URL Scheme "dcl://" could be declared in order to open a Decentraland Viewer Client App and go directly to the DecentralApp specified. With this setup, Alice could create a traditional web page ("https://cryptoonthebeach.io") that, when the show starts, displays a link "Now Live at Decentraland!" linking to "dcl://cryptoonthebeach.podcast". When the user click this links, the Decentraland Viewer Client App opens and loads Alice DecentralApp. (This behavior can also be implemented better as an Universal Link, if Decentraland provides a Web Client in the future)

When the viewer opens, it honors the whitelist/blacklist in app configuration, hides the inappropriate content in the visualization, and places the visitor in the designated point with the desired initial view.

Additional considerations

Several issues (#4, #6, #13, #24, #59) have proposed the need for a scarce number of "teleportation" points for encourage discovery. The possibility to mark DecentralApps as Favorites generates another way to quick jump to a distant place without the necessity to go to the nearest "portal" (and allowing to arrive on time at that great VR event about to start!)

Conclusion

Allowing the classification of a defined group of LANDs as an app can lead to a better user experience and a healthier business model for content creators in Decentraland.


Antonio Sotomayor (antonio.sotomayor in Slack)

veqtor commented 6 years ago

It would be nice if a plot/dapp can set it's own weather, time-of-day, drawing distance etc, perhaps low-quality meshes outside the plot could be rendered as wireframes?

m3mnoch commented 6 years ago

while i can appreciate the thought behind this, it overlooks a small problem.

if you don't allow the visibility of your neighbors, they likely won't allow visibility of you. in a situation where adjacency and discoverability matter, you'd effectively be cutting yourself off from the rest of your world.

now, if you're intention is to have a low-population, private area that nobody knows about? well, i think you're on the right track.