[DAO: QmNydZQ] Enhance All Builder Smart Items Feedback Cues; Improve Triggers, Counters, Text

by 0xbd5b79d53d75497673e699a571afa85492a2cc74 (DecentralandGod)

Should the following Tier 3: up to a 3 month vesting contract of $3000 - $5000 USD in MANA, with a one month cliff grant in the Platform Contributor category be approved?

Abstract

Enhance Builder smart items enough so they are capable of creating scene-size dynamic games like Pong or Breakout. There are 254 smart items found in the Builder. Some are +2 years old, most checked in and never touched again. I will revisit all the smart items and add functionality where lacking.

Summary of work:

  • Add more dynamic functionality to a targeted subset of smart items: Trigger Type, Counter Type, Text Displaying Types, Toolbox
  • Improve user feedback by adding enabling/disabling clickable + customizable hover text feature
  • Make the smart item code more scene efficient by reducing re-creation of objects where not needed

Demo / POC

Grant size

5,000 USD

Beneficiary address

0xbd5b79D53D75497673e699A571AFA85492a2cc74

Description

Full Project Proposal Here https://github.com/wacaine/dcl-smart-items-ce/blob/master/proposals/all-smart-items-prop.md

Adding more dynamic functionality for the very specific subset of smart items

Trigger Types

Includes: Trigger Area, Trigger Round, Trigger Tile SciFi, Trigger Tile Square

I want to upgrade the code to the trigger system code found GitHub - decentraland/decentraland-ecs-utils. This upgrade will extend the current user entered/exited triggers. It will add the ability to detect when objects interact with other objects and also define what objects can interact with other objects. Interact here means when the bounds of 2 trigger boxes intersect with each other. An example: Food is triggered (or eaten) by both cats or mice. Also, mice are eaten by cats, so a mouse’s trigger area is triggered by only cats (not the food or other mice).

Counter Types

Includes: Scoreboard, Countdown timers

Scoreboard for example, only when the target value is reached can it trigger an event. Define more triggerable events as the counter is incremented or decremented. Events such as trigger when increments by 1, nears the target value, reset etc…

Text Displaying Types

Includes: Plain Text, Galleries

Be able to change the text, font, color by an action event

Toolbox Add Bounce Action

Toolbox currently manages object motion. To be able to get dynamic movement more at least one more action needs to be added. Bounce will take the current motion and calculate its bounce off an object/bounds. It will calculate the most basic bounce trajectory of an object and purely reflect the direction. It will not consider the object’s mass, shape or rotation at the point of collision. If it is possible to gain access to the object’s shape and mass to determine a better angle and a more realistic bounce this will be a stretch goal.

Bounce will have a few parameters like " elasticity" or how bouncy the collision is. It can either dampen the bounce or speed it up.

Make smart items more scene efficient.

Add more user feedback

The user feedback on smart items is not very flexible or lacking (see General Audit provided below). If they do have onClick events many times the hover text cannot be changed. I want to add onClick events to more of the smart items as well as additional configuration abilities like changing the hover text.

Some examples of better user feedback:

The Fantasy Black Button text says “Press” and cannot be changed to “Press to open door” for example. Or if the builder chooses not clickable at all that is not possible either.

The Blender smart item is clickable but the hover text is not changeable it just says “Interact”. Would it not be more fun if the hover text could be changed to “Make smoothie”. Or if the builder chooses not clickable at all that is not possible either.

The Trapdoor is not clickable nor has hover text. While that is likely because it is supposed to be a secret trap door what if someone wants it to have this ability. Make clickable with hover text “Open secret door”

Specification

Demo / POC

You can see the work I started here

General Audit

You can see here an audit of all smart items and the features proposed to be added. smart-item-audit-prop2 - Google Sheets.

  • Name (Column B) gives the smart item name
  • Existing Actions/Parameters (Columns C thru D)
  • Audit of features existing or to be added (Columns G thru P)

This is a preliminary audit. What features are listed in the audit document are subject to change.

71 of the smart items (see General Audit provided above) do not reuse objects where possible. Each instance of the same smart item re-creates the same object for each instance. This directly impacts the weight smart items put on your scene when you add many of them. It should be created once and reused instead.

Deliverables

The code will be publicly available at my public GitHub repository here: GitHub - wacaine/dcl-smart-items-ce. The reasoning for the name of the repository: “smart-items” since that is what they are and “ce” for Community Edition. I will upload the source code and a premade item.zip(s) that can be dragged into the builder for usage. Directions on how to do that can be found here Import custom items | Decentraland Documentation

I will also open a pull request against the main smart-items repository (here GitHub - decentraland/smart-items: 💡Smart item examples). I will work with the Decentraland Foundation team to try and get it merged into the main repo so all these changes will be even easier to make use of. There is no guarantee the Decentraland Foundation will merge this code into the main branch. This step is dependent on the Decentraland Foundation Team time to review, code standards, other projects/goals they have going on, and likely not be completed as quickly as the custom drag/drop item.

Personnel

I already have one successful approved grant with delivered content. Below are the links to the previous grant, demo scene, and work delivered. All of this proves I have the experience and skills required for working with smart items

I won first place in the recent CyberPunk Contes that included a mini-game. In the mini-game, I had to disable access to areas, disable platforms, keep track of how many times a user did something. I exclusively used the Builder and the provided smart items to make my scene. In doing so I am very familiar with the Builder and smart item current limitations.

Scene here Builder | Decentraland

You can see my pull request to fix a bug found in the CyberPunk image cube item.

Roadmap and milestones

Time to Complete

I estimate roughly 10-weeks until completion from the time the proposal is accepted, there are a lot of items to go through, 254 to be exact (and sadly this is not my full-time job…yet! :). Should the funding be approved I will start working and make it available as outlined in the deliverables above.

Status / Progress Communication

The status will be communicated twice a month through this grant forum. See “Discuss in the Forum” link. I also have my github repo which will track progress

Milestones

  • Week 1-10 - Make smart items more scene efficient + Add more user feedback (Burn rate of ~25 a week)
  • Week 1-2 - Trigger Types + Toolbox Bounce Action
  • Week 2-3 - Counter types + Display Text types
  • Week 4-6 - Making a Game Demo Scene using Triggers and Counters. A smattering of other updated items

Week deliverables tentative but give general delivery order*

Deliverables

The code will be publicly available at my public GitHub repository here: GitHub - wacaine/dcl-smart-items-ce

Vote on this proposal on the Decentraland DAO

View this proposal on Snapshot