إعدادات التجربة

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

إعدادات التجربة تتيح لك تحديث القيم داخل اللعبة في الوقت الحقيقي دون إعادة تشغيل الخوادم:

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

تأخذ الإعدادات شكل مفاتيح وقيم. بدلاً من استخدام ثوابت مشفرة في الكود الخاص بك، يمكنك استخدام المفتاح للحصول على قيمة (سلسلة نصية، رقم، قيمة منطقية، أو كائن JSON) ثم تحديث تلك القيمة متى شئت دون نشر إصدار جديد من تجربتك. التغييرات المطلوبة في الكود بسيطة:

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

يمكن أن يكون لديك ما يصل إلى 1,000 إعداد نشط في أي وقت وإدارتها على مركز المبدعين أو في استوديو Roblox.

نظرة عامة على صفحة الإعدادات في مركز المبدعين

إنشاء وتحرير الإعدادات

  1. على صفحة مركز المبدعين الإعدادات لتجربتك، انقر على إنشاء إعداد.

  2. حدد مفتاحًا، نوعًا، قيمة، وخياريًا، وصفًا لمساعدتك أو فريقك لاحقًا في تحديد غرض الإعداد. الأنواع المدعومة هي سلسلة نصية، رقم، قيمة منطقية، وكائن JSON. انقر على التالي.

  3. (اختياري) أضف شروط وقيم مستهدفة. تتيح لك الشروط تطبيق قيم الإعدادات على المستخدمين الذين يتطابقون (أو لا يتطابقون) مع معايير معينة، مثل المستخدمين الذين لم يلعبوا لعبتك من قبل أو الذين يتحدثون البرتغالية. لمعرفة المزيد، راجع استهداف الإعدادات للاعبين محددين.

  4. انسخ مقتطف الكود الذي تم إنشاؤه إلى نص خادم في تجربتك، من المحتمل في ServerScriptService. بالنسبة للإعدادات "العالمية" التي لا تختلف حسب اللاعب، قد يبدو الكود شيئًا مثل هذا:

    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local MY_KEY = "my_key" -- اختياري، تخزين مفتاح الإعداد كثابت
    local myValue = configSnapshot:GetValue(MY_KEY)

    بالنسبة لـ الإعدادات الشرطية و التجارب، يكون الكود مختلفًا قليلاً:

    local ConfigService = game:GetService("ConfigService")
    local Players = game:GetService("Players")
    local MY_KEY = "my_key" -- اختياري، تخزين مفتاح الإعداد كثابت
    local function onPlayerAdded(player)
    local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)
    local myValue = playerConfigSnapshot:GetValue(MY_KEY)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  5. استخدم القيمة كما تفعل مع أي متغير آخر. الإعدادات لا تفعل شيئًا ما لم تستخدمها داخل كودك.

لمزيد من المعلومات حول العمل مع الإعدادات في نصوصك، راجع إضافة الإعدادات إلى كودك.

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

الحدود

تحتوي قيم الإعدادات على الحدود التالية حسب النوع.

النوعالحجم الأقصى
سلسلة نصية100,000 حرف
رقم±1.7976931348623157e+308، ±2^53 لتمثيلات الأعداد الصحيحة الدقيقة
قيمة منطقيةغير متاح
JSON100,000 حرف

نشر الإعدادات

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

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

استهداف الإعدادات للاعبين محددين

بشكل افتراضي، يقدم الإعداد قيمة واحدة للجميع. تتيح لك الإعدادات الشرطية تقديم قيم مختلفة للاعبين المختلفين بناءً على سمات اللاعب (البلد، المدة، اللغة، حالة الدفع، إلخ).

