Gedanken über Game Input
2020-01-01
Einige Gedanken, wie man in Games Input sauber lösen kann.
Table of Contents
Problem
- Meine Benutzer haben verschiedene Tastaturlayouts!
- Mehrere Layer an Input
- Ingame-Input
- First Person
- Fahrzeug
- Ingame-Menü-Input
- Spielmenü-Input
- Ingame-Input
Lösungsvorschlag
Input Layering
Maskierbare Input-Events & -Zustände mit Unterteilung in Gruppen. Damit können verschiedene Gruppen einzeln aktiv/inaktiv geschaltet werden und somit bequem verwaltet.
Zudem müssen Inputs eine Priorität haben, damit aktive Input-Events mit höherer Priorität Events mit niedrigerer Priorität überdecken können. Beispiel: Linksklick im Ingame-Inventar sollte nicht mehr Schießen sein, aber Laufen sollte weiterhin aktiv sein.
Scancodes vs. Keycodes
Scancodes sind Tastaturlayout-unabhängig und befinden sich quasi immer an der selben Position. Keycodes sind abhängig vom Benutzer gewählten Tastaturlayout.
Beide haben ihre Berechtigung:
Scancodes sind zum Beispiel geeignet für bequeme Eingaben (wie Laufen, Sprinten), da diese in der Regel keine Semantik bzgl. ihrer Position auf dem Tastaturlayout haben. W ist über D, also ist W vorwärts und D rückwärts, hat aber keinen Zusammenhang mit den Buchstaben.
Keycodes sind geeignet für semantische Eingaben wie beispielsweise I für Inventar öffnen. Hier ist die Beschriftung der Taste relevant, nicht die Position.
Also nochmal kurz: Falls die Position der Taste relevant ist, verwende Scancodes. Falls die Beschriftung der Taste relevant ist, verwende Keycodes.