การตั้งค่าประสบการณ์ ช่วยให้คุณอัปเดตค่าภายในเกมได้แบบเรียลไทม์โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์:
- เปิดและปิดฟีเจอร์ต่างๆ เช่น การเปิดหรือปิดดันเจี้ยนการเริ่มต้นใหม่
- ปรับค่าภายในเกมเช่นสุขภาพของบอส, การได้รับประสบการณ์ หรือราคาสินค้า
- เปิดเนื้อหาที่มีเวลาจำกัด เช่น อีเวนต์ฮัลโลวีนที่เริ่มต้นเที่ยงคืน
การตั้งค่ามีรูปแบบเป็นกุญแจและค่า แทนที่จะใช้ค่าคงที่ที่กำหนดไว้ในโค้ดของคุณ คุณสามารถใช้กุญแจเพื่อดึงค่าที่ต้องการ (สตริง, หมายเลข, บูลีน หรือวัตถุ JSON) และอัปเดตค่านั้นเมื่อใดก็ได้โดยไม่ต้องเผยแพร่เวอร์ชันใหม่ของประสบการณ์ของคุณ การเปลี่ยนแปลงโค้ดที่จำเป็นนั้นน้อยมาก:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local myValue = configSnapshot:GetValue("my_key_name")
คุณสามารถมีการตั้งค่าได้สูงสุดถึง 1,000 รายการที่ใช้งานอยู่ในเวลาใดเวลาหนึ่งและจัดการพวกมันได้ใน Creator Hub หรือใน Roblox Studio

สร้างและแก้ไขการตั้งค่า
ในหน้าการตั้งค่า Creator Hub สำหรับประสบการณ์ของคุณ คลิก สร้างการตั้งค่า
ระบุชื่อกุญแจ ประเภท ค่าที่ต้องการ และตัวเลือกเพิ่มเติม คือ คำอธิบายเพื่อช่วยคุณหรือทีมในการระบุวัตถุประสงค์ของการตั้งค่า ประเภทที่รองรับคือ สตริง, หมายเลข, บูลีน, และวัตถุ JSON
คัดลอกโค้ดที่สร้างขึ้นไปวางในสคริปต์เซิร์ฟเวอร์ในประสบการณ์ของคุณ โดยปกติจะอยู่ใน ServerScriptService โค้ดควรดูประมาณนี้:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- ตัวเลือก, เก็บกุญแจการตั้งค่าเป็นค่าคงที่local myValue = configSnapshot:GetValue(MY_KEY)ใช้ค่าดังกล่าวเหมือนกับตัวแปรอื่นๆ การตั้งค่า จะไม่ทำอะไร หากคุณไม่ใช้มันในโค้ดของคุณ
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับการตั้งค่าในสคริปต์ของคุณ โปรดดูที่ เพิ่มการตั้งค่าในโค้ดของคุณ.
การแก้ไขการตั้งค่าไม่แตกต่างจากการสร้างหนึ่ง คลิกที่ปุ่ม แก้ไข และอัปเดตค่าและคำอธิบายตามที่ต้องการ
ข้อจำกัด
ค่าการตั้งม่มีข้อจำกัดดังนี้ ตามประเภท
| ประเภท | ขนาดสูงสุด |
|---|---|
| สตริง | 100,000 ตัวอักษร |
| หมายเลข | ±1.7976931348623157e+308, ±2^53 สำหรับการแสดงผลจำนวนเต็มที่ถูกต้อง |
| บูลีน | ไม่มี |
| JSON | 100,000 ตัวอักษร |
เผยแพร่การตั้งค่า
หลังจากคุณสร้างการตั้งค่า มันจะเข้าสู่สถานะ การจัดเตรียม เพื่อให้คุณสามารถทดสอบก่อนที่จะเปิดให้ใช้งานสำหรับผู้เล่นทั่วไป การเปลี่ยนแปลงที่จัดเตรียมจะสามารถใช้งานได้กับคุณและทีมในเซสชันการเล่น Studio ไม่ใช่ผู้เล่นในประสบการณ์ที่ใช้งานจริง หน้าการตั้งค่าใน Creator Hub จะแสดงการเปลี่ยนแปลงทั้งหมดที่ใช้งานและที่จัดเตรียมไว้

