Viele ChromeOS-Geräte haben einen Touchscreen. Bei Spielen ist die Interaktion auf diesen Geräten mit großem Bildschirm jedoch oft am besten über Maus, Tastatur und Gamepad. Mobile Spiele sind oft auf Touch-Eingaben ausgelegt. Sie sollten daher überlegen, wie Sie Nutzern, die keine Touch-Eingaben verwenden, die bestmögliche Nutzererfahrung bieten können.
Beginnen Sie mit den Best Practices für das Hinzufügen von Unterstützung für Tastatur, Maus und Controller. Besondere Aufmerksamkeit sollten Sie dem Fall schenken, in dem Nutzer Tasten gedrückt halten oder mehrere Tasten gleichzeitig drücken.
Touch-basierte Aktionen sind für Chromebooks mit Touchscreens in Ordnung, aber es ist wichtig, auch durchdachte physische Steuerelemente für eine gute Nutzerfreundlichkeit einzubauen. Die Eingabe per Maus eignet sich beispielsweise hervorragend zum Anpassen der Ansicht oder zum Zielen, sollte aber nicht für Aktionen erforderlich sein. Wenn ein mobiles Spiel ein Menü auf dem Bildschirm hat, in dem ein Nutzer durch Drücken einer Taste mit dem Daumen eine Taschenlampe, ein Schwert oder einen Schild verwenden kann, ist es nicht benutzerfreundlich, wenn er diese Tasten mit einer Maus anklicken muss. Stattdessen sollten Tastaturtasten zum Auslösen der einzelnen Aktionen zugewiesen werden, indem onKeyUp oder onKeyDown überschrieben wird. Weitere Informationen und Codebeispiele finden Sie auf der Seite zur Eingabekompatibilität.
Mauszeiger erfassen
Spiele in der Ich-Perspektive sehen auf dem Computer am besten aus, wenn die Mauszeigererfassung implementiert ist. Dadurch wird der Mauszeiger ausgeblendet und der Nutzer kann den Blickwinkel ändern, zielen oder steuern, indem er die Maus verwendet. Unten sehen Sie eine einfache Demo zur Mausaufzeichnung, bei der die Zeigerposition und die Schaltflächenstatus aufgezeichnet werden, nachdem der Nutzer auf eine Textansicht mit dem Namen text_clickme geklickt hat. Weitere Informationen finden Sie in der Dokumentation zur Zeigererfassung unter 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
Chatfunktionen können ein wichtiger Bestandteil von Spielen mit Mehrspielermodus sein. Nehmen Sie sich etwas Zeit, um darüber nachzudenken, wie Nutzer während des Spielens mit der Chatfunktion Ihres Spiels interagieren werden. Insbesondere wenn sie mit der Tastatur spielen, sollten sie nicht die Maus oder den Touchscreen verwenden müssen, um auf den Chat zuzugreifen oder Nachrichten zu senden.
Ein Muster könnte darin bestehen, dass eine Tastaturtaste den Fokus auf das Chatfeld legt und die Eingabetaste zum Senden von Nachrichten verwendet wird.
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) } }
Weitere Informationen finden Sie in der Tastaturdokumentation auf der Seite zur Android-Eingabekompatibilität.
Eingabestift-Unterstützung
Zeichen-Apps und wischbasierte Spiele können die Stifteingabe auf ChromeOS-Geräten nutzen. Weitere Informationen finden Sie auf der Seite Stifteingabe.
Controller
Chromebooks unterstützen bis zu vier Gamecontroller. Entwickler sollten die standardmäßigen Android-Game Controller APIs verwenden, um sie zu unterstützen.
Schaltflächen werden gemäß einer gemeinsamen Zuordnung gemeinsamen Werten zugeordnet. Leider folgen nicht alle Hersteller von Gamecontrollern denselben Zuordnungskonventionen. Wenn Sie Ihren Nutzern die Auswahl aus verschiedenen beliebten Controller-Mappings ermöglichen, kann dies die Nutzerfreundlichkeit erheblich verbessern.