Angenommen, ich habe ein Spiel, das WASD-Steuerelemente in einem QWERTZ-Layout verwendet. Der Versuch, diese Steuerelemente beispielsweise für ein Dvorak-Layout zu verwenden, ist nicht ideal (entspricht <A:H
QWERTY). ,aoe
Natürlich möchte ich dieselben physischen Schlüssel verwenden wie QWERTY ( auf DVORAK).
Ich habe einige mögliche Lösungen gefunden:
- Zwingen Sie den Benutzer, QWERTZ zu verwenden
- offensichtlich nicht ideal, besonders für internationale Benutzer
- Ändern Sie die Verknüpfungen basierend auf dem Tastaturlayout (WASD ->, aoe).
- zwingt mich, Layoutkarten für jedes unterstützte Layout zu erstellen (automatisierbar)
- Am einfachsten für den Benutzer, wenn es mehr Verknüpfungen als nur WASD gibt
- Erzwingen Sie, dass der Benutzer Verknüpfungen selbst definiert
- Flexibler
- Ärgerlich, wenn es viele Abkürzungen gibt
- Kann in Verbindung mit der zweiten Option verwendet werden
- Verwenden Sie Hardware-Schlüsselcodes
- Tastaturübergreifend konsistent?
Wie wird so etwas normalerweise gehandhabt?
Sie sollten immer geben dem Spieler die Möglichkeit , ihre Tastenbelegung zu ändern. So wird es "normalerweise gehandhabt": Lassen Sie den Spieler sie ändern. Einige Spieler stellen ihre Tastatur auf QWERTZ ein, wenn sie Spiele spielen, da dies von den meisten Spielen erwartet wird. Einige lassen sie auf ihre aktuelle Tastatur eingestellt und verlassen sich auf die Möglichkeit, die Tasten zu ändern.
quelle
Wenn Sie nicht auf Scan-Codes warten können (wie zum Beispiel bei der Entwicklung eines Flash-Spiels), können Sie eine Schlüsselbindung erstellen, die für so viele Layouts wie möglich funktioniert. Die meisten Tastaturlayouts sind bis auf wenige Ausnahmen sehr ähnlich.
Die Tastaturlayouts nach ISO 9995 (das sind die meisten) sind wie folgt angeordnet:
Grundsätzlich sind die schwarzen Tasten sicher zu bedienen.
quelle
Die meisten Spiele mit großem Budget (mit einem internationalen Distributor) funktionieren sofort und verwenden ZQSD anstelle von WASD für Zertifizierungslayouts. Ein anständiges Spiel führt auch das Layout in der ersten Ebene ein, andere lassen den Spieler es über den Anpassungsbildschirm entdecken. Die Implementierungsstrategie kann erkannt werden, indem das Betriebssystem aufgefordert wird, das Layout zu wechseln. Entweder verwendet das Spiel intern Scancodes (Positionen) und ordnet sie Keycodes (Symbolen) zu, wenn Konfigurationsdialoge und Eingabeaufforderungen angezeigt werden. oder es verwendet intern Schlüsselcodes und erkennt das Layout beim Start oder beim ersten Start.
Die erste Strategie (intern scancodes) ist robuster, erfordert jedoch ein wenig Sorgfalt, um zu verhindern, dass die Abstraktion durchläuft. Denken Sie daran, Scancodes Keycodes neu zuzuordnen, wenn Sie dem Benutzer Schlüssel präsentieren (in Tutorials, Eingabeaufforderungen und Anpassungsdialogen). Sie müssen sich bei der Texteingabe noch die Schlüsselcodes ansehen (z. B. einen Spieler seinen Namen eingeben lassen). Wenn Sie mehr Text verarbeiten müssen, sollten Sie die Unterstützung der Texteingabe auf der Plattform verwenden, die außerhalb des Bereichs einer Spiel-Engine liegt (behandelt tote Schlüssel, Feststelltaste, Kopieren, Einfügen, erweiterte Eingabemethoden…).
Wenn Sie ein Spiel portieren, das niemals Scancodes verwendet hat (was bei einer anständigen Engine nicht der Fall ist, da Scancodes auch näher an der Hardware und schneller sind), ist die andere Strategie möglicherweise praktischer. Sie können Scancodes mithilfe der SDL2-Funktionen SDL_GetKeyFromScancode und SDL_GetScancodeFromKey oder plattformspezifischer Entsprechungen Keycodes zuordnen . Wenn Sie auch die SDL2-Ereignisschleife verwenden, bleiben diese Funktionen über Layout-Schalter hinweg genau. Vermeiden Sie Funktionen wie GetKeyboardLayout () unter Windows. Es gibt keine Garantie dafür, dass Sie das Layout in einer bekannten Liste finden.
quelle