Komunikacja międzyserwerowa

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Normalnie kod w grze może wpływać tylko na serwer lub klientów, na którym działa, ale mogą istnieć sytuacje, w których chcesz, aby różne serwery mogły się ze sobą komunikować, w tym:

  • Ogólne ogłoszenia — Wyślij ogłoszenia, takie jak "Użytkownik znalazł specjalny przedmiot!" do wszystkich serwerów gry.
  • Przeglądarka serwerów w czasie rzeczywistym — Zbierz listę wszystkich serwerów gry i kto się w nich znajduje (aktualizowaną co minutę) i wyświetl ją na maksymalnie 20 serwerach.

Możesz wspierać komunikację międzyserwerową w swojej grze, używając MessagingService. Możesz także użyć przykładowej gry Teleportation Playground, aby zobaczyć, jak działa komunikacja międzyserwerowa, zanim ją zaimplementujesz. Na koniec zobacz tutaj, aby zbadać komunikację międzyserwerową przy użyciu narzędzi zewnętrznych.

Ustawienie komunikacji międzyserwerowej

Aby włączyć komunikację międzyserwerową, musisz ustawić temat, który jest dostosowanym kanałem wiadomości dostępnym z wielu serwerów. Po utworzeniu tematu możesz subskrybować użytkowników na temat, aby otrzymywać wiadomości i umożliwiać publikowanie wiadomości do tematu.

Subskrybowanie użytkowników do odbierania wiadomości

Użyj MessagingService:SubscribeAsync(), aby subskrybować użytkowników do tematu i określić funkcję zwrotną, która wykrywa publikowanie wiadomości w tym temacie. Na przykład, poniższy przykład kodu subskrybuje wszystkich użytkowników na temat FriendServerEvent, który odbiera wiadomości, gdy jakikolwiek użytkownik zostaje przeniesiony na inny serwer.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Subskrybuj temat
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Wypisz się z tematu po zmianie pokrewieństwa gracza
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)

Publikowanie wiadomości

Użyj MessagingService:PublishAsync(), aby dopasować konkretny temat i opublikować do niego wiadomość. Na przykład, poniższy przykład kodu używa PublishAsync(), aby powiadomić wszystkich użytkowników, gdy użytkownik dołącza do nowego serwera, w tym Player.Name, reprezentującego nazwę wyświetlaną użytkownika oraz JobId, unikalny identyfikator dla działającej instancji serwera gry.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publikuj w temacie
local publishSuccess, publishResult = pcall(function()
local message = player.Name .. " dołączył do serwera z 'JobId' równym " .. game.JobId
MessagingService:PublishAsync(MESSAGING_TOPIC, message)
end)
if not publishSuccess then
print(publishResult)
end
end)
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.