Normalmente, el código dentro de una experiencia solo puede afectar al servidor o a los clientes en los que se ejecuta, pero puede haber situaciones en las que quieras que diferentes servidores se comuniquen entre sí, incluyendo:
- Anuncios globales — Envía anuncios como "¡Un usuario encontró un objetoespecial!" a todos los servidores de la experiencia.
- Navegador de servidor en tiempo real — Compila una lista de todos los servidores de la experiencia y quién está en ellos (actualizada cada minuto) y muestra la lista en un máximo de 20 servidores.
Puedes admitir mensajes entre servidores en tu experiencia usando MessagingService.También puedes usar la experiencia de muestra de juego de teletransportación para ver cómo funciona el mensajería entre servidores antes de implementarla.Por último, vea aquí para explorar la comunicación entre servidores usando herramientas externas.
Configuración de mensajería entre servidores
Para habilitar el mensajería entre servidores, debe configurar un tema que es un canal de mensajes personalizado accesible desde múltiples servidores.Después de crear un tema, puedes suscribir usuarios al tema para recibir mensajes y habilitar publicar mensajes al tema.
Suscribir usuarios para recibir mensajes
Usa MessagingService:SubscribeAsync() para suscribir a los usuarios a un tema y especificar una función de llamada de devolución que detecta mensajes que se publican en ese tema.Por ejemplo, el siguiente ejemplo de código suscribe a todos los usuarios a un tema FriendServerEvent que recibe mensajes cuando cualquier usuario se teletransporta a un servidor diferente.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Suscribirse al tema
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Darse de baja del tema al cambiar el ancestro del jugador
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Publicar mensajes
Usa MessagingService:PublishAsync() para coincidir con un tema específico y publicar un mensaje en él.Por ejemplo, el siguiente ejemplo de código utiliza PublishAsync() para notificar a todos los usuarios cuando un usuario se une a un nuevo servidor, incluido el Player.Name que representa el nombre de visualización del usuario y el JobId , un identificador único para la instancia del servidor de experiencia en ejecución.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publicar al tema
local publishSuccess, publishResult = pcall(function()
local message = player.Name .. " joined server with 'JobId' of " .. game.JobId
MessagingService:PublishAsync(MESSAGING_TOPIC, message)
end)
if not publishSuccess then
print(publishResult)
end
end)