מכשירי Android מגיעים בצורות ובגדלים שונים. אתם יכולים להרחיב את פוטנציאל החשיפה של המשחק שלכם על ידי מתן אפשרות לשחקנים לשחק מכל מקום שבו הם רוצים, בין אם זה בטלפון, בטאבלט, במחשב, בטלוויזיה או באוזניות XR. כאן תלמדו:
- איך תמיכה בעכבר ובמקלדת יכולה לאפשר לשחקנים לשחק במשחק שלכם ב-PC וב-ChromeOS, וגם לשפר את נוחות המשחק במכשירים עם מסך גדול.
- איך להגיע לשחקנים הכי נלהבים שלכם במקום שבו הם נמצאים באמצעות שילוב עם גיימפאד.
- איך מוסיפים תמיכה בעט כדי לשחק בצורה מדויקת ותגובה במהלך תנועה.
- איך תומכים בשלט הטלוויזיה ומאפשרים לצופים ליהנות מהמסך הגדול ביותר שבבעלותם: הטלוויזיה.
- שיקולים לגבי עיצוב לגבי מתי כדאי לעבור בין שיטות הקלט.
- מה עושים משחקים בגורמי צורה שונים כדי לתמוך בהעדפות הקלט של השחקנים.
- ועוד הרבה יותר.
תאימות אוטומטית
ל-Android יש תאימות אוטומטית ללא מגע כשהדבר אפשרי, לדוגמה:
dispatchTouchEvent
/onTouchEvent
מגיבים עם אירועי תנועה גם לקליקים או לקלט של עט. כלומר, אם לא תבדקו את סוג הכלי, הלוגיקה לטיפול במגע אמורה לפעול עם העכבר והעט הדיגיטלי.- חלק מהאירועים של שלט הטלוויזיה ומכשיר ה-gamepad שלא טופלו מועברים מחדש כאירועי מקלדת.
במכשירים עם גורם צורה כמו מחשב, כמו Play Games ו-ChromeOS, ברירת המחדל היא ליצור נגיעות מקליקים של עכבר. יכול להיות שלא יהיה מסך מגע חלופי, ולכן זוהי רמת התאימות הבסיסית.
אירועים של גיימפאד ושל שלט טלוויזיה שלא טופלו מועברים מחדש כאירועים של מקלדת.
במכשירים עם גורם צורה שדומה למחשב, כמו Play Games ו-ChromeOS, המערכת יוצרת אירועי מגע במקום אירועי עכבר כברירת מחדל, כדי למקסם את התאימות למשחקים שמצפים לקלט ממסך מגע.
כדי ליהנות מחוויית המשתמש הטובה ביותר, כדאי להטמיע תמיכה ישירה בקלט שאינו מגע במקום להסתמך על תאימות אוטומטית.
תמיכה בכל גורמי הצורה
מערכת Android פועלת במכשירים רבים, והרשימה הזו הולכת וגדלה. בין שהשחקנים פותחים את הטלפון לטאבלט עם מסך גדול, מפעילים את הטלוויזיה עם Android, פותחים משחק ל-Android ב-Chromebook או משחקים משחק מהיר ברכב בזמן שהם ממתינים לטעינה, אתם יכולים לעורר עניין בקרב השחקנים במקומות רבים יותר ובמסכים רבים יותר מאי פעם. חשוב לוודא שהמשחק שלכם זמין לשחקנים במיקומים הבאים:
גורם צורה | קלט ברירת מחדל טיפוסי | מסך מגע | עכבר ומקלדת | בקר משחקים | סטיילוס1 | לחצני חיצים (D-pad) עם 5 כיוונים |
---|---|---|---|---|---|---|
טלפון | מסך מגע | כן | כן | כן | כן | כן |
מסך גדול | מסך מגע | כן | כן | כן | כן | כן |
PC2 | עכבר ומקלדת | לא | כן | כן | לא | לא |
ChromeOS3 | לוח מגע, עכבר ומקלדת | לפעמים | כן | כן | כן | כן |
טלוויזיה | לחצני חיצים (D-pad) עם 5 כיוונים | לא | כן | כן | לא | כן |
Cars4 (Automotive OS) |
מסך מגע | כן | כן | כן | לא | כן |
צפייה ב-5 | מסך מגע | כן | לא | לא | לא | לא |
הטבלה הזו נועדה לעזור לכם לתעדף את התמיכה במנגנוני קלט חדשים על ידי הדגשת הקלט הצפוי בכל גורם צורה. חשוב לזכור:
- הימנעו משימוש במנגנון קלט אחד כברירת מחדל. הפעולה הזו עלולה להגביל בטעות את פוטנציאל החשיפה של המאמצים שלכם ללא מגע. לדוגמה, רוב השחקנים רוצים לשחק במשחקים של ChromeOS בעזרת עכבר ומקלדת, אבל חלקם עדיין רוצים תמיכה במסך מגע, בהתאם לפרופיל המכשיר שלהם.
- הימנעו משיוך מנגנוני קלט לגורמי צורה. Android פועל עם מגוון רחב של ציוד היקפי, ומכשירים היברידיים נהיים פופולריים יותר ויותר. אם תסירו את התמיכה במקלדת מהגרסה לנייד, יכול להיות שהמשחק ייראה חלקי אם לשחקן יש טאבלט שסופק עם מקלדת נשלפת.
קלט עכבר
יכול להיות שהמסך הגדול והמרהיב ביותר של השחקן יפעל ב-Android, בין אם מדובר במחשב נייד עם ChromeOS, בטאבלט עם Android או במחשב. לרוב, השחקנים מצפים לשחק במכשירים האלה באמצעות עכבר, והוספת תמיכה יכולה להגביר את ההתעניינות של השחקנים במשחק. Android תומך בתכונות הנפוצות למערכות הפעלה למחשב, כולל:
- תמיכה בלחיצה רגילה, בלחיצה ימנית ובלחיצה בלחצן האמצעי, וגם בלחצנים נוספים כמו הקודם והבא
- זיהוי גלגל גלילה
- דיווח על תנועת העכבר באופן מוחלט או יחסי (נקרא גם צילום של סמן)
- היכולת להגדיר סמלי סמן מותאמים אישית
יש מדריכים ספציפיים לגורמי צורה עבור:
קלט של לוח מגע
צילום הקלט של משטח המגע ב-Android שונה במקצת מתמיכה בעכבר. כשקוראים ל-requestPointerCapture()
, מבקשים גישה לנתונים הגולמיים של המגעים בלוח. כלומר, אתם מקבלים אירועים לכל מגע באותו אופן שבו אתם מקבלים אירועי מגע מרובה ממגע במסך, מלבד העובדה שהקואורדינטות נמצאות במרחב הקואורדינטות של משטח המגע, ולא במרחב הקואורדינטות של המסך. במצב הזה, זיהוי התנועות בלוח המגע המובנה של Android והסינון של כף היד מושבתים. לדוגמה, אם המשתמש מזיז אצבע אחת על הלוח בזמן שהאגודל שלו מונח בפינה הימנית התחתונה וממתין לקליק, המשחק צריך לקבוע באיזו תנועה של אצבע להשתמש בלוגיקה שלו (לדוגמה, כדי להזיז את המצלמה).
כלומר, אפשר להשתמש במכשירי גיימפאד עם לוחות מגע מובנים כמו במסך מגע כדי להזין נתונים בצורה יעילה על סמך תנועות.
כדי לקבוע אם הנגן משתמש בעכבר או במשטח מגע במהלך צילום הסמן, בודקים את ערכי המקור של InputDevice#getSources()
או של MotionEvent#getSource()
עבור InputDevice.SOURCE_TOUCHPAD
.
קלט מקלדת
תמיכה במקלדת קיימת כמעט בכל מכשירי Android. בהתאם לסוג המשחק שאתם מפתחים, היתרונות של הוספת תמיכה במקלדת למשחק יכולים לנוע בין הגדלת בסיס השחקנים על ידי הפיכת המשחק לנגיש יותר, לבין הפיכת המשחק לחוויה מרתקת ואינטואיטיבית יותר.
ריכזנו כאן כמה דרכים נפוצות לשיפור המשחק באמצעות תמיכה במקלדת:
- במכשירים ללא מסך מגע, צריך למפות את המכניקה של מגע רב למקלדת. במשחקים שדורשים שתי נגיעות או יותר בו-זמנית, כמו תנועה וקפיצה, כדאי למפות את הפעולות האלה ללחיצות על המקלדת כדי לשפר את יכולת ההפעלה במסכים גדולים ובמסכים ללא מסך מגע.
- אפשר לנווט בתפריטים באמצעות מקלדת. הוספת ניווט באמצעות לחצנים, כמו מקשי החיצים ו-Enter, לתפריטים ולרכיבי גיימפליי סטטיים מאפשרת לשחק במשחקים בטלוויזיות ומשפרת את הנגישות בכל הפורמטים.
- הוספת מקשי קיצור לפעולות במסך אפשר למפות כל דבר שהמשתמשים יכולים לגעת בו במסך לפעולה במקלדת. גישה מהירה לפעולות כמו בחירת יחידות במשחק אסטרטגיה או הפעלת משבצות מלאי במשחק פעולה תעזור לשחקנים להתמקד במשחק.
חשוב לזכור שמקלדות QWERTY נפוצות למדי, אבל יש הרבה פריסות פופולריות שונות, ויש תווים מסוימים שצריך ללחוץ עליהם פעם אחת בפריסת מקלדת אחת, אבל צריך ללחוץ עליהם כמה פעמים בפריסת מקלדת אחרת.
אם המשחק משתמש במיקום היחסי של המקשים כדי לבצע פעולות, כמו שימוש במקשים W, A, S ו-D כמו מקשי החיצים כדי לנוע, צריך להשתמש ב-InputDevice.getKeyCodeforKeyLocation()
כדי למפות את המיקום של מקש QWERTY לקוד מקש ב-KeyEvent.getKeyCode()
. אם הפריסה של הנגן תשתנה, תתבצע קריאה ל-onInputDeviceChanged()
.
כשמוסיפים קלט טקסט למשחק, TextInput ב-GameActivity מספק מנגנון לטיפול מהימן בקלט של IME, בסימנים דיאקריטיים או בפרמטרים אחרים ספציפיים לאזורים שונים בתצוגה, תוך שימוש במנוע העיבוד של הטקסט במשחק. כך אפשר להימנע ממלכודות רבות שקשורות לטיפול ישיר בהזנת מקלדת או באמצעות ווידג'ט EditText
מחוץ למסך.
קלט של גיימפאד
יש תמיכה רשמית במכשירי Gamepad ב-Android, כולל אירועי חיבור וניתוק, תמיכה בהפעלה חושית, תמיכה מתקדמת בקלט, כולל גירוסקופים ותמיכה בפלט, כמו צבע תאורה כשהאפשרות הזו זמינה.
מפתחי אפליקציות יכולים להאזין לקלטים של בקר משחקים באמצעות פונקציות חזרה (callbacks) מסוג View
או Activity
, אבל מפתחי משחקים מומלצים להשתמש בספריית בקר המשחקים, כי היא:
- נכתב ב-C++ כדי להקל על השילוב במנוע המשחקים שלכם
- מרכז את כל התכונות של משחקי הווידאו בממשק API אחד
- מאפשרת להבדיל בין הסמלים על לחצני הפנים של גיימפאד, כך שהתוויות של המשחק יוכלו להתאים לגיימפאד של השחקן
- איחוד הדיווח על אירועים של גיימפאד במקרים שבהם לחצנים יהיו כניסות אנלוגיות בגיימפדים מסוימים, אבל כניסות בינאריות בגיימפדים אחרים
- תאימות קדימה מוגבלת במכשירי Android ישנים יותר למכשירי גיימפאד חדשים יותר
קלט בסטיילוס
ב-Android יש תמיכה מתקדמת בעט ברוב המכשירים, כולל זיהוי לחץ, כיוון, הטיה, ריחוף וכף יד. אירועי עט מגע נשלחים לקריאות חזרה של מגע כדי לשפר את התאימות, אבל חשוב לבדוק עם מכשיר עט מגע למקרה שהלוגיקה של המנוע מסננת את האירועים האלה. שילוב מלא מועיל במשחקים עם מטרות מגע קטנות או במשחקים שבהם ציור בצורה חופשית מרגיש טבעי.
כשזמן העיבוד של התמונה מאחר אחרי תנועת העט, זמן האחזור בולט יותר מאשר כשהמסך חסום על ידי אצבע או מנותק ממנו, כמו במקרה של מקלדת, עכבר או שלט משחקים. לכן, Android מספק צינור עיבוד נתונים עם זמן אחזור נמוך לעיבוד קווים, עם זמן אחזור של 4 אלפיות השנייה בלבד ממיקום העיפרון ועד להצגה במסך. יש שלוש דרכים שבהן אפשר להשתמש ביכולת הזו במשחק, כדי ליצור תחושה של חיבור ישיר לעולם האמיתי:
- ספריית Jetpack Ink מספקת ערכת כלים נוחה להוספת עיבוד רספונסיבי של קווים לכל פרויקט ב-Android.
- במשחקים שלא ניתן להשתמש בהם ברכיב Kotlin לעיבוד קווים, זמין קוד המקור המלא של C++. כך המפתחים יכולים לשלב את מה שהם צריכים ישירות בטכנולוגיה שלהם.
- במשחקים שדורשים שילוב מותאם אישית מלא, אפשר להריץ לוגיקה של עיבוד תמונה בהתאמה אישית ישירות במאגר הקדמי כדי למקסם את התגובה ואת השליטה.
בקרים לטלוויזיה
מכשירי Android TV כוללים שלט רחוק עם 5 לחצנים, שכוללים את ארבעת הכיוונים הראשיים ולחצן OK. אפליקציות שמשתמשות במערכת הווידג'טים המובנית של Android תומכות בהן כברירת מחדל, אבל המפתחים צריכים לבדוק את הווידג'טים המותאמים אישית של המשחק כדי לשמור על תאימות במכשירי טלוויזיה.
מידע נוסף זמין במסמכי התיעוד של Android TV.
שיקולים נוספים
כדי לספק לשחקנים את החוויה הטובה ביותר, כדאי לתכנן את המשחק כך שיאפשר כמה צורות של קלט ולאפשר לשחקנים לעבור ביניהם בזמן אמת. כך השחקן יכול לעבור במהירות בין שיטות קלט שונות בהתאם למצב המשחק שבו הוא נמצא, או שהמשחק יכול לעבור בקלות בין הגדרות שונות של מכשיר אחד עם Android.
חשוב לזכור:
- עדיף לבדוק אם יש קלט מסוג מסוים מאשר לסנן לפי גורם הצורה. לדוגמה, אם תפעילו תמיכה בעכבר ובמקלדת רק ב-ChromeOS, שחקנים בטאבלטים עם מקלדות נשלפות לא יוכלו ליהנות מהמאמץ הנוסף שלכם.
- יש שיקולים נוספים, מלבד גורם הצורה, שמשפיעים על צורת הקלט הטובה ביותר. לדוגמה, יכול להיות שצרכי הנגישות של השחקן יגרמו לכך שיהיה קשה או לא נוח להשתמש בעכבר או במסך מגע, אבל שיהיה קל להשתמש במקלדת או בגיימפאד.
- כל תמיכה עדיפה על אי-תמיכה. מומלץ להגיב לשינויים במשוב בזמן אמת, אבל השחקנים יעריכו גם תמיכה חלקית, כל עוד הם יכולים לקבל אותה.
- הקלט הטוב ביותר עשוי להשתנות בין ריצות של המשחק. לדוגמה, מסך מגע עדיף כשמשחקים במשחקים בדרכים, שלט משחקים כשהטלפון מחובר לטלוויזיה, ועכבר ומקלדת כשאתם יושבים ליד שולחן.
איך להגיב להזנת משתמש
משחקים רגילים לנייד תומכים בשחקן אחד לכל מכשיר. כדי לקבל את התוצאות הטובות ביותר, המשחק מגיב לכל הקלט האפשרי ומשנה את ממשק המשתמש בהתאם לשימוש הפעיל של השחקן. כך, גרסה אחת של המשחק פועלת באופן אוטומטי בכל גורמי הצורה, והשחקנים יכולים אפילו לשלב בין מקורות קלט שונים בהתאם לצרכים שלהם.
לרוב, מפתחים רוצים להגדיר שיטת קלט שמוגדרת כברירת מחדל עם עיכובים מובנים לפני שינוי ממשק המשתמש. מה זה אומר?
- מאחר שרוב השחקנים משחקים במסכי מגע, כדאי להציג פקדי מגע בזמן ההפעלה. אם שחקן מתחיל לשחק באמצעות מקלדת או גיימפאד ולא משתמש במסך המגע במשך זמן מה, שכבת המגע תיעלם בהדרגה.
- אם שחקן משתמש ב-gamepad ומקשה על מקש במקלדת, המערכת תשנה את ההנחיות במשחק כך שיוצגו לחצני מקלדת במקום לחצני gamepad.
- כששחקן משתמש גם במקלדת וגם ב-gamepad בו-זמנית, כדאי להוסיף עיכוב לפני שמעבירים את ממשק המשתמש מקבוצת רמזים אחת לקבוצה אחרת כדי למנוע הבהוב במסך.
- בודקים את סוג מקור הקלט כשמעובדים את הקלט. מקשי המקלדת ולחצני השליטה במשחק פולטים אירועים של הקשה על מקש.
- נסו לא לסמן קלט כ'טופל' אלא אם המשחק יכול לטפל בו. מערכת Android משדרת מחדש חלק מהאירועים כדי לאפשר תאימות לגורמי צורה חדשים יותר. לדוגמה, המערכת הופכת את הלחצן A במשחק ללחצן OK.
הוספת הערות לגבי תמיכה בקלט במניפסט
לא חובה לעשות זאת, אבל מומלץ להוסיף הערות באמצעות דגלים של מאפייני המניפסט כדי לציין את סוגי הקלט שאתם מטפלים בהם. דגלים נפוצים הם:
android.hardware.type.pc
: השבתת שכבות התאימות של הקלט ב-ChromeOS ובמחשב כדי לאפשר למפתחים לטפל ישירות באירועי העכבר. מגדירים את הערךandroid:required="false"
כדי שהמשחק עדיין יועבר לטלפונים.android.hardware.gamepad
: אפליקציות ומשחקים מקבלים אירועי בקר משחקים גם אם הם תומכים בבקרי משחקים וגם אם לא. הגדרת הדגל הזה במניפסט והגדרתandroid:required="false"
מאפשרות להציג את המשחק במכשירי Android TV עם גיימפדים מחוברים.
-
יצרנים יכולים להטמיע תמיכה בעט בחלק מהמכשירים, אבל אין גורם פורמט שבו מובטחת תמיכה. אפשר לחבר משטחי ציור למכשיר Android והם יופיעו כעט סטיילוס. ↩
-
למרות שבמחשבים מסוימים יש תמיכה במסך מגע ובסטיילוס, לקוח Google Play Games מגיב רק לאירועי עכבר ממערכת ההפעלה המארחת. כדי למקסם את התאימות, אירועי עכבר מופיעים בלקוח כאירועי מגע כברירת מחדל. מידע נוסף זמין בקטע קלט של עכבר. ↩
-
בדרך כלל, במכשירי ChromeOS יש תמיכה בעכבר ובמקלדת, אבל מסכי מגע הם אופציונליים. במכשירים רבים עם מסך מגע יש גם תמיכה בהזנת נתונים בעזרת עט. ↩
-
Android Automotive OS מתייחס למכוניות עם Android מובנה, שיכולות לפעול בלי טלפון Android. התרשים הזה מתייחס ל-Automotive OS. אפליקציית Android Auto מקרינה אפליקציה מהטלפון לרכב, ויכול להיות שמכשירים שתומכים ב-Android Auto (הקרנה) לא כוללים מסך מגע. ↩
-
הקישוריות של מכשירי Wear OS מוגבלת. אפשר לסרוק אחר ציוד היקפי ל-Bluetooth, אבל לרוב מערכת ההפעלה לא מצליחה להתחבר. ↩