SDK: Looking for feedback & ideas

Hey @tmalexandre!

Completely agree. I’m currently cooking something up relating to this particular subject. When a proposal is in place, we will share it with the community to get some feedback

1 Like

Javascript module format support.

So that you can use more libraries you find on npm.

1. Attach an Entity to the Player

At the moment attaching objects to the player causes them to float towards the player breaking the intended carrying object experience. Would be great when the player moves any attached entities moves with it.

2. Reposition Player in Scene

Allow via code the ability to move the player and where they are looking. Creators could use this for a die and respawn experience among many other use cases.

3. Raycast Cone or Other Shape

Instead of only having raycast line, would be great to have raycast a cone or cylinder. Basically raycast anything that has a width that can be bigger than just a point.

4. Prevent Player Clicking Opens Passport

When multiple players are in the same area in a clicking mouse experience anytime you click on a player their passport opens up. Would be great if in the scene code or scene.json file we can turn off “click player opens passport”.

5. Collision Triggers Players Walk Into Fires Event

Would be great to be able to easily detect player walks into a box shape. Many many game play elements like picking up items would be quicker to create.

6. Change 3D Model GLTF Texture

Skins are a big seller in games, it would cause many wallet transactions and be very lucrative if we had the ability to change a GLTF “skin” with another texture via code.

7. Player DCL Settings Volume Control

Players should be able to go into their settings and adjust all audio volumes with one setting. It seems odd that each creator needs to manually create a volume control for their creations.

8. Detect Player DCL Settings

It would be nice to know what the player’s graphics settings are set to so we can adjust the graphics we render during game play.

9. Detect 1st and 3rd Person View Change

Being able to retrieve the view state the player is in would allow creators to modify the experience to fit 1st and 3rd person view.

10. Manipulate Avatar Bones When 3rd Person

A way to adjust the player avatar bones in code. This would allow for many things like the player correctly appears to be holding something. Or this would be no different than custom bone movement similar to clicking on a chair and code runs that makes the avatar sit down.

3 Likes

Hey @Corv!

Thanks for all the feedback and ideas, they are great. We already had a few in mind, but it’s the first time we hear about others.

Just to make sure, are they sorted in terms of importance for you?

1 Like

Thank you @NChamo.
The order of importance from most important to least important would be the following.

#4 - Prevent Player Clicking Opens Passport
#7 - Player DCL Settings Volume Control
#1 - Attach an Entity to the Player
#2 - Reposition Player in Scene
#3 - Raycast Cone or Other Shape
#6 - Change 3D Model GLTF Texture
#10 - Manipulate Avatar Bones - this one may need to increase in scope to also send bone manipulations to other players, so if a player decides to sit, other see them sitting as well.
#5 - Collision Triggers Players Walk Into Fires Event
#8 - Detect Player DCL Settings
#9 - Detect 1st and 3rd Person View Change

What about access to microphone / MediaStream from SDK ?
I think Voice is a clearly missing feature to increase immersion in decentraland. But if it’s hard to have it as a world feature because infrastructure, what about finding a way to provide it for SDK, and Land owners / devs providing the infrastructure? This would allow not just voice comms, but interactivity, for example like Alexa; also from camera, where world can answer to user gestures, …
I know it could be hard or even not possible, but I think it can be a game changer, maybe makes worth to really have a re-look.

Hey @pablo!

I agree that it would definitely be a game changer. I like the idea of maybe having the owner/devs provide the infrastructure, maybe as a middle step until we figure out another way to do it.

Someone had proposed using Jitsi in the past, similarly to what Matrix does.

Maybe that would be a way to do it

Hi @NChamo,
Here after are a few things that I think would have a great benefits for dev as for players’ experience:

  1. Ability to use external JS/typescript libraries
    (as asked by Pablo as well). This would allow the devs to give their games more features by reusing already existing implementation for so many things (for instance cryptographic algorithms). This would also give them the ability to share common code between different scenes.

  2. Ability to attach an entity to any players
    (as asked by Corv, but not only the one-person player, but also the other avatars on the same scene). At least we need to know who are the avatars in the scene boundaries and be able to poll their position, so that we could set the attached object position accordingly. However it won’t be sufficient as, (I guess) the displayed position of the avatars is extrapolated, so we need to use the same extrapolation and be sync for the attached entity position.

  3. Avatar in preview
    Would be very useful to include a ‘dummy’ player avatar in the preview mode, as we could really appreciate the final rendering of our scene before deployment.

Regards
Ludo

Hey @Ludo!

