تكوينات التجربة تتيح لك تحديث القيم داخل اللعبة في الوقت الحقيقي دون الحاجة لإعادة تشغيل الخوادم:
- قم بتشغيل المميزات وإيقافها، مثل تمكين أو تعطيل زنزانة جديدة للانطلاق.
- ضبط القيم داخل اللعبة مثل صحة الرئيس، وزيادة الخبرة، أو أسعار العناصر.
- إطلاق محتوى مؤقت، مثل حدث الهالوين الذي يبدأ عند منتصف الليل.
تأخذ التكوينات شكل مفاتيح وقيم. بدلاً من استخدام ثوابت مشفرة في الكود الخاص بك، يمكنك استخدام المفتاح للحصول على قيمة (سلسلة نصية، رقم، قيمة منطقية، أو كائن JSON) ثم تحديث تلك القيمة متى شئت دون نشر إصدار جديد من تجربتك. التغييرات المطلوبة في الكود بسيطة:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local myValue = configSnapshot:GetValue("my_key_name")
يمكن أن يكون لديك ما يصل إلى 1,000 تكوين نشط في أي وقت وإدارتها على مركز المبدعين أو في استوديو Roblox.

إنشاء وتحرير التكوينات
على صفحة مركز المبدعين التكوينات لتجربتك، انقر على إنشاء تكوين.
حدد مفتاحًا، نوعًا، قيمة، ويفضل أن تضيف وصفًا لمساعدتك أو لفريقك لاحقًا على التعرف على الغرض من التكوين. الأنواع المدعومة هي سلسلة نصية، رقم، قيمة منطقية، وكائن 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 حرف |
نشر التكوينات
بعد إنشاء تكوين، ينتقل إلى حالة مؤقتة حتى تتمكن من اختباره قبل أن يصبح متاحًا للعامة. التغييرات المؤقتة متاحة لك وللفريق الخاص بك في جلسات اللعب في الاستوديو، وليست للاعبين في التجارب الحية. تُظهر صفحة التكوينات في مركز المبدعين جميع التغييرات النشطة والمؤقتة.

- بعد اختبار التغييرات المؤقتة الخاصة بك، انقر على نشر الآن لنشرها لجميع اللاعبين خلال خمس دقائق. يمكنك أيضًا اختيار نشر خلال 15 دقيقة إذا كنت تفضل فترة نشر أطول.
- (موصى به) أضف رسالة نشر وصفية تشير إلى ما قمت بتحديثه. تظهر هذه الرسالة على صفحة التاريخ ويمكن أن تساعدك أنت وفريقك لاحقًا في التعرف على غرض التغيير.
إنشاء وتحرير التكوينات في الاستوديو
إذا كنت تفضل، يمكنك إنشاء وتحرير وتحديد ونشر التكوينات في استوديو Roblox. انقر على ملف > فتح التكوينات. واجهة الاستوديو مريحة جدًا لتحديد واختبار القيم الجديدة.

عرض التاريخ واستعادة التكوينات
على صفحة التكوينات، انقر على التاريخ لرؤية التحديثات السابقة. كل تحديث يحتوي على الوقت والتاريخ للتغيير، ومن قام بإجراء التغيير، ورسالة النشر.

- قم بتوسيع كل صف لرؤية المفتاح، القيمة قبل التغيير، والقيمة بعده.
- استخدم مربع البحث عن المفتاح للبحث عن المفاتيح - وليس الأوصاف أو القيم، مجرد المفاتيح.
تتيح لك صفحة التاريخ أيضًا استعادة التكوينات إلى حالة سابقة:
- انقر على استعادة بجوار التغيير لتحديد القيمة "قبل" التغيير. لاحظ أن استعادة تكوين تتجاهل أي تغييرات مؤقتة موجودة.
- عد إلى صفحة التكوينات وانشر التكوين.
إضافة التكوينات إلى كودك
الفئة الرئيسية للعمل مع التكوينات هي ConfigService، التي fetches أحدث المفاتيح والقيم لتجربتك. 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 طرق مدمجة لاختبار تغييرات التكوين مؤقتًا سواء في الاستوديو أو على الخوادم الحية دون التأثير على التجربة بالكامل.
لتعيين قيمة اختبار محلية، استدعِ ConfigService:SetTestingValue() من برنامج نصي للخادم أو من خلال وحدة التحكم للمطورين. تؤدي التغييرات على قيم الاختبار إلى تحديث التكوين جنبًا إلى جنب مع إشارة ConfigSnapshot.UpdateAvailable. تمامًا مثل تحديث الإنتاج، يجب عليك تحديث اللقطات الموجودة للحصول على قيمة الاختبار:
local ConfigService = game:GetService("ConfigService")ConfigService:SetTestingValue("bossHealth", 200)local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth") -- الآن 200!
تنطبق تغييرات الاختبار خلال عمر الخادم الحالي ولا تنتشر إلى خوادم أخرى. في الاستوديو، تنطبق على جلسة اللعب الحالية ولا تؤثر على الخوادم الحية. يمكنك مسح تغييرات الاختبار يدويًا باستخدام ConfigService:ClearTestingValue().