בניית משחקי טלוויזיה

במסך הטלוויזיה מוצגים מספר שיקולים שעשויים להיות חדשים במשחק לנייד מפתחים. האזורים האלה כוללים את גודלו, את ערכת הבקרה שלו ואת העובדה שכל השחקנים צופים בו בו-זמנית.

מסך

שני הדברים העיקריים שכדאי לזכור כשמפתחים משחקים למסך הטלוויזיה הם עיצוב את המשחק לפריסה לרוחב ולספק תמיכה לזמן אחזור נמוך.

תמיכה בתצוגה לרוחב

הטלוויזיה תמיד בכיוון הנכון: לא ניתן לסובב אותה, ואין כיוון לאורך. עיצוב תמיד המשחקים שלך בטלוויזיה יוצגו בפריסה לרוחב.

מצב אוטומטי של זמן אחזור קצר

במסכים מסוימים אפשר לעבד את הגרפיקה לאחר עיבוד. העיבוד הזה משפר את הגרפיקה איכות מסוימת, אבל היא עשויה להאריך את זמן האחזור. צגים חדשים יותר שתומכים ב-HDMI 2.1 כוללים צג נמוך אוטומטי מצב זמן אחזור (ALLM), שמצמצם את זמן האחזור על ידי השבתת העיבוד לאחר העיבוד. עבור לקבלת פרטים נוספים על ALLM, המפרט של HDMI 2.1. המלצות אחרות מסך מסוים עשוי לתמוך במצב משחק שפועל באופן דומה.

ב-Android 11 ואילך, חלון יכול לבקש הפעלה אוטומטית של מצב זמן אחזור נמוך או משחק אם הוא זמין, צריך לבקש עיבוד מינימלי לאחר העיבוד. זה במיוחד שימושי לאפליקציות לשיחות ועידה בווידאו ובמשחקים, שבהם זמן אחזור קצר חשוב יותר את הגרפיקה הטובה ביותר האפשרית.

כדי להפעיל או להשבית עיבוד מינימלי לאחר מכן, צריך להתקשר Window.setPreferMinimalPostProcessing(), או להגדיר preferMinimalPostProcessing ל-true. לא בכל המסכים יש תמיכה מינימלית לאחר עיבוד. כדי לדעת אם שתומך בו, אמצעי תשלום אחד (Display.isMinimalPostProcessingSupported()).

התקני קלט

לטלוויזיות אין ממשקי מגע, לכן חשוב עוד יותר לתקן את הפקדים לוודא שהשחקנים יחשבו שהם אינטואיטיביים ומהנים לשימוש. טיפול בבקרים מציע גם כמה בעיות אחרות שצריך לשים לב אליהן, כמו מעקב אחר בעיות בקרים, והטיפול בניתוקים מתנתק באלגנטיות. כל האפליקציות לטלוויזיה, כולל משחקים, אמורות לפעול באופן עקבי. לקרוא את המאמר ניהול הטלוויזיה בקרים לטלוויזיה לקבלת מידע נוסף על השימוש בבקרים לטלוויזיה רכיבי השליטה במשחקים ספציפיים מידע על שימוש בבקרים של הטלוויזיה במשחקים.

פריסות מקלדת

בגרסה Android 13 (רמת API 33) ואילך, אפשר לקבוע פריסות מקלדת באמצעות getKeyCodeForKeyLocation() לדוגמה, המשחק שלך תומך בתנועה באמצעות מקשי WASD, אבל ייתכן שהפעולה הזו לא תפעל כמו שצריך מקלדת AZERTY הכוללת את המקשים A ו-W במיקומים שונים. אפשר לקבל את קודי המפתחות למפתחות שאתם מצפים למצוא במיקומים מסוימים:

Kotlin

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)
    }

Java

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 Services לאחסון המשחק השמור. המשחק שלך צריך לקשר שמירת משחקים בחשבון Google ספציפי, כדי ניתן לזיהוי מובהק בכל המכשירים: גם אם הנגן משתמש בטלפון או בטלוויזיה, המשחק יוכל לשלוף את המידע לשמירת המשחק מאותו חשבון משתמש.

צריך גם לספק אפשרות בממשק המשתמש של המשחק כדי לאפשר לשחקן למחוק באופן מקומי ומאוחסנים בענן. כדאי להציג את האפשרות הזו במסך Settings של המשחק. עבור פרטים על הטמעת משחקים שמורים באמצעות Play Services זמינים במאמר משחקים שמורים ב-Android.

יציאה

צריך לספק רכיב עקבי וברור בממשק המשתמש שמאפשר למשתמש לצאת מהמשחק בצורה חלקה. הזה צריך להיות נגיש באמצעות לחצני הניווט בלחצני החיצים. עשו זאת במקום להסתמך לחצן דף הבית שנועד לספק יציאה כי היא לא עקבית או לא מהימנה בבקרים השונים.

אינטרנט

אין להפעיל את הגלישה באינטרנט במשחקים ל-Android TV. ב-Android TV אין תמיכה בדפדפן אינטרנט.

הערה: תוכלו להשתמש במחלקה WebView לצורך התחברות כדי: שירותי מדיה חברתית.

רשתות

לעיתים קרובות למשחקים נדרש רוחב פס גדול יותר כדי לספק ביצועים אופטימליים, והרבה משתמשים מעדיפים אתרנט ל-Wi-Fi כדי לספק את הביצועים האלה. האפליקציה צריכה לבדוק את החיבור ל-Wi-Fi וגם לאתרנט בחיבורים. אם האפליקציה מיועדת לטלוויזיה בלבד, אין צורך לבדוק אם יש שירות 3G/LTE כפי שצריך לאפליקציה לנייד.