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, zdobywanie doświadczenia lub ceny przedmiotów.
- Uruchamianie treści czasowych, takich jak wydarzenie Halloween, które zaczyna się o północy.
- Nadawanie różnych wartości różnym graczom, na przykład przyznawanie nowym graczom dodatkowej zbroi.
Konfiguracje mają formę kluczy i wartości. Zamiast używać stałych w kodzie, możesz użyć klucza, aby uzyskać wartość (ciąg, liczba, wartość logiczna 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 danym 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, wartość logiczna i obiekt JSON. Kliknij Dalej.
(Opcjonalnie) Dodaj warunki i wartości docelowe. Warunki pozwalają na zastosowanie wartości konfiguracji do użytkowników, którzy spełniają (lub nie spełniają) określonych kryteriów, takich jak użytkownicy, którzy nigdy nie grali w twoją grę lub ci, którzy mówią po portugalsku. Aby dowiedzieć się więcej, zobacz Celuj w konfiguracje dla konkretnych graczy.
Skopiuj wygenerowany fragment kodu do skryptu serwera w swoim doświadczeniu, prawdopodobnie w ServerScriptService. Dla "globalnych" konfiguracji, które nie różnią się w zależności od gracza, kod może 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)Dla warunkowych konfiguracji i eksperymentów, kod jest nieco inny:
local ConfigService = game:GetService("ConfigService")local Players = game:GetService("Players")local MY_KEY = "my_key" -- opcjonalnie, przechowuj klucz konfiguracji jako stałąlocal function onPlayerAdded(player)local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)local myValue = playerConfigSnapshot:GetValue(MY_KEY)endPlayers.PlayerAdded:Connect(onPlayerAdded)Użyj wartości tak, jak używasz każdej innej zmiennej. Konfiguracje nic nie robią, chyba że użyjesz 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 |
| Wartość logiczna | N/A |
| JSON | 100,000 znaków |
Publikowanie konfiguracji
Po utworzeniu konfiguracji przechodzi ona w stan w przygotowaniu, abyś mógł ją przetestować, zanim stanie się publicznie dostępna. Zmiany w przygotowaniu 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 zmiany w przygotowaniu.

- Po przetestowaniu zmian w przygotowaniu kliknij Opublikuj teraz, aby opublikować dla wszystkich graczy prawie 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ść pojawia się na stronie Historia i może pomóc tobie i twojemu zespołowi później zidentyfikować cel zmiany.
Celuj w konfiguracje dla konkretnych graczy
Domyślnie konfiguracja dostarcza tę samą wartość wszystkim. Warunkowe konfiguracje pozwalają dostarczać różne wartości różnym graczom na podstawie atrybutów gracza (kraj, staż, język, status płatnika itp.).
Warunkowe konfiguracje mają trzy części, które określają, jaką wartość otrzymuje gracz:
- Reguły warunkowe definiują, kto pasuje. Każda reguła to wyrażenie logiczne, takie jak "aktywni płatnicy w pierwszych 30 dniach", które ocenia atrybuty gracza.
- Porządek reguł definiuje, jak wybrać, gdy gracz pasuje do więcej niż jednej reguły. Roblox ocenia reguły od góry do dołu i stosuje pierwszą pasującą gałąź. Reguły są uporządkowane globalnie, niezależnie od kolejności, w jakiej dodajesz wartości warunkowe do pojedynczego klucza.
- Wartości warunkowe definiują, co otrzymuje pasujący gracz. Dla każdego warunku dołączasz wartość. Jeśli gracz pasuje do reguły w tym warunku, otrzymuje powiązaną wartość; w przeciwnym razie otrzymuje domyślną wartość konfiguracji.
Obsługiwane atrybuty
Warunkowe konfiguracje obsługują następujące atrybuty. Te atrybuty mają te same definicje, co odpowiednie filtry i podziały w pulpitach analitycznych.
| Atrybut | Opis |
|---|---|
| Kraj | Geograficzna lokalizacja gracza. |
| Język | Ustawienie językowe gracza. |
| Nowy vs powracający | Czy gracz gra w twoje doświadczenie po raz pierwszy, czy grał w nie wcześniej. |
| Źródło | Jak gracz znalazł twoje doświadczenie, na przykład rekomendacja na stronie głównej, wyszukiwanie lub sponsorowana reklama. |
| Kiedy użytkownik po raz pierwszy grał | Jak dawno gracz po raz pierwszy grał w twoje doświadczenie, na przykład 0-30 dni temu lub 31-90 dni temu. Obliczane codziennie. |
| Status płatnika w doświadczeniu | Aktywność płatnicza gracza w twoim doświadczeniu, co pozwala na celowanie w różne segmenty płacących użytkowników. Obliczane codziennie. |
| Status aktywności w doświadczeniu | Jak niedawno gracz grał w twoje doświadczenie, co pozwala na różne traktowanie nowych, aktywnych, nieaktywnych i reaktywowanych graczy. Obliczane codziennie. |
| Zaangażowanie użytkownika | Jak dużo gracz gra w twoje doświadczenie każdego tygodnia, co pozwala na oddzielenie najbardziej zaangażowanych graczy od bardziej casualowych. Obliczane codziennie. |
| Status wydawcy na platformie | Czy gracz jest aktywnym wydawcą na całej platformie Roblox. Obliczane codziennie. |
| Status aktywności na platformie | Jak niedawno gracz grał gdziekolwiek na Roblox, a nie tylko w twoim doświadczeniu. Obliczane codziennie. |
Tworzenie wartości warunkowych
Dodajesz warunki podczas tworzenia lub edytowania konfiguracji. Na kroku Dodaj celowanie dodaj warunek:
- Wybierz istniejący warunek lub kliknij Utwórz nowy.
- Dodaj jedną lub więcej reguł.
- Ustaw wartość, którą otrzymują pasujący gracze.
Na przykład, aby dać trudniejsze doświadczenie najlepszym aktywnym płatnikom, którzy zaczęli grać w ciągu ostatnich 30 dni, możesz zwiększyć ich wartość dynamicBossHealth.

