Making a clan/crew/guild system - how do you handle cross-server updates?

The best way to do is using datastore instead of messaging as you want the changes you made to stay, and a combination of messaging service to get real time feedback?
You could also use a 3rd party hosting service to store all of this data and get it back in real time, which would probably be the best way to do it but it tricky.

You use messaging Service to send Data across servers.
For example:

local MessagingService = game:GetService("MessagingService");

--// Signalling when you collect info from a different server
local Success, Response = pcall(function()
	return MessagingService:SubscribeAsync("test", function(message)
		print(message.Data);
	end)
end)

--// Sending Info
MessagingService:PublishAsync("test", "This Message is from a different server!");

This could work in theory but it would have a horrible player experience as it would cause servers to restart everytime a player wants to update something.

DataStores are a horrible solution as you would end up having to update them a bunch and you wouldnt even get the updates in real time. You would have to constantly check in each individual server if the data updated and it could lead to potential spamming with DataStores.

3 Likes

I know that, I mean what part did you use it for? Did you use it to send updates every time someone made an action, only important actions, etc

Yep, thats somewhat what I use it for.

You could probably be fine with updating every 1-2 minutes as there Are some limitations to the service and how many requests you can make per minute but with efficient scripting and cooldowns you can probably implement live updates easily.

For clans handling make firebase datastore. To save personal data use profileservice