Konfigurasi pengalaman

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Konfigurasi pengalaman memungkinkan Anda memperbarui nilai dalam permainan secara real-time tanpa memulai ulang server:

  • Aktifkan atau nonaktifkan fitur, seperti mengaktifkan atau menonaktifkan dungeon onboarding baru.
  • Sesuaikan nilai dalam permainan seperti kesehatan bos, perolehan pengalaman, atau harga barang.
  • Luncurkan konten berbasis waktu, seperti acara Halloween yang dimulai pada tengah malam.

Konfigurasi berbentuk kunci dan nilai. Alih-alih menggunakan konstanta yang dikodekan secara keras dalam kode Anda, Anda dapat menggunakan kunci untuk mendapatkan nilai (string, angka, boolean, atau objek JSON) dan kemudian memperbarui nilai itu kapan saja Anda mau tanpa menerbitkan versi baru dari pengalaman Anda. Perubahan kode yang diperlukan sangat minim:


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

Anda dapat memiliki hingga 1.000 konfigurasi aktif pada satu waktu dan mengelolanya di Creator Hub atau di Roblox Studio.

Ikhtisar halaman Konfigurasi di Creator Hub

Buat dan edit konfigurasi

  1. Di halaman Creator Hub Konfigurasi untuk pengalaman Anda, klik Buat konfigurasi.

  2. Tentukan kunci, jenis, nilai, dan opsional, deskripsi untuk membantu Anda atau tim Anda nanti mengidentifikasi tujuan dari konfigurasi. Jenis yang didukung adalah string, angka, boolean, dan objek JSON.

  3. Salin potongan kode yang dihasilkan ke dalam skrip server dalam pengalaman Anda, kemungkinan besar di ServerScriptService. Kode tersebut harus terlihat seperti ini:


    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local MY_KEY = "my_key" -- opsional, simpan kunci konfigurasi sebagai konstanta
    local myValue = configSnapshot:GetValue(MY_KEY)
  4. Gunakan nilai tersebut seperti Anda menggunakan variabel lainnya. Konfigurasi tidak melakukan apa-apa kecuali Anda menggunakannya di dalam kode Anda.

Untuk informasi lebih lanjut tentang bekerja dengan konfigurasi dalam skrip Anda, lihat Tambahkan konfigurasi ke kode Anda.

Mengedit konfigurasi tidak berbeda dari membuat satu. Klik tombol Edit dan perbarui nilai serta deskripsi sesuai keinginan.

Batasan

Nilai konfigurasi memiliki batasan berikut berdasarkan jenisnya.

TipeUkuran maksimum
String100.000 karakter
Number±1.7976931348623157e+308, ±2^53 untuk representasi integer yang tepat
BooleanN/A
JSON100.000 karakter

Publikasikan konfigurasi

Setelah Anda membuat konfigurasi, itu berpindah ke status staged sehingga Anda dapat mengujinya sebelum menjadi tersedia untuk umum. Perubahan yang dipasang tersedia untuk Anda dan tim Anda dalam sesi pemutaran Studio, bukan kepada pemain dalam pengalaman live. Halaman Konfigurasi di Creator Hub menunjukkan semua perubahan aktif dan yang ditangguhkan.

Halaman Konfigurasi yang menunjukkan perubahan yang belum dipublikasikan
  1. Setelah Anda menguji perubahan yang ditangkap, klik Publikasikan sekarang untuk menerbitkan kepada semua pemain dalam waktu lima menit. Anda juga dapat memilih Publish over 15 min jika Anda lebih suka periode peluncuran yang lebih lama.
  2. (Disarankan) Tambahkan pesan publish yang deskriptif yang menunjukkan apa yang Anda perbarui. Pesan ini muncul di halaman Riwayat dan dapat membantu Anda dan tim Anda nanti mengidentifikasi tujuan dari perubahan tersebut.

Buat dan edit konfigurasi di Studio

Jika Anda mau, Anda dapat membuat, mengedit, men-stage, dan menerbitkan konfigurasi di Roblox Studio. Klik File > Buka Konfigurasi. Antarmuka Studio sangat nyaman untuk staging dan menguji nilai baru.

Jendela Studio untuk bekerja dengan konfigurasi

Lihat riwayat dan pulihkan konfigurasi

Di halaman Konfigurasi, klik Riwayat untuk melihat pembaruan sebelumnya. Setiap pembaruan mencantumkan waktu dan tanggal perubahan, siapa yang melakukan perubahan, dan pesan publikasi.