Uzyskiwanie wartości docelowych w kodzie
Aby uzyskać wartości docelowe, użyj ConfigService:GetConfigForPlayerAsync(), który ocenia reguły i porządek dla konkretnego gracza. ConfigService:GetConfigAsync() nie stosuje celowania, ponieważ nie jest specyficzny dla pojedynczego gracza. Aby uzyskać więcej informacji, zobacz Dodaj konfiguracje do swojego kodu.
Najlepsze praktyki i limity
- Każda wartość warunkowa musi odpowiadać typowi danych (wartość logiczna, ciąg, liczba lub JSON) domyślnej wartości konfiguracji.
- Możesz mieć do 100 warunków na grę.
- Każdy klucz konfiguracji obsługuje do 20 warunków.
- Sprawdź porządek reguł przed publikacją. Ponieważ reguły są uporządkowane globalnie, upewnij się, że twoja kolejność oceny jest poprawnie priorytetowa. Aby sprawdzić kolejność, kliknij zakładkę Warunki.
Tworzenie i edytowanie konfiguracji w Studio
Jeśli wolisz, możesz tworzyć, edytować, przygotowywać i publikować konfiguracje w Roblox Studio. Kliknij Plik > Otwórz konfiguracje, aby otworzyć widżet. Interfejs Studio jest szczególnie wygodny do przygotowywania 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 przygotowawczego 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 do wyszukiwania kluczy - nie opisów ani wartości, tylko kluczy.
Strona Historia pozwala również przywrócić konfiguracje do poprzedniego stanu:
- Kliknij Przywróć obok zmiany, aby przygotować wartość "przed". Zauważ, że przywrócenie konfiguracji odrzuca wszelkie istniejące zmiany w przygotowaniu.
- Wróć do strony Konfiguracje i opublikuj konfigurację.
Dodaj konfiguracje do swojego kodu
Główna klasa do pracy z konfiguracjami to 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() pobiera konfiguracje specyficzne dla gracza, aby różni gracze mogli otrzymać różne wartości. Użyj go dla warunkowych konfiguracji i eksperymentów.
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. Gdy 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 migawków
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ć tylko nowych wartości konfiguracji między rundami, aby atrybuty broni nie zmieniały się w trakcie meczu.
Aby uzyskać najnowsze wartości ręcznie, 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 w wartościach 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().