Konfiguracje doświadczenia

*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.

Konfiguracje doświadczenia pozwalają na aktualizację wartości w grze w czasie rzeczywistym bez ponownego uruchamiania serwerów:

  • Włączanie i wyłączanie funkcji, takich jak uruchamianie lub wyłączanie nowego lochu wprowadzającego.
  • Dostosowywanie wartości w grze, takich jak zdrowie bossa, zdobywanie doświadczenia lub ceny przedmiotów.
  • Uruchamianie treści na czas, takich jak wydarzenie Halloween, które zaczyna się o północy.

Konfiguracje przyjmują formę kluczy i wartości. Zamiast używać stałych kodowanych na twardo w swoim kodzie, możesz użyć klucza, aby uzyskać wartość (ciąg, liczba, boolean lub obiekt JSON), a następnie zaktualizować tę wartość, kiedy tylko chcesz, bez publikowania nowej wersji swojego doświadczenia. Wymagane zmiany w kodzie są minimalne:


local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")

Możesz mieć jednocześnie do 1 000 aktywnych konfiguracji i zarządzać nimi w Creator Hub lub w Roblox Studio.

Przegląd strony Konfiguracji w Creator Hub

Tworzenie i edytowanie konfiguracji

  1. Na stronie Konfiguracje w Creator Hub dla swojego doświadczenia kliknij Utwórz konfigurację.

  2. Wprowadź klucz, typ, wartość i opcjonalnie opis, aby pomóc sobie lub swojemu zespołowi później zidentyfikować cel konfiguracji. Obsługiwane typy to ciąg, liczba, boolean i obiekt JSON.

  3. Skopiuj wygenerowany fragment kodu do skryptu serwera w swoim doświadczeniu, prawdopodobnie w ServerScriptService. Kod powinien wyglądać mniej więcej tak:


    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local MY_KEY = "my_key" -- opcjonalnie, przechowuj klucz konfiguracji jako stałą
    local myValue = configSnapshot:GetValue(MY_KEY)
  4. Użyj wartości tak, jak każdej innej zmiennej. Konfiguracje nie robią nic dopóki nie użyjesz ich w swoim kodzie.

Aby uzyskać więcej informacji o pracy z konfiguracjami w swoich skryptach, zobacz Dodaj konfiguracje do swojego kodu.

Edycja konfiguracji nie różni się od tworzenia nowej. Kliknij przycisk Edytuj i zaktualizuj wartość oraz opis według potrzeb.

Limity

Wartości konfiguracji mają następujące limity w zależności od typu.

TypMaksymalny rozmiar
Ciąg100 000 znaków
Liczba±1.7976931348623157e+308, ±2^53 dla dokładnych reprezentacji całkowitych
BooleanN/D
JSON100 000 znaków

Publikowanie konfiguracji

Po utworzeniu konfiguracji przechodzi ona w stan wstrzymany, abyś mógł ją przetestować, zanim stanie się dostępna publicznie. Zmiany wstrzymane są dostępne dla Ciebie i Twojego zespołu podczas sesji gry w Studio, nie dla graczy w żywych doświadczeniach. Strona Konfiguracje w Creator Hub pokazuje wszystkie aktywne i wstrzymane zmiany.

Strona Konfiguracji pokazująca nieopublikowane zmiany
  1. Po przetestowaniu wstrzymanych zmian kliknij Opublikuj teraz, aby opublikować dla wszystkich graczy w ciągu pięciu minut. Możesz również wybrać Publikuj przez 15 min, jeśli wolisz dłuższy okres wprowadzania zmian.
  2. (Zalecane) Dodaj opisową wiadomość publikacyjną, która wskazuje, co zaktualizowałeś. Ta wiadomość pojawia się na stronie Historia i może pomóc Tobie i Twojemu zespołowi później zidentyfikować cel zmiany.

Tworzenie i edytowanie konfiguracji w Studio

Jeśli wolisz, możesz tworzyć, edytować, wstrzymywać i publikować konfiguracje w Roblox Studio. Kliknij Plik > Otwórz konfiguracje. Interfejs Studio jest szczególnie wygodny do wstrzymywania i testowania nowych wartości.

Okno Studio do pracy z konfiguracjami

Wyświetlanie historii i przywracanie konfiguracji

Na stronie Konfiguracje kliknij Historia, aby zobaczyć wcześniejsze aktualizacje. Każda aktualizacja zawiera czas i datę zmiany, kto dokonał zmiany oraz wiadomość publikacyjną.

Strona historii z rozwinięciem różnic dla wartości konfiguracji

  • Rozwiń każdy wiersz, aby zobaczyć klucz, wartość przed zmianą i wartość po niej.
  • Użyj pola Szukaj klucz, aby wyszukiwać klucze - nie opisy ani wartości, tylko klucze.