تتكون الإعدادات الشرطية من ثلاثة أجزاء تحدد القيمة التي يتلقاها اللاعب:

  • القواعد الشرطية تحدد من يتطابق. كل قاعدة هي تعبير منطقي، مثل "المدفوعين النشطين في أول 30 يومًا"، الذي يقيم سمات اللاعب.
  • ترتيب القواعد يحدد كيفية الاختيار عندما يتطابق اللاعب مع أكثر من قاعدة واحدة. يقوم Roblox بتقييم القواعد من الأعلى إلى الأسفل ويطبق الفرع الأول المتطابق. يتم ترتيب القواعد عالميًا، بغض النظر عن ترتيب إضافة القيم الشرطية إلى مفتاح فردي.
  • القيم الشرطية تحدد ما يحصل عليه اللاعب المتطابق. لكل شرط، تقوم بإرفاق قيمة. إذا تطابق اللاعب مع قاعدة ضمن ذلك الشرط، فإنه يتلقى القيمة المرتبطة؛ وإلا، فإنه يتلقى القيمة الافتراضية للإعداد.

السمات المدعومة

تدعم الإعدادات الشرطية السمات التالية. تشترك هذه السمات في نفس التعريفات مثل الفلاتر و التفاصيل المعادلة في لوحات تحليلات البيانات.

السمةالوصف
البلدالموقع الجغرافي للاعب.
اللغةإعداد اللغة للاعب.
الجديد مقابل العائدما إذا كان اللاعب يلعب تجربتك للمرة الأولى أو قد لعبها من قبل.
المصدركيف وجد اللاعب تجربتك، مثل توصية من الصفحة الرئيسية، البحث، أو إعلان مدفوع.
متى لعب المستخدم لأول مرةمنذ متى لعب اللاعب تجربتك لأول مرة، مثل 0-30 يومًا مضت أو 31-90 يومًا مضت. يتم حسابها يوميًا.
حالة الدفع النشطة داخل التجربةنشاط الدفع للاعب داخل تجربتك، مما يتيح لك استهداف شرائح مختلفة من المستخدمين المدفوعين. يتم حسابها يوميًا.
حالة النشاط داخل التجربةمدى قرب اللاعب من لعب تجربتك مؤخرًا، مما يتيح لك التعامل مع اللاعبين الجدد، النشطين، المتوقفين، والمستعادين بشكل مختلف. يتم حسابها يوميًا.
مشاركة المستخدممدى لعب اللاعب لتجربتك كل أسبوع، مما يتيح لك فصل أكثر اللاعبين تفاعلًا عن اللاعبين الأكثر عفوية. يتم حسابها يوميًا.
حالة الإنفاق على المنصةما إذا كان اللاعب هو إنفاق نشط على مستوى منصة Roblox. يتم حسابها يوميًا.
حالة النشاط على المنصةمدى قرب اللاعب من اللعب في أي مكان على Roblox، بدلاً من فقط في تجربتك. يتم حسابها يوميًا.

إنشاء قيم شرطية

تضيف الشروط عند إنشاء أو تحرير إعداد. في خطوة إضافة استهداف، أضف شرطًا:

  1. اختر شرطًا موجودًا أو انقر على إنشاء واحد جديد.
  2. أضف قاعدة أو أكثر.
  3. حدد القيمة التي يتلقاها اللاعبون المتطابقون.

على سبيل المثال، لمنح تجربة أصعب لأفضل المدفوعين النشطين الذين بدأوا اللعب خلال آخر 30 يومًا، قد تزيد من قيمة dynamicBossHealth الخاصة بهم.

خطوة إضافة الاستهداف تظهر القواعد الشرطية لإعداد

الوصول إلى القيم المستهدفة في الكود

لاسترجاع القيم المستهدفة، استخدم ConfigService:GetConfigForPlayerAsync()، الذي يقيم القواعد والترتيب للاعب فردي. لا تطبق ConfigService:GetConfigAsync() الاستهداف لأنها ليست محددة للاعب واحد. لمزيد من المعلومات، راجع إضافة الإعدادات إلى كودك.

