Cấu hình trải nghiệm cho phép bạn cập nhật giá trị trong trò chơi theo thời gian thực mà không cần khởi động lại máy chủ:
- Bật và tắt các tính năng, chẳng hạn như kích hoạt hoặc vô hiệu hóa một ngục tối hướng dẫn mới.
- Điều chỉnh các giá trị trong trò chơi như sức khỏe boss, kinh nghiệm nhận được hoặc giá món đồ.
- Khởi động nội dung theo thời gian, chẳng hạn như một sự kiện Halloween bắt đầu lúc nửa đêm.
Cấu hình có dạng các cặp khóa và giá trị. Thay vì sử dụng các hằng số mã cứng trong mã của bạn, bạn có thể sử dụng khóa để lấy một giá trị (chuỗi, số, boolean hoặc đối tượng JSON) và sau đó cập nhật giá trị đó bất kỳ lúc nào bạn muốn mà không phải phát hành một phiên bản mới của trải nghiệm. Các thay đổi mã cần thiết là rất ít:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local myValue = configSnapshot:GetValue("my_key_name")
Bạn có thể có tới 1.000 cấu hình hoạt động tại bất kỳ thời điểm nào và quản lý chúng trên Creator Hub hoặc trong Roblox Studio.

Tạo và chỉnh sửa cấu hình
Trên trang Creator Hub Cấu hình cho trải nghiệm của bạn, nhấp vào Tạo cấu hình.
Chỉ định một khóa, một loại, một giá trị, và tùy chọn, một mô tả để giúp bạn hoặc nhóm của bạn sau này xác định mục đích của cấu hình. Các loại được hỗ trợ là chuỗi, số, boolean, và đối tượng JSON.
Sao chép đoạn mã được tạo vào một kịch bản máy chủ trong trải nghiệm của bạn, có thể nằm trong ServerScriptService. Mã nên trông giống như thế này:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- tùy chọn, lưu khóa cấu hình dưới dạng một hằng sốlocal myValue = configSnapshot:GetValue(MY_KEY)Sử dụng giá trị như bạn sử dụng bất kỳ biến nào khác. Các cấu hình không làm gì cả trừ khi bạn sử dụng chúng trong mã của mình.
Để biết thêm thông tin về việc làm việc với các cấu hình trong mã của bạn, xem Thêm cấu hình vào mã của bạn.
Việc chỉnh sửa một cấu hình không khác gì so với việc tạo một cái. Nhấp vào nút Chỉnh sửa và cập nhật giá trị và mô tả theo ý muốn.
Giới hạn
Giá trị cấu hình có các giới hạn sau theo loại.
| Loại | Kích thước tối đa |
|---|---|
| Chuỗi | 100.000 ký tự |
| Số | ±1.7976931348623157e+308, ±2^53 cho các biểu diễn số nguyên chính xác |
| Boolean | N/A |
| JSON | 100.000 ký tự |
Xuất bản cấu hình
Sau khi bạn tạo một cấu hình, nó sẽ chuyển sang trạng thái đã điều chỉnh để bạn có thể thử nghiệm trước khi nó trở nên công khai. Các thay đổi đã điều chỉnh có sẵn cho bạn và nhóm của bạn trong các phiên chơi Studio, không cho người chơi trong các trải nghiệm trực tiếp. Trang Cấu hình trên Creator Hub hiển thị tất cả các thay đổi đang hoạt động và đã điều chỉnh.

- Sau khi bạn thử nghiệm các thay đổi đã điều chỉnh của mình, nhấp vào Xuất bản ngay để xuất bản cho tất cả người chơi trong vòng năm phút. Bạn cũng có thể chọn Xuất bản trong 15 phút nếu bạn muốn thời gian triển khai lâu hơn.
- (Khuyến nghị) Thêm một thông điệp xuất bản mô tả chỉ ra những gì bạn đã cập nhật. Thông điệp này xuất hiện trên trang Lịch sử và có thể giúp bạn và nhóm của bạn sau này xác định mục đích của thay đổi.
Tạo và chỉnh sửa cấu hình trong Studio
Nếu bạn thích, bạn có thể tạo, chỉnh sửa, điều chỉnh và xuất bản các cấu hình trong Roblox Studio. Nhấp vào Tệp > Mở cấu hình. Giao diện Studio đặc biệt thuận tiện để điều chỉnh và thử nghiệm các giá trị mới.

Xem lịch sử và khôi phục cấu hình
Trên trang Cấu hình, nhấp vào Lịch sử để xem các bản cập nhật trước đó. Mỗi bản cập nhật có thời gian và ngày giờ của thay đổi, ai đã thực hiện thay đổi và thông điệp xuất bản.

