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

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

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

نشر الإعدادات إلى تجربة أخرى
في الاستوديو فقط، يمكنك نشر إعداداتك إلى تجربة أخرى، مما يقوم بالكامل بكتابة الإعدادات لتلك التجربة. يمكن أن يكون هذا مفيدًا بشكل خاص لمزامنة الإعدادات من تجربة مؤقتة أو تطوير إلى التجربة المباشرة. انتقل إلى علامة تبويب منشور في ودجت الاستوديو وانقر على نشر باسم في قائمة ⋮.

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

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