- หลังจากที่คุณทดสอบการเปลี่ยนแปลงในสเตจ คลิก เผยแพร่ตอนนี้ เพื่อเผยแพร่ให้กับผู้เล่นทั้งหมดภายในห้านาที คุณยังสามารถเลือก เผยแพร่ภายใน 15 นาที หากคุณต้องการระยะเวลาการเผยแพร่ที่ยาวนานขึ้น
- (แนะนำ) เพิ่มข้อความเผยแพร่ที่มีคำอธิบายซึ่งบ่งบอกสิ่งที่คุณได้อัปเดต ข้อความนี้จะปรากฏในหน้าประวัติและช่วยคุณและทีมในการระบุวัตถุประสงค์ของการเปลี่ยนแปลงในภายหลัง
สร้างและแก้ไขการตั้งค่าใน Studio
หากคุณต้องการ คุณสามารถสร้าง แก้ไข จัดเตรียม และเผยแพร่การตั้งค่าใน Roblox Studio คลิก ไฟล์ > เปิดการตั้งค่า อินเตอร์เฟซของ Studio มีความสะดวกมากสำหรับการจัดเตรียมและทดสอบค่าที่ใหม่

ดูประวัติและกู้คืนการตั้งค่า
ในหน้าการตั้งค่า คลิก ประวัติ เพื่อดูการอัปเดตก่อนหน้านี้ แต่ละการอัปเดตมีเวลาและวันที่ของการเปลี่ยนแปลง ผู้ที่ทำการเปลี่ยนแปลง และข้อความเผยแพร่