أفضل الممارسات والحدود

  • يجب أن تتطابق كل قيمة شرطية مع نوع البيانات (قيمة منطقية، سلسلة نصية، رقم، أو JSON) للقيمة الافتراضية للإعداد.
  • يمكنك أن يكون لديك ما يصل إلى 100 شرط لكل لعبة.
  • يدعم كل مفتاح إعداد ما يصل إلى 20 شرطًا.
  • تحقق من ترتيب القواعد قبل النشر. نظرًا لأن القواعد مرتبة عالميًا، تأكد من أن ترتيب تقييمك له الأولوية بشكل صحيح. لمراجعة الترتيب، انقر على علامة التبويب الشروط.

إنشاء وتحرير الإعدادات في الاستوديو

إذا كنت تفضل، يمكنك إنشاء وتحرير وإعداد ونشر الإعدادات في استوديو Roblox. انقر على ملف > فتح الإعدادات لفتح الواجهة. واجهة الاستوديو مريحة بشكل خاص لإعداد واختبار القيم الجديدة.

نافذة الاستوديو للعمل مع الإعدادات

نشر الإعدادات إلى تجربة أخرى

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

  1. في استوديو Roblox، انتقل إلى القائمة العلوية وحدد ملف > فتح الإعدادات.

  2. في علامة التبويب المPublished في واجهة الإعدادات، انقر على أيقونة ⋮ واختر نشر كـ.

    نافذة الاستوديو للعمل مع الإعدادات
  3. في الحوار الذي يظهر، ابحث وحدد التجربة المستهدفة من قائمة المجموعات التي لديك أذونات تحرير فيها.

    نشر الإعدادات إلى التجارب

عرض التاريخ واستعادة الإعدادات

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

صفحة التاريخ مع الفرق الموسع لقيمة إعداد

  • قم بتوسيع كل صف لرؤية المفتاح، والقيمة قبل التغيير، والقيمة بعده.
  • استخدم مربع بحث المفتاح للبحث عن المفاتيح - ليس الأوصاف أو القيم، فقط المفاتيح.

تتيح لك صفحة التاريخ أيضًا استعادة الإعدادات إلى حالة سابقة:

  1. انقر على استعادة بجوار التغيير لتهيئة القيمة "قبل". لاحظ أن استعادة إعداد تتجاهل أي تغييرات مؤقتة موجودة.
  2. عد إلى صفحة الإعدادات و انشر الإعداد.

إضافة الإعدادات إلى كودك

الفئة الرئيسية للعمل مع الإعدادات هي ConfigService، التي fetches أحدث المفاتيح والقيم لتجربتك. ConfigService متاحة فقط لنصوص الخادم. محاولة استدعاء طرقها من نص عميل تؤدي إلى خطأ.

الخطوة الأولى للعمل مع الإعدادات هي استرجاع ConfigSnapshot، أحدث القيم لجميع الإعدادات في الوقت الحالي. هناك طريقتان للحصول على لقطة:

  • ConfigService:GetConfigAsync() مخصصة للإعدادات العالمية التي تريد تطبيقها على جميع اللاعبين في التجربة:

    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local bossHealth = configSnapshot:GetValue("bossHealth")
  • ConfigService:GetConfigForPlayerAsync() fetches إعدادات محددة للاعب بحيث يمكن أن يحصل لاعبين مختلفين على قيم مختلفة. استخدمها للإعدادات الشرطية و التجارب.

    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)

في كلتا الحالتين، إذا لم يكن المفتاح موجودًا، فإن ConfigSnapshot:GetValue() تعيد nil.

الإكمال التلقائي

تتكامل الإعدادات في الإكمال التلقائي لمحرر النصوص. عند استدعاء ConfigSnapshot:GetValue()، يقترح المحرر أسماء مفاتيح الإعدادات الخاصة بك ويعرض نوع كل إعداد عند تمرير الماوس فوق اسم المتغير.

إذا كان نصك يستخدم وضع --!strict، يمكن للمحلل التقاط والتحقق من النوع لك.

يعمل الإكمال التلقائي أيضًا مع الإعدادات التي تستخدم أنواع JSON متداخلة معقدة.

تحديث اللقطات

تمثل 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().

©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.