Thanks for all the feedback! I’ll try to go one by one:

  1. Yes, completely agree that this is a must. We actually managed to make some fixes (soon to be released) that should allow more Typescript libraries to be used, but we are still short on plain JS libraries. Fixing this won’t be so easy, since we need to change the core of the bundling/module resolution part of the SDK.
  2. I’m currently working on this, but only for the current player. Scene still don’t have awareness of the other players, so that will be a little more difficult to implement. But we will get there.
  3. I’m not sure I understand what you mean with ‘dummy’ avatar. You of course have your own avatar when you are on preview mode, and you could connect more times with different browser windows. Could you explain a little bit more?

Thanks!

Nico

@NChamo
Let me explain better #3: I mean when you’re in preview, you do have the point of view of the player but you don’t have his/her body (= avatar). When you switch point of view (‘V’ key), you see nothing. Sometimes, it would help to visualize ‘a’ body for the player so that we can scale the scene more precisely, or just to get an overview of the final rendering.

For point #2, here is what happens when entity’s movement is extrapolated by the scene code and the avatar’s movement is extrapolated differently by the platform (this is a capture from another player’s point of view):

When you say “Scene still don’t have awareness of the other players,” I guess there is the info about the other players somewhere because I can see them in my explorer window. Would be useful to forward this info to the scene.
I think this point is important to be addressed to improve multi-players experience.

Regards

Hey @Ludo!

Thanks for the clarifications.

Regarding #2, thanks for the video. I see the problem you are mentioning, and it’s pretty clear. And I completely agree that in order to improve multiplayer experiences, this needs to be addressed.

About #3, please come by the discord server, in particular the channel #support-sdk, because I do see the avatar when I press “v”.

Hey everyone!

It’s been a while, but I wanted to provide an update on a few of the ideas that were mentioned here.

We have been working on a few bug fixes that were not reported on this post, but we also implemented a some features you asked for:

  1. The ability to move the avatar (link)
  2. The ability to hide avatars (link)
  3. The ability to disable passports (link)
  4. The ability to attach entities to the player (link)
  5. We fixed the visibility of the avatar on preview mode

Also, we are currently working on:

That’s it! Just wanted to keep you updated :slight_smile:

If you have more feedback, please keep it coming!

cc @pablo, @tmalexandre, @Corv, @Eibriel, @Ludo

1 Like

Hi @NChamo,
The new features are amazing.
Thanks for these improvements.
I’ve checked them out, very useful.
Btw, I didn’t work with the DCL SDK for the last 6 months and I see today a real performance improvement (loading time). Well done.
Regarding moving the player (new service movePlayerTo), I see the avatar being animated (small jump) each time the service is called. It makes sense in some cases, but IMHO it would prevent from moving the player smoothly on a path, for example.
Is there a way to deactivate the jump, by any chance ?

Hey @Ludo!

I’m glad you like the changes :slight_smile:

Regarding the small jump animation, I just created an issue to fix it. We are also having other problems with unwanted animations when avatars move. We will work on it!

1 Like

There is an idea that haunts my mind but I don’t know if it will be technically possible.
Could you implement a feature to change the Avatar size inside the scenes?
for example for a scene the avatar starts 1: 1, but after taking a potion it gets smaller and can enter through smaller doors and see the scene bigger (a bit like Alice in Wonderland).
maybe it’s technically impossible, but it makes me imagine worlds within other worlds and I need to raise the question.
the experience outside the scenes, and by default, would be the same as before.
Owners of more lands would continue to be more visible with more bigger buildings, and owners of fewer lands could create worlds within their parcels.

1 Like

Any Chance to have HTML/DOM port for UI.

Working with current SDK UI stuff is a bit messy, while having HTML would give us a lot of webkit features working well, and if we can even include React …

1 Like

Great ideia! That would be amazing!

@ina, it sounds really interesting!. Right now avatars are rather static, but I could see a feature where something like that could be possible.

@pablo , regarding the UI, I agree it’s currently a pain. I’ve suffered it too many times. The thing with HTML is that Unity doesn’t support it. There are some workaround, like this one, that plugin doesn’t even work on wasm. Have you seen or found something online that could help in this scenario?

2 Likes

Thanks @NChamo , I don’t have anything, maybe I was thinking some way to handle the DOM that is on the browser, I know there are layers and it’s not possible to access DOM directly from webworkers, maybe some interface to allow it, but I don’t have idea how to implement it.

Btw, other topic, to enable wearables for better gaming integrations in decentraland, it would be cool to be able to receive an event or whatever in SDK when user changes his active wearables. Right now I think it’s not possible, correct?

Hey @pablo

Indeed that is not possible today. Could I ask you to create an issue on the github repo? Also, if you (or anyone on this thread) wants to implement that (or any other) feature, I would be more than happy to provide any guidance or help required.