إذا كان لديك سؤال لم تجد إجابته في هذه الصفحة، يُرجى التواصل معنا باستخدام معلومات الاتصال الواردة في صفحة معلومات الاتصال بفريق الدعم.
قد يتم تعديل هذه الصفحة لتضمين الأسئلة الشائعة فور تلقّيها.
للجمهور العام
يتضمّن هذا القسم أي أسئلة لا تندرج ضمن فئة معيّنة.
هل يمكنني اختبار اللعبة في بيئة YouTube؟
نعم، يمكنك استخدام "بوابة المطوّرين" واتّباع تعليمات الاختبار.
لا يتم عرض لعبتي على Android أو حزمة اختبار SDK، فماذا أفعل؟
عندما لا يتم عرض الألعاب حصريًا على Android أو مجموعة اختبارات حزمة تطوير البرامج (SDK)، يكون السبب غالبًا هو طريقة تحميل الألعاب في WebView. لأسباب تتعلّق بالأداء، يتم تحميل اللعبة في البداية في WebView لا يتم عرضه للمستخدم، ما يؤدي إلى أن يكون حجم إطار العرض في WebView صفرًا. لحلّ هذه المشكلة، ننصحك باتّباع الخطوات التالية:
(1) تأكَّد من أنّ رمز لعبتك يتم تنفيذه بغض النظر عن حجم إطار العرض.
(2) تأكَّد من أنّ رمز لعبتك يتعامل مع تغيير حجم إطار العرض وأنّه لا ينتظر أو يتعذّر تنفيذه عندما يكون حجم إطار العرض صفرًا.
ننصحك بالاستماع إلى حدث النافذة resize وضبط ارتفاع لعبتك فقط عندما تكون قيمة window.innerHeight غير صفرية.
المتطلبات الفنية
يتضمّن هذا القسم أسئلة حول المتطلبات الفنية الخاصة بميزة "هيّا نلعب على YouTube".
هل يمكنني الحصول على إعفاء من الحد الأقصى لحجم الملف الفردي؟
لا، حجم الملف الفردي هو حدّ ثابت.
كيف يتم قياس حجم الحزمة الأوّلية؟
يتم قياس حجم الحزمة الأولية على أنّه إجمالي عدد البايتات التي نزّلها التطبيق القابل للتشغيل إلى أن يتم استدعاء الحدث gameReady.
تستخدم الألعاب القابلة للعب ضغط HTTP عند الإمكان، ما يعني أنّ حجم الحِزمة الأوّلية قد يكون أصغر من إجمالي الحجم الأولي للأصول. عند اختبار حجم الحِزمة الأوّلية في مجموعة أدوات اختبار حزمة تطوير البرامج (SDK)، إذا لم يكن المضيف المحلي يضغط مواد العرض، قد يؤدي ذلك إلى حجم أكبر من الحجم الذي سيحدث عند نشر "الإعلان القابل للتشغيل". لمعرفة حجم الحزمة الأولية الفعلي الذي يتم عرضه في "التجربة الفورية"، استخدِم مجموعة أدوات اختبار حزمة تطوير البرامج (SDK) التي تشير إلى ملف index.html من إصدار تم تحميله أو عدِّل إعدادات الخادم المحلي لتفعيل ضغط gzip.
لقد بلغت الحدّ الأقصى لحجم الملف الفردي أو حجم الحزمة الإجمالي أو تجاوزته، فماذا أفعل؟
لتحسين لعبتك وأدائها، يمكنك الاطّلاع على المقالات التالية:
ماذا لو لم أتمكّن من الالتزام بالحدّ الأقصى لإجمالي حجم الحِزمة؟
قد يضطر المستخدمون إلى تنزيل مواد عرض من لعبتك في كل مرة يشغّلونها. ولتجنُّب أوقات التحميل الطويلة والاستخدام الكبير للبيانات، ننصح بأن يكون إجمالي حجم حِزمة اللعبة أصغر ما يمكن.
ننصح الألعاب باستخدام التحميل الكسول أو أنواع أخرى من التحميل التزايدي لمواد العرض أثناء كل جلسة لعب مع تقدّم المستخدمين، أو تقسيم مواد العرض حسب المستوى للسماح بتنزيلها بكميات صغيرة موزّعة على مدار جلسة طويلة. في مثل هذه الحالات، قد لا يؤدي زيادة إجمالي حجم الحِزمة إلى خفض مستوى تجربة المستخدم، بل قد يؤدي في الواقع إلى تحسينها من خلال إتاحة المزيد من المحتوى في لعبتك مع تقليل حجم الحِزمة لكل مستخدم. إذا كنت تعتقد أنّ لعبتك تعمل بهذه الطريقة وتبرّر حجم الحِزمة الإجمالي الأكبر، يُرجى التواصل معنا من خلال صفحة التواصل مع فريق الدعم لمناقشة حالة الاستخدام.
هل يمكن استبعاد الإحصاءات الداخلية من متطلبات المكالمات الخارجية؟
لا، يجب ألا تجري الإعلانات القابلة للعب أي مكالمات خارجية في الوقت الحالي. يُرجى إعلام مدير الشركاء بنوع الإحصاءات التي تهمّك حتى نتمكّن من تحديد أولويات الميزات المستقبلية في هذا المجال.
تسترد اللعبة البيانات والمستويات من قاعدة بيانات بعيدة، فهل هذا مقبول؟
لا، ولكنّنا نجرّب حاليًا إمكانية الوصول إلى البيانات عن بُعد مع بعض العناوين المحدّدة. في الوقت الحالي، يجب تضمين جميع بيانات اللعبة كجزء من حزمة اللعبة. إذا أردت تعديل مواد عرض لعبتك أو محتواها أو إعادة تحميلها، يُرجى التواصل معنا باستخدام معلومات الاتصال الواردة في صفحة معلومات الاتصال بفريق الدعم لإرسال حِزمة لعبة معدَّلة أو التواصل معنا للاستفسار أكثر إذا أردت أن يتم النظر في طلبك للانضمام إلى برنامجنا التجريبي.
تظهر لي رسالة خطأ بشأن انتهاك "سياسة أمان المحتوى" عند تنفيذ نصوص برمجية مضمّنة
يحدث ذلك عند استخدام JavaScript لإنشاء علامة <script> وإضافتها إلى صفحتك. لأسباب أمنية، يستخدم YouTube سياسة أمان المحتوى (CSP) التي تتطلّب أن تتضمّن النصوص البرمجية رمز أمان خاصًا يُعرف باسم "nonce". يضيف YouTube هذا الرمز تلقائيًا إلى النصوص البرمجية في ملف HTML، ولكن عليك إضافته يدويًا إلى أي نصوص برمجية تنشئها باستخدام الرمز.
عند إنشاء علامات النصوص البرمجية آليًا باستخدام JavaScript، عليك العثور على الرقم العشوائي من صفحتك وتطبيقه على عنصر النص البرمجي الجديد.
مثال:
const script = document.createElement('script');
script.src = '...';
// Find the nonce from the main page and apply it
script.nonce = document.querySelector('script[nonce]')?.nonce;
document.head.appendChild(script);
يمكنك اختبار الإعدادات بلا إنترنت باستخدام الإرشادات المحدّدة داخل تعليمات حزمة الاختبار.
دمج حزمة تطوير البرامج (SDK)
يتضمّن هذا القسم أي أسئلة ذات صلة بأي من واجهات برمجة التطبيقات الخاصة بحزمة Playables SDK.
لم أحصل على الشهادة بسبب مشاكل في دمج الصوت، فما الذي يجب إصلاحه؟
تتضمّن المشكلة الأكثر شيوعًا في الصوت الألعاب التي تتطلّب تفاعل المستخدم قبل بدء التشغيل. ومع ذلك، قد يتم التركيز تلقائيًا على "هيّا نلعب" على YouTube، لذا يجب أن تتعامل اللعبة مع هذه الحالة.
للاطّلاع على مثال على إعداد الصوت، يمكنك مراجعة العينات.
Unity
يتضمّن هذا القسم أي أسئلة حول دمج ألعاب Unity الحالية مع حزمة تطوير البرامج (SDK) لهيّا نلعب على YouTube. للاطّلاع على أمثلة حول كيفية استخدام حزمة تطوير البرامج (SDK) وUnity Wrapper، راجِع مستندات هيّا نلعب على YouTube Unity Wrapper.
هل يمكنني استخدام ميزة "الضغط المسبق" في Unity؟
لا ننصحك بضغط مواد العرض مسبقًا. يستخدم شرط حجم الحزمة الأولي الحجم بعد الضغط، وسيتم تطبيق الضغط على الملفات التي يتم تحميلها بعد نقل البيانات. إذا كنت لا تزال بحاجة إلى ضغط الملفات مسبقًا، يمكنك الاطّلاع على بقية هذا القسم أو التواصل مع فريق الدعم من خلال صفحة التواصل مع فريق الدعم لمناقشة الخيار الأفضل للعبتك.
ستحتاج بعض الألعاب إلى استخدام الضغط المسبق لملفات .wasm أو .data في Unity.
لا تستخدِم عملية الضغط المسبق إلا في الحالات التالية، لأنّ ذلك قد يؤدي إلى إبطاء أوقات التحميل بشكل كبير:
- إذا كنت بحاجة إلى استخدام ميزة "الضغط المسبق" في Unity لاستيفاء متطلبات حجم الملف الفردي أو إجمالي حجم الحِزمة، يُرجى الاطّلاع على "أنا أستوفي الحد الأقصى لحجم الملف الفردي أو إجمالي حجم الحِزمة أو أتجاوزه، ماذا عليّ أن أفعل؟".
- إذا كنت بحاجة إلى استخدام ميزة "الضغط المسبق" في Unity لاجتياز عملية الاعتماد، يجب استيفاء المتطلبات التالية:
- يجب استخدام الضغط المسبق لملفات zip.
- يجب فك ضغط الملفات يدويًا في نص برمجة أداة التحميل. ننصحك باستخدام Compression Streams API.
تنبع هذه المتطلبات الإضافية من قيود بنية العرض. في الوقت الحالي، لا تتوفّر إمكانية استخدام عناوين HTTP إضافية أو ضغط Brotli.
كيف يمكنني إدارة تحديثات الإطارات عندما تكون اللعبة قيد التشغيل في الخلفية؟
يمكنك استخدام setTimeout لإدارة تحديثات الإطارات عندما تكون اللعبة تعمل في الخلفية.
يساعد ذلك في التحكّم في سلوكيات، مثل إيقاف الصوت مؤقتًا. يمكنك التحقّق من إدارة الإطارات في الخلفية من خلال تفعيل الخيار "التشغيل في الخلفية" في إعدادات المشغّل.
قيود الذاكرة لألعاب Unity
ستستخدم بعض الألعاب في Unity مقدارًا كبيرًا من الذاكرة، ما قد يؤدي إلى تجاوز قيود استخدام الذاكرة للعناصر القابلة للتشغيل. ننصحك باتّباع مستندات التطوير الخاصة بالذاكرة في Unity WebGL.