למרות שלרבים ממכשירי ChromeOS יש מסכי מגע, חוויית האינטראקציה הטובה ביותר במשחקים במכשירים עם מסכים גדולים מתקבלת לרוב באמצעות עכבר, מקלדת וגיימפאד. עולם המשחקים בנייד מתבסס לרוב על מגע, ולכן צריך לחשוב איך לספק את החוויה הכי טובה למשתמשים שלא משתמשים במגע.
כדאי להתחיל עם השיטות המומלצות להוספת תמיכה במקלדת, בעכבר ובבקרי משחקים. חשוב לשים לב במיוחד למקרים שבהם המשתמשים לוחצים על מקשים או על כמה מקשים בו-זמנית.
פעולות שמבוססות על מגע מתאימות ל-Chromebook עם מסכי מגע, אבל חשוב לכלול גם אמצעי בקרה פיזיים כדי להעניק חוויה מצוינת. לדוגמה, קלט מהעכבר מצוין להתאמת התצוגה או לכוונת המטרה, אבל לא צריך לדרוש אותו לביצוע פעולות. אם במשחק לנייד יש תפריט במסך שמאפשר למשתמש להשתמש בפנס, בחרב או במגן על ידי לחיצה על לחצן עם האגודל, דרישה ללחוץ על הלחצנים האלה עם העכבר תספק חוויה גרועה. במקום זאת, צריך להקצות מקשים במקלדת להפעלת כל פעולה על ידי ביטול ההקצאה של onKeyUp או onKeyDown. פרטים וקוד זמינים בדף בנושא תאימות קלט.
לכידת העכבר
משחקים עם נקודת מבט בגוף ראשון נראים הכי טוב במחשב כשמיישמים בהם לכידת עכבר. הפעולה הזו מסתירה את סמן העכבר ומאפשרת למשתמש להזיז את נקודת המבט, לכוון, לנווט וכו' באמצעות העכבר. בהמשך מוצג סרטון הדגמה בסיסי של לכידת העכבר, שבו מתועדים מיקום הסמן ומצבי הלחצנים אחרי שהמשתמש לוחץ על תצוגת טקסט בשם text_clickme. מידע נוסף זמין במאמרי העזרה בנושא לכידת מצביע ב-Android.
class MainActivity : AppCompatActivity() { var mouse_x: Float = 0f var mouse_y: Float = 0f var mouse_left_pressed = false var mouse_center_pressed = false var mouse_right_pressed = false var mouse_scrolling = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) text_clickme.setOnClickListener { text_clickme.requestPointerCapture() } text_clickme.setOnCapturedPointerListener { view, motionEvent -> // Get the coordinates required by your app mouse_x = motionEvent.x mouse_y = motionEvent.y when (motionEvent.action) { ACTION_DOWN -> { when (motionEvent.buttonState) { BUTTON_PRIMARY -> mouse_left_pressed = true BUTTON_SECONDARY -> mouse_right_pressed = true BUTTON_TERTIARY -> mouse_center_pressed = true } mouse_scrolling = false } ACTION_CANCEL, ACTION_UP -> { when (motionEvent.actionButton) { BUTTON_PRIMARY -> mouse_left_pressed = false BUTTON_SECONDARY -> mouse_right_pressed = false BUTTON_TERTIARY -> mouse_center_pressed = false 0 -> { mouse_left_pressed = false mouse_right_pressed = false mouse_center_pressed = false } } mouse_scrolling = false } ACTION_SCROLL -> { mouse_scrolling = true } else -> { mouse_scrolling = false } } // Indicate event was consumed true } } // Release pointer capture when escape pressed override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { if (keyCode == KEYCODE_ESCAPE) { text_clickme.releasePointerCapture() return true; } return super.onKeyUp(keyCode, event) } }
צ'אט
תכונות של Chat יכולות להיות רכיב חשוב במשחקים מרובי משתתפים. כדאי להקדיש זמן למחשבה על האינטראקציה של המשתמשים עם תכונת הצ'אט במשחק בזמן המשחק. לדוגמה, אם הם משחקים באמצעות המקלדת, הם לא צריכים להשתמש בעכבר או במסך המגע כדי לגשת לצ'אט או לשלוח הודעות.
דוגמה לדפוס: מקש במקלדת שמעביר את המיקוד לתיבת הצ'אט, ומקש Enter ששולח את ההודעות.
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) { KeyEvent.KEYCODE_C -> { edittext_chatbox.requestFocus() true } KeyEvent.KEYCODE_ENTER -> { submitChatMessage() true } else -> super.onKeyUp(keyCode, event) } }
אפשר לעיין בתיעוד המקלדת בדף התאימות של קלט ב-Android.
תמיכה בסטיילוס
אפליקציות לציור ומשחקים שמבוססים על החלקה יכולים להשתמש בקלט של עט סטיילוס במכשירי ChromeOS. פרטים נוספים זמינים בדף בנושא קלט באמצעות עט סטיילוס.
בקרים למשחקים
מכשירי Chromebook תומכים בעד ארבעה בקרי משחקים. מפתחים צריכים להשתמש בממשקי ה-API הרגילים של Android לבקרי משחקים כדי לתמוך בהם.
הלחצנים ממופים לערכים נפוצים לפי מיפוי נפוץ. לצערנו, לא כל יצרני בקרי המשחקים פועלים לפי אותן מוסכמות מיפוי. כדאי לאפשר למשתמשים לבחור מתוך מיפויים שונים של בקרים פופולריים כדי לשפר את חוויית המשתמש.