- Mở rộng từng hàng để xem khóa, giá trị trước khi thay đổi và giá trị sau khi thay đổi.
- Sử dụng hộp Tìm kiếm khóa để tìm kiếm các khóa - không phải mô tả hoặc giá trị, chỉ khóa.
Trang Lịch sử cũng cho phép bạn khôi phục các cấu hình về trạng thái trước đó:
- Nhấp vào Khôi phục bên cạnh thay đổi để điều chỉnh giá trị "trước". Lưu ý rằng việc khôi phục một cấu hình sẽ loại bỏ bất kỳ thay đổi nào đã điều chỉnh hiện có.
- Quay lại trang Cấu hình và xuất bản cấu hình.
Thêm cấu hình vào mã của bạn
Lớp chính để làm việc với các cấu hình là ConfigService, lớp này lấy các khóa và giá trị mới nhất cho trải nghiệm của bạn. ConfigService chỉ có sẵn cho các kịch bản máy chủ. Việc cố gắng gọi các phương thức của nó từ một kịch bản khách hàng sẽ dẫn đến lỗi.
Bước đầu tiên trong việc làm việc với các cấu hình là lấy một ConfigSnapshot, các giá trị mới nhất cho tất cả các cấu hình tại thời điểm hiện tại. Có hai phương thức để lấy một ảnh chụp:
ConfigService:GetConfigAsync() là cho các cấu hình toàn cầu mà bạn muốn áp dụng cho tất cả người chơi trong trải nghiệm:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth")ConfigService:GetConfigForPlayerAsync() là cho các thí nghiệm. Nó lấy các cấu hình cụ thể cho người chơi để các người chơi khác nhau có thể nhận được các giá trị khác nhau.
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)
Trong cả hai trường hợp, nếu khóa không tồn tại, ConfigSnapshot:GetValue() sẽ trả về nil.
Làm mới ảnh chụp
ConfigSnapshots đại diện cho một thời điểm, trạng thái của cấu hình khi bạn yêu cầu ảnh chụp. Để tránh làm gián đoạn trò chơi, các cập nhật cho một cấu hình không tự động lan truyền đến các ảnh chụp. Trong một trò chơi bắn súng cạnh tranh, chẳng hạn, bạn có thể chỉ muốn các giá trị cấu hình mới giữa các hiệp đấu để các thuộc tính vũ khí không biến đổi trong trận đấu.
Để có được các giá trị mới nhất một cách thủ công, hãy sử dụng phương thức ConfigSnapshot:Refresh(). Tùy chọn, kết nối một hàm với sự kiện ConfigSnapshot.UpdateAvailable để làm mới tự động:
configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)
Sau khi bạn làm mới một ảnh chụp, bạn có thể sử dụng ConfigSnapshot:GetValueChangedSignal() để lắng nghe các thay đổi của một khóa cụ thể để có thể cập nhật mã cho trải nghiệm của bạn:
configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)
Xử lý lỗi
Trong một số trường hợp hiếm hoi khi cấu hình không thể tải và chưa bao giờ được tải trước đó, ConfigService:GetConfigAsync() ném ra một lỗi.
Nếu ConfigService mất kết nối với máy chủ Roblox sau khi đã được tải trước đó, ConfigService:GetConfigAsync() sẽ trả về một ảnh chụp với các giá trị mới nhất có sẵn. Những ảnh chụp này cố gắng kết nối lại và phát ra sự kiện UpdateAvailable khi chúng tải thành công các cập nhật mới.
Cách bạn xử lý những tình huống không phổ biến này là tùy thuộc vào bạn. Bạn có thể bọc cuộc gọi trong một pcall() và có các giá trị dự phòng trong mã của mình, hiển thị lỗi cho người chơi và chờ ảnh chụp kết nối lại, hoặc một giải pháp khác.
Kiểm tra cấu hình
ConfigService có các phương thức tích hợp để tạm thời kiểm tra các thay đổi cấu hình vừa trong Studio vừa trên các máy chủ trực tiếp mà không ảnh hưởng đến toàn bộ trải nghiệm.
Để thiết lập một giá trị thử nghiệm cục bộ, gọi ConfigService:SetTestingValue() từ một kịch bản máy chủ hoặc qua Bảng điều khiển Nhà phát triển. Các thay đổi cho các giá trị thử nghiệm sẽ kích hoạt một cập nhật cấu hình cùng với tín hiệu ConfigSnapshot.UpdateAvailable. Giống như một cập nhật sản xuất, bạn phải làm mới các ảnh chụp hiện có để nhận được giá trị thử nghiệm:
local ConfigService = game:GetService("ConfigService")ConfigService:SetTestingValue("bossHealth", 200)local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth") -- Bây giờ là 200!
Các thay đổi thử nghiệm sẽ áp dụng trong suốt thời gian của máy chủ hiện tại và không lan truyền đến các máy chủ khác. Trong Studio, chúng sẽ áp dụng cho phiên chơi hiện tại và không ảnh hưởng đến các máy chủ trực tiếp. Bạn có thể xóa các thay đổi thử nghiệm một cách thủ công bằng ConfigService:ClearTestingValue().