Cấu hình trải nghiệm cho phép bạn cập nhật các 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 của boss, lượng kinh nghiệm nhận được, hoặc giá của các vật phẩm.
- Khởi động nội dung theo thời gian, chẳng hạn như một sự kiện Halloween bắt đầu vào giữa đêm.
Cấu hình có dạng các 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 cứ khi nào bạn muốn mà không cần phát hành một phiên bản mới của trải nghiệm của bạn. Các thay đổi mã cần thiết là tối thiểu:
local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")Bạn có thể có tối đa 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 script máy chủ trong trải nghiệm của bạn, có thể là trong ServerScriptService. Mã nên trông giống như sau:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- tùy chọn, lưu trữ khóa cấu hình như một hằng sốlocal myValue = configSnapshot:GetValue(MY_KEY)Sử dụng giá trị như bạn sẽ sử dụng bất kỳ biến nào khác. Cấu hình không làm gì cả trừ khi bạn sử dụng chúng trong mã của bạn.
Để 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, hãy xem Thêm cấu hình vào mã của bạn.
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ó chuyển sang trạng thái đang chờ để bạn có thể thử nghiệm trước khi nó trở nên công khai. Các thay đổi đang chờ 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à đang chờ.

- Sau khi bạn thử nghiệm các thay đổi đang chờ 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 gần như ngay lập tức (khoảng từ 15 giây đến 1 phút). Bạn cũng có thể chọn Xuất bản trong 15 phút nếu bạn thích một khoảng thời gian triển khai dài hơn, dần dần. Trong một số trường hợp, khách hàng có thể mất vài phút để phản ánh các thay đổi sau khi xuất bản.
- (Khuyến nghị) Thêm một thông điệp xuất bản mô tả cho biết bạn đã cập nhật gì. 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, chờ và xuất bản cấu hình trong Roblox Studio. Nhấp vào Tệp > Mở Cấu hình để mở widget. Giao diện Studio đặc biệt thuận tiện cho việc chờ và thử nghiệm các giá trị mới.

Xuất bản cấu hình đến một trải nghiệm khác
Trong Studio, bạn có thể xuất bản các cấu hình của mình đến một trải nghiệm khác, điều này hoàn toàn ghi đè lên các cấu hình cho trải nghiệm đó. Điều này có thể đặc biệt hữu ích cho việc đồng bộ hóa các cấu hình từ một trải nghiệm đang chờ hoặc phát triển đến trải nghiệm trực tiếp.
Trong Roblox Studio, đi đến menu trên cùng và chọn Tệp > Mở Cấu hình.
Trong tab Đã xuất bản của widget Cấu hình, nhấp vào biểu tượng ⋮ và chọn Xuất bản Như.

Trong hộp thoại xuất hiện, tìm và chọn trải nghiệm mục tiêu từ danh sách các nhóm mà bạn có quyền chỉnh sửa.

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 cập nhật trước đó. Mỗi cập nhật có thời gian và ngày của thay đổi, ai đã thực hiện thay đổi, và thông điệp xuất bản.

- Mở rộng mỗi hàng để xem khóa, giá trị trước khi thay đổi, và giá trị sau đó.
- 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ỉ các 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 để chờ 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 đang chờ nào 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 script máy chủ. Việc cố gắng gọi các phương thức của nó từ một script khách hàng sẽ dẫn đến lỗi.
Bước đầu tiên để 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 snapshot:
ConfigService:GetConfigAsync() dành 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() dành cho 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.
Tự động hoàn thành
Các cấu hình được tích hợp vào tính năng tự động hoàn thành của Trình soạn thảo Script. Khi bạn gọi ConfigSnapshot:GetValue(), trình soạn thảo sẽ gợi ý tên khóa cấu hình của bạn và hiển thị loại của mỗi cấu hình khi bạn di chuột qua tên biến.
Nếu script của bạn sử dụng chế độ --!strict, trình kiểm tra có thể phát hiện và xác minh loại cho bạn.
Tự động hoàn thành cũng hoạt động với các cấu hình sử dụng các loại JSON lồng ghép phức tạp.
Làm mới các snapshot
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 snapshot. Để tránh làm gián đoạn gameplay, các cập nhật cho một cấu hình không tự động lan truyền đến các snapshot. Trong một trò chơi bắn súng cạnh tranh, ví dụ, bạn có thể chỉ muốn các giá trị cấu hình mới giữa các vòng để các thuộc tính vũ khí không dao động giữa trận đấu.
Để lấy 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 để tự động làm mới:
configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)Sau khi bạn làm mới một snapshot, bạn có thể sử dụng ConfigSnapshot:GetValueChangedSignal() để lắng nghe các thay đổi đối với một khóa cụ thể để bạn có thể cập nhật mã của trải nghiệm:
configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)Xử lý lỗi
Trong những trường hợp hiếm hoi khi cấu hình không tải được và chưa bao giờ được tải trước đó, ConfigService:GetConfigAsync() sẽ ném ra một lỗi.
Nếu ConfigService mất kết nối với các máy chủ Roblox sau khi nó đã được tải trước đó, ConfigService:GetConfigAsync() sẽ trả về một snapshot với các giá trị mới nhất có sẵn. Các snapshot này cố gắng kết nối lại và kích hoạt 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 bạn, hiển thị cho người chơi một lỗi và chờ snapshot 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 để thử nghiệm tạm thời các thay đổi cấu hình cả trong Studio và 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.
Để đặt một giá trị thử nghiệm cục bộ, gọi ConfigService:SetTestingValue() từ một script máy chủ hoặc thông qua Bảng điều khiển Nhà phát triển. Các thay đổi đối với các giá trị thử nghiệm 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 bản cập nhật sản xuất, bạn phải làm mới các snapshot 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 áp dụng cho thời gian sống 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 á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().