Strona Historia umożliwia również przywracanie konfiguracji do poprzedniego stanu:

  1. Kliknij Przywróć obok zmiany, aby wstrzymać wartość „przed”. Zauważ, że przywrócenie konfiguracji odrzuca wszelkie istniejące wstrzymane zmiany.
  2. Wróć do strony Konfiguracje i opublikuj konfigurację.

Dodaj konfiguracje do swojego kodu

Główną klasą do pracy z konfiguracjami jest ConfigService, która pobiera najnowsze klucze i wartości dla Twojego doświadczenia. ConfigService jest dostępny tylko w skryptach serwera. Próba wywołania jej metod z skryptu klienta skutkuje błędem.

Pierwszym krokiem w pracy z konfiguracjami jest uzyskanie ConfigSnapshot, najnowszych wartości dla wszystkich konfiguracji w danym punkcie czasu. Istnieją dwa sposoby na uzyskanie migawki:

  • ConfigService:GetConfigAsync() jest przeznaczone dla globalnych konfiguracji, które chcesz zastosować do wszystkich graczy w doświadczeniu:


    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local bossHealth = configSnapshot:GetValue("bossHealth")
  • ConfigService:GetConfigForPlayerAsync() jest przeznaczone dla eksperymentów. Pobiera konfiguracje specyficzne dla gracza, aby różni gracze mogli uzyskać różne wartości.


    local ConfigService = game:GetService("ConfigService")
    local Players = game:GetService("Players")
    local function onPlayerAdded(player)
    local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)
    local bossHealth = playerConfigSnapshot:GetValue("bossHealth")
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

W obu przypadkach, jeśli klucz nie istnieje, ConfigSnapshot:GetValue() zwraca nil.

Odświeżanie migawek

ConfigSnapshots reprezentują punkt w czasie, stan konfiguracji w momencie, gdy poprosiłeś o migawkę. Aby uniknąć zakłóceń w rozgrywce, aktualizacje konfiguracji nie propagują się automatycznie do migawek. W konkurencyjnej strzelance, na przykład, możesz chcieć tylko nowych wartości konfiguracji między rundami, aby atrybuty broni nie wahały się w trakcie meczu.

Aby uzyskać najnowsze wartości ręcznie, użyj metody ConfigSnapshot:Refresh(). Opcjonalnie, podłącz funkcję do wydarzenia ConfigSnapshot.UpdateAvailable, aby automatycznie odświeżać:


configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)

Po odświeżeniu migawki możesz użyć ConfigSnapshot:GetValueChangedSignal(), aby nasłuchiwać zmiany konkretnego klucza, aby zaktualizować kod swojego doświadczenia:


configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)

Obsługa błędów

W rzadkich przypadkach, gdy konfiguracja nie uda się załadować i nigdy wcześniej nie była ładowana, ConfigService:GetConfigAsync() zgłasza błąd.

Jeśli ConfigService traci połączenie z serwerami Roblox po tym, jak wcześniej była załadowana, ConfigService:GetConfigAsync() zwraca migawkę z najnowszymi dostępnymi wartościami. Te migawki próbują nawiązać ponowne połączenie i uruchamiają wydarzenie UpdateAvailable, gdy pomyślnie załadują nowe aktualizacje.

Jak radzisz sobie z tymi rzadkimi sytuacjami, zależy od Ciebie. Możesz owinąć wywołanie w pcall() i mieć wartości zapasowe w swoim kodzie, pokazać graczowi błąd i czekać na ponowne połączenie migawki lub zastosować inne rozwiązanie.

Testuj konfiguracje

ConfigService ma wbudowane metody do tymczasowego testowania zmian w konfiguracjach zarówno w Studio, jak i na żywych serwerach bez wpływu na całe doświadczenie.

Aby ustawić lokalną wartość testową, wywołaj ConfigService:SetTestingValue() z poziomu skryptu serwera lub przez Konsolę dewelopera. Zmiany w wartościach testowych wyzwalają aktualizację konfiguracji wraz z sygnałem ConfigSnapshot.UpdateAvailable. Tak jak w przypadku aktualizacji produkcji, musisz odświeżyć istniejące migawki, aby uzyskać wartość testową:


local ConfigService = game:GetService("ConfigService")
ConfigService:SetTestingValue("bossHealth", 200)
local configSnapshot = ConfigService:GetConfigAsync()
local bossHealth = configSnapshot:GetValue("bossHealth") -- Teraz 200!

Zmiany testowe mają zastosowanie przez czas działania bieżącego serwera i nie propagują się do innych serwerów. W Studio mają zastosowanie do bieżącej sesji gry i nie wpływają na żywe serwery. Możesz ręcznie usunąć zmiany testowe za pomocą ConfigService:ClearTestingValue().

©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.