Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
141 stars 2 forks source link

User ID discoverability improvements #2982

Open gameboycjp opened 2 months ago

gameboycjp commented 2 months ago

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

Getting User IDs can be somewhat challenging, so having some sort of way to get ahold of that through an ingame tool would be helpful.

Describe the solution you'd like

My first thought is having a button to copy someones UID through the contacts menu on the dashboard, but there could be a better solution.

Describe alternatives you've considered

Directly interfacing the Resonite API, which is not user friendly, is one option. Getting present users IDs through Flux is an option, but requires the user who's ID is needed to be present.

Additional Context

No response

Requesters

gamethecupdog

Frooxius commented 2 months ago

What are the use-cases where do you need to get the UserID like this? A lot of them you should just be able to get it from the user if they're in world.

I'm not sure what are you looking to get the UserID based on either. Having it from contacts is one thing, but that only helps if you found it through the contacts. I don't know if that'd be good to have in contacts UI since it seems to be more advanced user feature and the Contacts UI is slated for rework.

shiftyscales commented 2 months ago

The primary example I could think of when reading this issue was for use in Grabbable, ValueUserOverride, and similar components with a user list- being able to easily add exclusions for friends in advance without needing them to be in the same session.

E.g. having accessories on my avatar that are only grabbable by close friends / family I explicitly assign to it- currently it's made much easier by just having them in the session so you can directly grab their user reference, e.g. with the user inspector.

But it also seemed like the sort of functionality that'd be better suited for post-contacts UI rework just to presumably have a unified system to be able to select specified users.

Frooxius commented 2 months ago

Yeah, if we want to put this into Contacts UI, that'll have to wait for the rework of that.

As far as I know we don't have user list on Grabbable though? But for ValueUserOverride, we could potentially add an inspector shortcut - however the question is, what is the UserID being looked up from? Would the user put in the username and then click a thing and it adds them to the list?

We could also just add a set of nodes for interacting with the cloud API to allow building own tools. E.g. fetch UserID from Username and stuff like that, but I'd need to think about that one more on what's the best way to add things like that - usually it's more efficient to fetch these things in one go (e.g. you fetch the entire user entry and then just access a single property).

shiftyscales commented 2 months ago

@Frooxius Grabbable has "OnlyUsers" which allow filtering which users can grab a given object based on whoever is on the list.

shiftyscales commented 2 months ago

I feel like the underlying issue (at least as it concerns me) can be boiled down to "a mechanism to easily find / create a user reference even if the user is not present in the session". I'll defer further responses to @gameboycjp as to what would best meet their needs / use-cases for this issue.

Frooxius commented 2 months ago

@shiftyscales Oooh ok, thanks for the info.

Finding user reference if the user is not in the session is not possible - it just doesn't exist. User references are only for users who are actually in the session. If they're not, that entity doesn't exist at all.

lxw404 commented 2 months ago

https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/1964 is making it very difficult at the moment to get user references from people in the world. The workarounds being, to inspect the user root and find the first user reference to a user, or build a tool that raycasts to a user and gets their user reference, but that's not ideal.

Having a dedicated UID button for people not in the session though would be a great addition as well.

gameboycjp commented 2 months ago

I'm looking for some kind of mechanism for getting UIDs themselves from users that aren't present. Examples for use of a string UID would be User from UserID in Protoflux, searching worlds by uploader, or to put in a headless config. All of these require UIDs, but getting those from users not present in your current session requires directly interfacing with the Cloud API as far as I'm aware.