التصميم من أجل الأداء

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

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

الأجهزة منخفضة الأداء

تواجه الأجهزة منخفضة الأداء، خاصة الأجهزة المحمولة، قيودًا خطيرة في الذاكرة، وهي عرضة للاخفاقات بسبب أخطاء نفاد الذاكرة (OOM):

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

    على سبيل المثال، قد تختبر لعبة مع إحصائيات تصحيح الرسم (ShiftF2) والملخص (ShiftF2) مفعلة. إذا بدأ معدل الإطار في الانخفاض في منطقة مزدحمة بشكل خاص، يمكنك فحص أرقام الرسم (المشهد) وتحديد أنك بحاجة للبقاء تحت 1,000 مكالمة رسم و1,000,000 مثلث لتعمل اللعبة بشكل جيد على جهازك الأساسي.

    أو يمكنك فحص وحدة التحكم للمطورين (F9) وملاحظة أن استخدام الذاكرة مرتفع قليلاً ما لم تقم بتمكين البث. يمكن أن تساعدك الفهم الواضح لحدود الجهاز في البقاء ضمنها بينما تواصل بناء لعبتك.

    لعبة Roblox مع ثلاث طبقات نشطة.

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

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

البث والتيلبورت

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

    على سبيل المثال، عندما تقوم بتمكين Workspace.EnableSLIMAvatars وتعيين خاصية نماذج عالمك LevelOfDetail إلى SLIM، يمكنك إنشاء عوالم ذات مساحات اجتماعية وفعاليات مزدحمة تظل مرئية بينما تتفاعل مع مجموعة واسعة من قدرات الأجهزة. لمزيد من المعلومات، راجع تحسين الأداء.

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

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

المواد والتكرار

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

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

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

الشفافية

البرمجة

  • كلما كان ذلك ممكنًا، اكتب código معتمد على الأحداث بدلاً من حسابات لكل إطار. عند 60 إطار في الثانية، فإن الميزانية الإجمالية لكل إطار هي 16.67 مللي ثانية (مللي ثانية). حتى الحسابات البسيطة التي تبدو غير مؤثرة يمكن أن تستهلك جزءًا كبيرًا من تلك الميزانية.

  • ابحث عن طرق لتقسيم الكود طويل المدة إلى أجزاء قابلة للإدارة. إذا استغرق جزء من الكود 100 مللي ثانية للتنفيذ وقمت بتشغيله في كل إطار، فإن لعبتك لا يمكن أن تعمل إلا بسرعة 10 إطار في الثانية. إذا قررت تشغيل الكود مرة واحدة في الثانية في لعبة تعمل بشكل طبيعي بسرعة 60 إطار في الثانية، فإن 59 من إطاراتك تأتي بعد 16.67 مللي ثانية... ثم واحدة بعد 100 مللي ثانية، مما يسبب اهتزازًا مزعجًا.

    بدلاً من ذلك، تحقق من كيفية تقسيم الكود. ربما يمكنك تنفيذ 5 مللي ثانية من العمل لكل إطار، استخدام task.wait(), والحصول على الحساب المكتمل كل 20 إطار بينما لا يزال تحافظ على 60 إطار في الثانية. يمكن أن تساعدك المعالجة المتعددة، التي تُسمى أحيانًا "parallel Luau"، أيضًا.

  • استخدم الطريقة RBXScriptConnection:Disconnect() لإيقاف استدعاء الدوال بشكل غير ضروري في المرة القادمة التي يحدث فيها حدث.

  • لا تستدعي نفس الطريقة في كل مرة تحتاج فيها إلى قيمة. استدعِ الطريقة مرة واحدة، احفظ القيمة، ثم قم بتحديثها لاحقًا حسب الحاجة.

  • لا تخزن كل شيء في ReplicatedStorage. يقوم العميل بتحميل كل شيء موجود في هذا الحاوية. بدلاً من ذلك، استخدم ServerStorage لأي شيء لا يحتاج العميل للوصول إليه.

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