Halaman riwayat dengan perbedaan yang diperluas untuk nilai konfigurasi

  • Perluas setiap baris untuk melihat kunci, nilai sebelum perubahan, dan nilai setelahnya.
  • Gunakan kotak Pencarian Kunci untuk mencari kunci—bukan deskripsi atau nilai, hanya kunci.

Halaman Riwayat juga memungkinkan Anda memulihkan konfigurasi ke keadaan sebelumnya:

  1. Klik Pulihkan di samping perubahan untuk men-stage nilai "sebelum". Perhatikan bahwa memulihkan konfigurasi membuang semua perubahan yang ditangkap yang ada.
  2. Kembali ke halaman Konfigurasi dan publikasikan konfigurasi.

Tambahkan konfigurasi ke kode Anda

Kelas utama untuk bekerja dengan konfigurasi adalah ConfigService, yang mengambil kunci dan nilai terbaru untuk pengalaman Anda. ConfigService hanya tersedia untuk skrip server. Mencoba memanggil metodenya dari skrip klien menghasilkan kesalahan.

Langkah pertama untuk bekerja dengan konfigurasi adalah mengambil ConfigSnapshot, nilai terbaru untuk semua konfigurasi pada titik waktu ini. Ada dua metode untuk mendapatkan snapshot:

  • ConfigService:GetConfigAsync() digunakan untuk konfigurasi global yang ingin Anda terapkan ke semua pemain dalam pengalaman:


    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local bossHealth = configSnapshot:GetValue("bossHealth")
  • ConfigService:GetConfigForPlayerAsync() digunakan untuk eksperimen. Ini mengambil konfigurasi spesifik pemain sehingga pemain yang berbeda dapat memperoleh nilai yang berbeda.


    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)

Dalam kedua kasus, jika kunci tidak ada, ConfigSnapshot:GetValue() mengembalikan nil.

Segarkan snapshot

ConfigSnapshots mewakili suatu titik waktu, keadaan konfigurasi saat Anda meminta snapshot. Untuk menghindari mengganggu gameplay, pembaruan konfigurasi tidak secara otomatis menyebar ke snapshot. Dalam permainan tembak-menembak yang kompetitif, misalnya, Anda mungkin hanya ingin nilai konfigurasi baru antara ronde sehingga atribut senjata tidak berfluktuasi di tengah pertandingan.

Untuk mendapatkan nilai terbaru secara manual, gunakan metode ConfigSnapshot:Refresh(). Opsional, sambungkan fungsi ke acara ConfigSnapshot.UpdateAvailable untuk menyegarkan secara otomatis:


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

Setelah Anda menyegarkan snapshot, Anda dapat menggunakan ConfigSnapshot:GetValueChangedSignal() untuk mendengarkan perubahan pada kunci tertentu sehingga Anda dapat memperbarui kode pengalaman Anda:


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

Penanganan kesalahan

Dalam kasus yang jarang terjadi ketika konfigurasi gagal dimuat dan belum pernah dimuat sebelumnya, ConfigService:GetConfigAsync() melempar kesalahan.

Jika ConfigService kehilangan koneksi ke server Roblox setelah sebelumnya dimuat, ConfigService:GetConfigAsync() mengembalikan snapshot dengan nilai terbaru yang tersedia. Snapshot ini berusaha untuk menyambung kembali dan memicu acara UpdateAvailable ketika mereka berhasil memuat pembaruan baru.

Bagaimana Anda menangani situasi yang tidak biasa ini terserah pada Anda. Anda dapat membungkus panggilan dalam pcall() dan memiliki nilai cadangan dalam kode Anda, menunjukkan kesalahan kepada pemain dan menunggu snapshot untuk menyambung kembali, atau solusi lain.

Uji konfigurasi

ConfigService memiliki metode bawaan untuk menguji perubahan konfigurasi sementara baik di Studio maupun di server live tanpa memengaruhi seluruh pengalaman.

Untuk mengatur nilai tes lokal, panggil ConfigService:SetTestingValue() dari skrip server atau melalui Konsol Pengembang. Perubahan pada nilai tes memicu pembaruan konfigurasi bersamaan dengan sinyal ConfigSnapshot.UpdateAvailable. Sama seperti pembaruan produksi, Anda harus menyegarkan snapshot yang ada untuk mendapatkan nilai tes:


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

Perubahan tes berlaku selama masa server saat ini dan tidak menyebar ke server lain. Di Studio, perubahan ini berlaku untuk sesi bermain saat ini dan tidak memengaruhi server yang sedang berjalan. Anda dapat secara manual menghapus perubahan tes dengan ConfigService:ClearTestingValue().

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.