- ขยายแต่ละแถวเพื่อดูคีย์ ค่าก่อนการเปลี่ยนแปลง และค่าหลังการเปลี่ยนแปลง
- ใช้กล่อง ค้นหาคีย์ เพื่อค้นหาคีย์เท่านั้น—ไม่ใช่คำอธิบายหรือตัวเลข เพียงแค่คีย์
หน้าประวัติยังให้คุณกู้คืนการตั้งค่าไปยังสถานะก่อนหน้านี้:
- คลิก กู้คืน ข้างการเปลี่ยนแปลงเพื่อจัดเตรียมค่าก่อน เราอยากจะเตือนว่าการกู้คืนการตั้งค่าจะทำให้เปลี่ยนแปลงที่จัดเตรียมอยู่ในปัจจุบันหายไป
- กลับไปที่หน้าการตั้งค่าและ เผยแพร่การตั้งค่า.
เพิ่มการตั้งค่าในโค้ดของคุณ
คลาสหลักสำหรับการทำงานกับการตั้งคือ ConfigService ซึ่งดึงคีย์และค่าสำหรับประสบการณ์ของคุณ ConfigService จะสามารถใช้งานได้เฉพาะในสคริปต์เซิร์ฟเวอร์เท่านั้น การพยายามเรียกใช้วิธีของมันจากสคริปต์ของลูกค้าจะทำให้เกิดข้อผิดพลาด
ขั้นตอนแรกในการทำงานกับการตั้งคือการดึง ConfigSnapshot ซึ่งเป็นค่าล่าสุดสำหรับการตั้งค่าทั้งหมด ณ จุดเวลาในปัจจุบัน มีสองวิธีในการรับภาพรวม:
ConfigService:GetConfigAsync() ใช้สำหรับการตั้งค่าทั่วไปที่คุณต้องการนำไปใช้กับผู้เล่นทั้งหมดในประสบการณ์:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth")ConfigService:GetConfigForPlayerAsync() ใช้สำหรับ การทดลอง. มันจะดึงการตั้งค่าที่เฉพาะเจาะจงสำหรับผู้เล่นเพื่อให้ผู้เล่นแต่ละคนสามารถได้รับค่าส่วนแตกต่างกันได้
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)
ไม่ว่าในกรณีใด ถ้ากุญแจไม่อยู่ ConfigSnapshot:GetValue() จะส่งกลับ nil
รีเฟรชภาพรวม
ConfigSnapshots แสดงถึงจุดเวลา สถานะของการตั้งค่าเมื่อต้องการภาพรวม การอัปเดตการตั้งค่าจะ ไม่ ถูกส่งตรงไปยังภาพรวมโดยอัตโนมัติ เพื่อหลีกเลี่ยงการรบกวนการเล่นเกม ในเกมยิงที่แข่งขันกัน เช่น คุณอาจต้องการค่าการตั้งค่าใหม่ในช่วงพักระหว่างรอบเพื่อไม่ให้ลักษณะของอาวุธเปลี่ยนแปลงกลางแมตช์
เพื่อรับค่าล่าสุดด้วยตนเอง ให้ใช้วิธี ConfigSnapshot:Refresh() ตัวเลือกหนึ่งคือเชื่อมต่อฟังก์ชันกับเหตุการณ์ ConfigSnapshot.UpdateAvailable เพื่อรีเฟรชโดยอัตโนมัติ:
configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)
หลังจากที่คุณรีเฟรชภาพรวมแล้ว คุณสามารถใช้ ConfigSnapshot:GetValueChangedSignal() เพื่อฟังการเปลี่ยนแปลงของคีย์เฉพาะเพื่อให้คุณสามารถอัปเดตโค้ดของประสบการณ์ได้:
configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)
การจัดการข้อผิดพลาด
ในกรณีที่หายากเมื่อการตั้งค่าไม่สามารถโหลดได้และไม่เคยถูกโหลดก่อนหน้านี้ ConfigService:GetConfigAsync() จะสร้างข้อผิดพลาด
ถ้า ConfigService สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ Roblox หลังจากที่มันถูกโหลดไว้ก่อนหน้านี้ ConfigService:GetConfigAsync() จะส่งกลับภาพรวมที่มีค่าล่าสุดที่สามารถใช้งานได้ ภาพรวมเหล่านี้จะพยายามเชื่อมต่อใหม่และส่งเหตุการณ์ UpdateAvailable เมื่อต้องโหลดการอัปเดตใหม่ได้สำเร็จ
ว่าคุณจัดการกับสถานการณ์ที่ไม่ธรรมดาเหล่านี้อย่างไรนั้นขึ้นอยู่กับคุณ คุณสามารถห่อหุ้มการเรียกใน pcall() และมีค่าตั้งต้นในโค้ดของคุณ แสดงข้อผิดพลาดให้ผู้เล่นเห็นและรอให้ภาพรวมรีเชื่อมต่อ หรือแก้ไขวิธีอื่น
ทดสอบการตั้งค่า
ConfigService มีวิธีการในตัวสำหรับการทดสอบการเปลี่ยนแปลงการตั้งค่าแบบชั่วคราวทั้งใน Studio และบนเซิร์ฟเวอร์ที่ใช้งานอยู่โดยไม่ทำให้เกิดผลกระทบต่อประสบการณ์ทั้งหมด
ในการตั้งค่าค่าทดสอบเฉพาะ ให้เรียกใช้ ConfigService:SetTestingValue() จากสคริปต์เซิร์ฟเวอร์หรือผ่าน Developer Console การเปลี่ยนแปลงค่าทดสอบจะแจ้งให้การอัปเดตการตั้งค่าพร้อมกับสัญญาณ ConfigSnapshot.UpdateAvailable เช่นเดียวกับการอัปเดตในผลิตภัณฑ์ คุณต้องรีเฟรชภาพรวมที่มีอยู่เพื่อให้ได้ค่าทดสอบ:
local ConfigService = game:GetService("ConfigService")ConfigService:SetTestingValue("bossHealth", 200)local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth") -- ตอนนี้คือ 200!
การเปลี่ยนแปลงการทดสอบจะมีผลเป็นเวลากว่าอายุของเซิร์ฟเวอร์ปัจจุบันและจะไม่ถูกส่งต่อไปยังเซิร์ฟเวอร์อื่น ใน Studio จะมีผลต่อเซสชันการเล่นปัจจุบันและจะไม่ส่งผลต่อเซิร์ฟเวอร์ที่ใช้งานอยู่ คุณสามารถลบการเปลี่ยนแปลงการทดสอบด้วย ConfigService:ClearTestingValue().