Developer Deeplinking [Beta]

Also, while I am happy that this feature exists (I had a game that relied on game-codes which can now use this feature to automatically open the correct game-code) I am unsatisfied with the 200 byte limit, I would love if Roblox could support more than this for long json encoded strings, for example, in a promotion I could have a referrer, refferal-platform, discount-code, promotion-type, and room-code (which is almost certain to bypass the limit when encoded) all in the same url, preferably the only limitation should be the url max size of 2,500 characters that most browsers impose.

5 Likes

Will there be any way for us to allow users to copy these links (client-side) to their clip-boards in-game? Ideally would be cool to generate links in-game that users can then share.

Doesn’t need to be full clipboard copy access, just an API to copy a link to the clipboard using this feature e.g Player:CopyLaunchDataToClipboard(launchData: string) - as an example, Player:CopyLaunchDataToClipboard("exampleDataHere") would give the clipboard https://www.roblox.com/games/start?placeId=<placeId>&launchData=exampleDataHere


As an example use case - in Islands we have it set up so that users have “join codes” (e.g. POP123) for their islands, which they can input into some UI to join each other in-game with. It is quite a common thing for users to share out their join codes to their friends, or to the wider community (especially with published islands/shops) and join each-other through those.

I feel like a case like this is a good use of this sort of feature, and could simplify the process of this quite a bit by allowing users to just share these join “links”, to allow other players to join directly without needing to load into the game first, then open a UI to input these codes.

20 Likes

Interesting, maybe this could be used somewhat like a substitute for codes :eyes:
Will be interesting to see what people come up with :slight_smile:

2 Likes

How am I supposed to know if I formatted the launchdata correctly? I have no idea what any of that means

You should have given us tools to use or at least an explanation; pretty sure launchdata can’t just be plain text

1 Like

We currently support copy/paste in text inputs, which I believe you can use in this use case.
There are currently no plans for API support for a “copy to clipboard” functionality. Hope that answers your question!

1 Like

If you don’t mind me asking why this is the case even if it was locked behind plugin access only would further improve our experience in studio with the assistance of plugins.

2 Likes

You can use a URL decoder to see what that string will look like when passed into the client. There are many URL encoders/decoders you can utilize.
We’ll look to make the documentation more clear on this point.

2 Likes

No offence, but this isn’t really intuitive, the fact that we have to ask a player to ‘pretty please highlight all of this text, hit ctrl + c and then it will be on your clipboard’ isn’t good ux at all.

8 Likes

I tried this before asking and didn’t get the result I was looking for

okay, I think I get it now; I’m supposed to append the encoded data at the end of the URL

3 Likes

It feels like you may be able to do this already:

  1. Ingame player clicks ‘Make Link’ button
  2. The server holding that player generates a link code
  3. The server sends the link code back down to the player’s client
  4. The player’s client creates a text field with a URL in it, say easy.gg/join/POP123 (not real link!)
  5. The player copies the URL out of the text field (by clicking inside it and pressing Ctrl+C)
  6. The player sends this URL to their friend
  7. The friend clicks on this URL, loading easy.gg/join/POP123
  8. The external website sees easy.gg/join/POP123 and throws a HTTP 301 Moved Permanently, instead making their friend load https://www.roblox.com/games/start?placeId=0&launchData=POP123
2 Likes

That would be functionally no different to a model with a malicious script that grants a specific user backdoor access.

1 Like

You are not allowed to use offsite-urls in-experience, directly providing the Roblox link would be better.

Yeah thought about that way of doing it, just would be nice user-experience wise for something simpler for users than manual copy-paste. Thanks though!

1 Like

Possibly. But imagine a mobile player trying to copy a link bigger then their display. They can’t triple-tap to select all as that clears the text field in Roblox.

You can set TextEditable to false, that will make sure the text does not change.

1 Like

Would definitely simplify the unwieldy link, yeah. Don’t know if we’d be able to use external links in-game for that unfortunately without Roblox having an issue with it, though. So not really an option for that use case.

To tie into this, it would also be useful if SocialService:PromptGameInvite() had support for an optional launchData parameter that is included in any link sent by that prompt. I created a feature request for this here:

5 Likes

This is an interesting update with many potential use possibilities, including analytics and creating a instance sharing system. Would it be possible to use this feature to award users with in-game features e.g. exclusive items and abilities, so long as it is not monetised? This could potentially remove the need to enter Twitter Codes, for example, which I’ve seen in many older Roblox games, as developers could post a link and it would reward the user with that exclusive item.

1 Like

Great feature! Cant wait to see this get released in the near future. :slight_smile:

1 Like

It would be nice if we got a simplified share link as currently, the mess of analytical and other jank pushes it close to the 400 character limit already

Why not simplify ro.blox.com/Ebh5/... to just ro.blox.com/launch?placeId=...&launchData

There’s a lot less random jank and gives developers more room to play around with launchData

Internally, I wouldn’t use JSON anyway, I’d use encoded binary data through base64 but each to their own I guess.

5 Likes