تطرح شاشة التلفزيون عددًا من الاعتبارات التي قد تكون جديدة على مطوّري ألعاب الأجهزة الجوّالة. وتشمل هذه المناطق حجمها الكبير ونظام التحكّم فيها وكون جميع اللاعبين يشاهدونها في الوقت نفسه.
الشاشة
هناك شيئان رئيسيان يجب وضعهما في الاعتبار عند تطوير ألعاب لشاشة التلفزيون هما تصميم لعبتك في الاتجاه الأفقي وتوفير الدعم لوقت الاستجابة البطيء.
أن تتيح العرض في الوضع الأفقي
يكون التلفزيون دائمًا بالوضع الأفقي: لا يمكنك تحويله، ولا يتوفّر وضع عمودي. التصميم دائمًا ألعاب التلفزيون لعرضها في الوضع الأفقي.
وضع وقت الاستجابة السريع التلقائي
يمكن لبعض الشاشات إجراء معالجة لاحقة للرسومات. تؤدي هذه المعالجة اللاحقة إلى تحسين الرسومات ذي جودة عالية ولكن قد يزيد من زمن الانتقال درجة حرارة منخفضة تلقائيًا للشاشات التي تتوافق مع HDMI 2.1 وضع وقت الاستجابة (ALLM)، الذي يقلّل من وقت الاستجابة عن طريق إيقاف المعالجة اللاحقة. بالنسبة مزيد من التفاصيل حول ALLM، يُرجى مراجعة مواصفات HDMI 2.1: مشاكل أخرى أجهزة العرض المتوافقة مع وضع الألعاب بسلوك مشابه.
في نظام التشغيل Android 11 والإصدارات الأحدث، يمكن أن تطلب إحدى النوافذ ذلك الوضع التلقائي أو وضع الاستجابة السريعة المنخفض. إذا كان ذلك متاحًا، من خلال طلب أقلّ قدر من المعالجة بعد المعالجة. يعد ذلك على وجه الخصوص مفيدة لتطبيقات الألعاب ومؤتمرات الفيديو، حيث يكون وقت الاستجابة البطيء أكثر أهمية من والحصول على أفضل الرسومات الممكنة.
لتفعيل الحد الأدنى من المعالجة اللاحقة أو إيقافه، اتصل بالرقم
Window.setPreferMinimalPostProcessing()
،
أو اضبط سمة
preferMinimalPostProcessing
للنافذة على true
. لا تتيح بعض شاشات العرض إجراء عمليات المعالجة اللاحقة إلى أدنى حد. لمعرفة ما إذا كان
شاشة معينة تدعمها، فقم باستدعاء
طريقة Display.isMinimalPostProcessingSupported()
.
أجهزة إدخال البيانات
لا تتضمّن أجهزة التلفزيون واجهات تعمل باللمس، لذا من المهم جدًا ضبط عناصر التحكّم بشكل صحيح والتأكّد من أنّها سهلة الاستخدام وممتعة بالنسبة إلى اللاعبين. التعامل مع وحدات التحكُّم كما يقدم أيضًا بعض المشكلات الأخرى التي يجب الانتباه إليها، مثل تتبع العديد من ووحدات التحكم، والتعامل مع قطع الاتصال بسلاسة. يجب أن تتعامل جميع تطبيقات التلفزيون، بما في ذلك الألعاب، مع وحدات التحكم الرئيسية بشكل متسق. يمكنك الاطّلاع على مقالة إدارة وحدات التحكّم في التلفزيون للحصول على مزيد من المعلومات حول استخدام وحدات التحكّم في التلفزيون، واستخدام وحدات التحكّم في الألعاب للحصول على معلومات محدّدة حول استخدام وحدات التحكّم في التلفزيون للألعاب.
تخطيطات لوحة المفاتيح
في الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك تحديد تنسيقات لوحة المفاتيح باستخدام
getKeyCodeForKeyLocation()
.
على سبيل المثال، تتيح لعبتك الحركة باستخدام مفاتيح WASD، ولكن قد لا تعمل هذه الميزة بشكل صحيح على أجهزة
لوحة مفاتيح AZERTY تشتمل على المفتاحين A وW في أماكن مختلفة. يمكنك الحصول على رموز المفاتيح
للمفاتيح التي تتوقعها في مواضع معينة:
val inputManager: InputManager? = requireActivity().getSystemService() inputManager?.inputDeviceIds?.map { inputManager.getInputDevice(it) } ?.firstOrNull { it.keyboardType == InputDevice.KEYBOARD_TYPE_ALPHABETIC } ?.let { inputDevice -> keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W) keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A) keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S) keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D) }
InputManager inputManager = requireActivity().getSystemService(InputManager.class); InputDevice inputDevice = Arrays.stream(inputManager.getInputDeviceIds()) .mapToObj(inputManager::getInputDevice) .filter( device -> device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) .filter(Objects::nonNull) .findFirst() .orElse(null); if (inputDevice != null) { keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W); keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A); keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S); keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D); }
في هذا المثال، عند استخدام لوحة مفاتيح AZERTY، يتم ضبط keyUp
على
تم ضبط KeyEvent.KEYCODE_Z
، keyLeft
على KeyEvent.KEYCODE_Q
،
بينما تم ضبط keyDown
وkeyRight
على KeyEvent.KEYCODE_S
وKeyEvent.KEYCODE_D
على التوالي. يمكنك الآن إنشاء معالِجات الأحداث الرئيسية لهذه الأسباب
الرموز الرئيسية وتنفيذ السلوك المتوقع.
البيان
هناك بعض العناصر الخاصة التي يجب أن تتضمّنها الألعاب في بيان Android.
عرض لعبتك على الشاشة الرئيسية
تعرض الشاشة الرئيسية في Android TV الألعاب في صف منفصل عن التطبيقات العادية.
لإظهار لعبتك في قائمة الألعاب، عليك ضبط
android:isGame
إلى "true"
في بيان التطبيق
<application>
مثلاً:
<application ... android:isGame="true" ... >
الإفصاح عن توافق التطبيق مع وحدات تحكّم الألعاب
قد لا تكون وحدات التحكّم في الألعاب متاحة أو نشطة لمستخدمي أجهزة التلفزيون. من أجل إجراء لإبلاغ المستخدمين بأنّ لعبتك تتوافق مع ذراع التحكّم في الألعاب، عليك تضمين الإدخال التالي في بيان التطبيق:
<uses-feature android:name="android.hardware.gamepad" android:required="false"/>
ملاحظة: عند تحديد توافق android:hardware:gamepad
، لا تضبط سمة
android:required
على "true"
. إذا قمت بذلك، فلن يتمكن المستخدمون من
تثبيت تطبيقك على أجهزة التلفزيون.
لمزيد من المعلومات عن إدخالات البيان، يُرجى الاطّلاع على بيان التطبيق.
خدمات ألعاب Google Play
إذا كانت لعبتك تدمج خدمات ألعاب Google Play، يجب مراعاة عدد من النقاط المتعلقة بالإنجازات وتسجيل الدخول وحفظ الألعاب.
الإنجازات
يجب أن تتضمن لعبتك خمسة إنجازات (قابلة للربح) على الأقل. يجب أن يتمكّن من تحقيق الإنجازات فقط المستخدم الذي يتحكّم في أسلوب اللعب من جهاز إدخال متوافق. لمزيد من المعلومات عن إنجازاتك وكيفية تنفيذها، راجع الإنجازات في Android.
تسجيل الدخول
من المفترض أن تحاول لعبتك تسجيل دخول المستخدم عند تشغيلها. إذا رفض اللاعب تسجيل الدخول عدة مرات مرّة واحدة متتالية، ستتوقّف اللعبة عن طرح الأسئلة. اطّلِع على مزيد من المعلومات حول تسجيل الدخول في مقالة تنفيذ تسجيل الدخول على Android.
جارٍ الحفظ…
استخدام الألعاب المحفوظة في "خدمات Google Play" لتخزين إنقاذ اللعبة. يجب أن تربط لعبتك عمليات حفظ التقدم في اللعبة بحساب Google محدّد، حتى تتمكّن من تحديد هويتها بشكل فريد حتى على جميع الأجهزة: سواء كان اللاعب يستخدم هاتفًا جوّالاً أو تلفزيونًا، يجب أن تتمكّن اللعبة من سحب معلومات حفظ التقدم في اللعبة من حساب المستخدم نفسه.
يجب أيضًا توفير خيار في واجهة المستخدم الخاصة باللعبة للسماح للاعب بحذف البيانات المخزّنة على الجهاز و
في السحابة الإلكترونية. يمكنك وضع الخيار في شاشة Settings
في اللعبة. للاطّلاع على
تفاصيل حول تنفيذ ميزة "حفظ التقدم في الألعاب" باستخدام "خدمات Play"، يُرجى الاطّلاع على مقالة الألعاب المحفوظة في Android.
الخروج
توفير عنصر واجهة مستخدم متناسق وواضح يتيح للمستخدم الخروج من اللعبة بشكل رشيق. يجب أن يكون بإمكانك الوصول إلى هذا العنصر باستخدام أزرار التنقّل في لوحة التوجيه. يمكنك القيام بذلك بدلاً من الاعتماد على زر الشاشة الرئيسية لتوفير مخرج، لأنّ ذلك غير متسق ولا موثوق به على مستوى وحدات التحكّم المختلفة
الويب
لا تفعِّل ميزة تصفُّح الويب في ألعاب Android TV. لا يتيح Android TV استخدام متصفّح ويب.
ملاحظة: يمكنك استخدام الفئة WebView
لتسجيل الدخول إلى
وخدمات وسائل التواصل الاجتماعي.
اتصال بالشبكات
كثيرًا ما تحتاج الألعاب إلى معدل نقل بيانات أعلى لتوفير الأداء الأمثل، ويفضّلها العديد من المستخدمين من Ethernet إلى Wi-Fi لتقديم هذا الأداء. يجب أن يتحقق التطبيق من وجود شبكة Wi-Fi والإيثرنت على حد سواء. الاتصالات. إذا كان تطبيقك مخصّصًا للتلفزيون فقط، ليس عليك التحقّق من توفّر خدمة الجيل الثالث/LTE كما هو الحال مع التطبيقات المخصّصة للأجهزة الجوّالة.