Konfiguracje doświadczeń pozwalają na aktualizację wartości w grze w czasie rzeczywistym bez ponownego uruchamiania serwerów:
- Włączanie i wyłączanie funkcji, takich jak włączenie lub wyłączenie nowego lochu wprowadzającego.
- Dostosowywanie wartości w grze, takich jak zdrowie bossa, zdobywane doświadczenie lub ceny przedmiotów.
- Uruchamianie treści czasowych, takich jak wydarzenie Halloween, które zaczyna się o północy.
Konfiguracje przyjmują formę kluczy i wartości. Zamiast używać stałych w kodzie, możesz użyć klucza, aby uzyskać wartość (ciąg, liczba, boolean lub obiekt JSON) i 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ć do 1,000 aktywnych konfiguracji w dowolnym momencie i zarządzać nimi w Creator Hub lub w Roblox Studio.

Tworzenie i edytowanie konfiguracji
Na stronie Creator Hub Konfiguracje dla swojego doświadczenia, kliknij Utwórz konfigurację.
Określ 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.
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" -- opcjonalne, przechowuj klucz konfiguracji jako stałąlocal myValue = configSnapshot:GetValue(MY_KEY)Użyj wartości tak, jak używasz każdej innej zmiennej. Konfiguracje nic nie robią, chyba że używasz ich w swoim kodzie.
Aby uzyskać więcej informacji na temat pracy z konfiguracjami w swoich skryptach, zobacz Dodaj konfiguracje do swojego kodu.
Edycja konfiguracji nie różni się od jej tworzenia. Kliknij przycisk Edytuj i zaktualizuj wartość oraz opis według potrzeb.
Limity
Wartości konfiguracji mają następujące limity według typu.
| Typ | Maksymalny rozmiar |
|---|---|
| Ciąg | 100,000 znaków |
| Liczba | ±1.7976931348623157e+308, ±2^53 dla dokładnych reprezentacji całkowitych |
| Boolean | N/A |
| JSON | 100,000 znaków |
Publikowanie konfiguracji
Po utworzeniu konfiguracji przechodzi ona w stan wstępny, abyś mógł ją przetestować, zanim stanie się publicznie dostępna. Zmiany wstępne są dostępne dla Ciebie i Twojego zespołu w sesjach gry w Studio, ale nie dla graczy w aktywnych doświadczeniach. Strona Konfiguracje w Creator Hub pokazuje wszystkie aktywne i wstępne zmiany.

- Po przetestowaniu swoich zmian wstępnych kliknij Opublikuj teraz, aby opublikować je dla wszystkich graczy niemal natychmiast (w przybliżeniu od 15 sekund do 1 minuty). Możesz również wybrać Opublikuj przez 15 minut, jeśli wolisz dłuższy, bardziej stopniowy okres wdrażania. W niektórych przypadkach klienci mogą potrzebować kilku minut, aby odzwierciedlić zmiany po publikacji.
- (Zalecane) Dodaj opisową wiadomość publikacyjną, która wskazuje, co zaktualizowałeś. Ta wiadomość pojawi 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ć, wstępnie ustawiać i publikować konfiguracje w Roblox Studio. Kliknij Plik > Otwórz konfiguracje, aby otworzyć widżet. Interfejs Studio jest szczególnie wygodny do wstępnego ustawiania i testowania nowych wartości.

Publikowanie konfiguracji do innego doświadczenia
W Studio możesz publikować swoje konfiguracje do innego doświadczenia, co całkowicie nadpisuje konfiguracje dla tego doświadczenia. Może to być szczególnie przydatne do synchronizacji konfiguracji z doświadczenia wstępnego lub deweloperskiego do aktywnego doświadczenia.
W Roblox Studio przejdź do górnego menu i wybierz Plik > Otwórz konfiguracje.
W zakładce Opublikowane widżetu Konfiguracji kliknij ikonę ⋮ i wybierz Opublikuj jako.

W oknie dialogowym, które się pojawi, znajdź i wybierz docelowe doświadczenie z listy grup, w których masz uprawnienia do edycji.

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

- 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 pozwala również przywrócić konfiguracje do poprzedniego stanu:
- Kliknij Przywróć obok zmiany, aby wstępnie ustawić wartość "przed". Zauważ, że przywrócenie konfiguracji odrzuca wszelkie istniejące zmiany wstępne.
- 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 dla skryptów serwera. Próba wywołania jego metod z skryptu klienta skutkuje błędem.
Pierwszym krokiem do pracy z konfiguracjami jest pobranie ConfigSnapshot, najnowszych wartości dla wszystkich konfiguracji w danym momencie. Istnieją dwie metody uzyskania 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 specyficzne dla gracza konfiguracje, aby różni gracze mogli otrzymać 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")endPlayers.PlayerAdded:Connect(onPlayerAdded)
W każdym przypadku, jeśli klucz nie istnieje, ConfigSnapshot:GetValue() zwraca nil.
Autouzupełnianie
Konfiguracje są zintegrowane z autouzupełnianiem w Edytorze Skryptów. Kiedy wywołujesz ConfigSnapshot:GetValue(), edytor sugeruje nazwy kluczy konfiguracji i wyświetla typ każdej konfiguracji, gdy najedziesz na nazwę zmiennej.
Jeśli Twój skrypt używa trybu --!strict, linter może wykryć i zweryfikować typ za Ciebie.
Autouzupełnianie działa również z konfiguracjami, które używają złożonych zagnieżdżonych typów JSON.
Odświeżanie migawek
ConfigSnapshots reprezentują punkt w czasie, stan konfiguracji, gdy poprosiłeś o migawkę. Aby uniknąć zakłócania rozgrywki, aktualizacje konfiguracji nie propagują się automatycznie do migawek. W przypadku konkurencyjnego strzelca, na przykład, możesz chcieć, aby nowe wartości konfiguracji były dostępne tylko między rundami, aby atrybuty broni nie zmieniały się w trakcie meczu.
Aby ręcznie uzyskać najnowsze wartości, użyj metody ConfigSnapshot:Refresh(). Opcjonalnie, połącz funkcję z wydarzeniem 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ć zmian w konkretnym kluczu, 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 ładuje się i nigdy wcześniej nie była ładowana, ConfigService:GetConfigAsync() zgłasza błąd.
Jeśli ConfigService traci połączenie z serwerami Roblox po wcześniejszym załadowaniu, ConfigService:GetConfigAsync() zwraca migawkę z najnowszymi dostępnymi wartościami. Te migawki próbują ponownie połączyć się i uruchamiają zdarzenie UpdateAvailable, gdy pomyślnie załadują nowe aktualizacje.
Jak poradzisz 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.
Testowanie konfiguracji
ConfigService ma wbudowane metody do tymczasowego testowania zmian konfiguracji 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 skryptu serwera lub przez Konsolę Dewelopera. Zmiany wartości testowych wyzwalają aktualizację konfiguracji wraz z sygnałem ConfigSnapshot.UpdateAvailable. Tak jak w przypadku aktualizacji produkcyjnej, 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 obowiązują 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 wyczyścić zmiany testowe za pomocą ConfigService:ClearTestingValue().