Easier/Better ways to connect players together!

As Roblox Developer it is currently EXTREMELY HARD/Impossible to connect player’s together,
I would like to be able to show the player what their friends have accomplished on my game and be able to show off their progression and success on my games, after all that is a huge factor in creating solid retention and longer play times, because as a player I would want to be better than my friends, so i would put the effort into doing so

As a social platform I really think features like this would be vital. Right now players go into games and are with random people they do not know, so its more likely for the player to just try the game out for a bit then leave, there is NOTHING keeping them in.


If features are created so that developers can connect players together in this way, even if their friends aren’t on the server, they’d still know that their friends have played and what they have accomplished on the game, thus making them want to stay longer and try to best them.

You can see these kinds of features on games off roblox, and a lot of games use features from (for example) google play, or Facebook to show players what their friends are doing on the game they’re playing. Personally, I’ve found features like this holding me to the game and wanting to interact with friends and make cool things or compete with them.

Current Issue
If I were to try and do this right now, I would use two APIs :GetFriendsOnline() and Datastore’s :GetAsync()
Though due to the Datastore limitations, it would constantly exhaust the player’s request limits:
Players have 10 requests per minute, (sure the server has 60 , but you may want to use those for other things)
Players have a maximum of 200 friends. (Sure you can grab a few i.e 10, but who’s to say the friends you didn’t grab are the ones who’ve played your game before?)

Even with the current APIs it would take 20 minutes for the player to get ALL their friend’s data that they’d need.

Suggestion/Use case
an API that would allow me to get a “batch” or a “bulk” of data, supplying a list of keys, it would return a table of each key’s data.

Datastore:GetBatchAsync or Datastore:GetBulkAsync

local FriendsList = Player:GetFriendsOnline()
local KeysList = {}
for DataName, DataValue in pairs(FriendsList) do
    table.insert(KeysList, "Player_" .. DataValue.VisitorId)
local FriendsData = Datastore:GetBatchAsync(KeysList)

I can think of a few workarounds for this. You can tell if a player has played your game by using badges instead of DataStores or some other way. Don’t remember if there’s a limit to that. You can also just include players that have been in the same server as your current player.

Just my ideas though. I’d like a feature like this anyway