„Any-Setup-Tasten“: So kann jeder dein Spiel spielen, egal auf welchem CPC oder Emulator

Hallo zusammen,

viele CPC-Spiele sind großartig, und dennoch kann ein guter Teil der Spieler sie nicht komfortabel spielen. Nicht wegen des Spiels selbst, sondern wegen der Tasten, auf die es reagiert. Ich habe das Thema bereits in Why make such great games if most people can’t play them properly? angesprochen, und ich möchte noch weiter gehen: die Probleme beschreiben und eine Lösung vorschlagen.

Das Ziel: Spielerkomfort

Jeder Spieler bringt seine eigenen Gewohnheiten mit, und ein Spiel ist dann komfortabel, wenn es zu ihnen passt. Zum Beispiel:

  • linke Hand für Links/Rechts und rechte Hand für Oben/Unten oder umgekehrt;
  • eine Raute („Diamond“) unter einer Hand;
  • die Pfeiltasten;
  • ein Joystick;
  • Feuer in der Nähe des Daumens oder unter dem kleinen Finger.

Ein Spiel, das nur eine dieser Gewohnheiten akzeptiert, zwingt alle anderen dazu, ihre Hände umzugewöhnen oder aufzugeben. Ein Spiel, das alle auf einmal akzeptiert, braucht keine Tastenneubelegung: Jeder spielt einfach so, wie er es gewohnt ist.

Was schiefgeht

Selbst ein Spiel, das gute Tasten bietet, kann diese auf dem Setup eines anderen Benutzers einbüßen.

Buchstaben, die den Platz wechseln. WASD, QAOP und Co. setzen eine QWERTY-Tastatur voraus. Auf AZERTY (französische CPCs, französische PCs) tauschen A und Q die Plätze, ebenso Z und W, und M wandert. Auf QWERTZ (deutschen PCs) tauschen Y und Z. Ein Spiel, das mit QAOP gespielt wird, wird auf einer französischen Tastatur zu einem Rätsel, noch bevor es überhaupt angefangen hat.

Tasten, die ein Emulator irgendwo unterbringen muss. COPY, CLR und die Tasten f0 bis f9 des Ziffernblocks haben keinen offensichtlichen Platz auf einer PC-Tastatur, erst recht nicht auf einem Laptop. Heute habe ich My Roland ausprobiert (ein Projekt in Arbeit), bei dem Springen auf COPY liegt. Je nach Emulator landet COPY auf Alt oder auf Einfg (Insert). Ich bin mir nicht einmal sicher, ob ich das überhaupt noch als „kaum spielbar“ bezeichnen würde.

Ebenen dazwischen. Zwischen dem Finger des Spielers und deinem Spiel können liegen: das Tastaturlayout des Hosts, das Betriebssystem, ein Browser, das Mapping des Emulators (nach Position oder nach Symbol, was Arnoldemu „translated“ nennt), manchmal ein Remote-Desktop. Jede Ebene kann eine Taste verschieben. Das Auslesen physischer Tastenpositionen würde in einer sauberen Umgebung einen Teil davon lösen; in vielen Setups stellt die Schnittstelle diese aber gar nicht erst zur Verfügung, und das Programm erfährt nur, welches Symbol getippt wurde.

In einem Browser kann es noch schlimmer werden. Mit Firefox’ Einstellung „Resist Fingerprinting“ wird der Seite mitgeteilt, dass die Tastatur eine Standardtastatur (wahrscheinlich US) ist, egal was sie wirklich ist. Ich habe auf diese Weise einen CPC-Emulator direkt auf der Seite mit einer französischen Tastatur ausprobiert: Alle Buchstaben waren in Ordnung, aber die Zifferntasten lieferten falsche Zeichen oder gar nichts, und ich konnte nicht einmal ein " eingeben (Details).

Das Ergebnis: Ein Spiel funktioniert auf dem Setup seines Autors perfekt und ist auf dem eines anderen umständlich oder unspielbar.

Ein Lösungsvorschlag: Any-Setup-Tasten

Ich nenne es Any-Setup-Tasten: ein Tastenset, das zu jedem Spieler passt, unabhängig von seinen Gewohnheiten und seinem Setup: echter CPC in jeder Sprache, Desktop-Emulator, Web-Emulator. Zwei Regeln, die erste steht über allem:

  1. Nutze nur Buchstaben, die am selben Platz bleiben. Diese befinden sich auf QWERTY, AZERTY und QWERTZ an der gleichen Stelle: B C D E F G H I J K L N O P R S T U V X. Vermeide A Z Q W M (sie wandern auf AZERTY) und Y (tauscht mit Z auf QWERTZ). Ein Buchstabe aus dieser Liste wird gefunden, egal ob der Emulator nach Position oder nach Symbol mappt.
  2. Gib jeder wichtigen Funktion mehrere Tasten, darunter Tasten, die jede Tastatur hat. Aktion auf Feuer, Leertaste, RETURN, ENTER und COPY. Menü oder Pause auf ESC, zweites Feuer und P für Kompatibilität mit dem GX-4000.

Wie man diese mehreren Tasten auswählt: Decke alle Gewohnheiten gleichzeitig ab. Joystick, Pfeiltasten, eine Hand pro Achse in beide Richtungen, eine Raute, die Tastenblöcke, die Spieler bereits kennen; Feuer unter einem Daumen und unter einem kleinen Finger. Niemand muss irgendetwas umdefinieren: starten und spielen.

Keine Routine zur Tastenneubelegung nötig. Spieler müssen nichts umdefinieren, also musst du kein Menü zur Neubelegung schreiben, testen und Speicher dafür bereitstellen – und die Spieler müssen sich vor dem Spielen nicht durch eines quälen. Nichts hält dich davon ab, zusätzlich eines anzubieten, aber kein Spieler sollte es brauchen.

Beispiel: Das Tastenset von Just Get 9

Hier ist, was Just Get 9 akzeptiert, alles gleichzeitig:

  • Bewegen, je nachdem, was deinen Händen liegt:
    • Pfeiltasten
    • Joystick 1 oder Joystick 2
    • eine Hand pro Achse, in beide Richtungen: linke Hand auf V/B für Links/Rechts mit rechter Hand auf O/K für Oben/Unten, oder linke Hand auf D/C für Oben/Unten mit rechter Hand auf H/J für Links/Rechts
    • eine Raute („Diamond“) unter der rechten Hand: U oben, N unten, H links, J rechts
    • eine Zeile im ZX-Stil: 4 links, 5 unten, 6 oben, 7 rechts (die 5678 des ZX Spectrum um eine Taste nach links verschoben, sodass 5 und 6 ihre Joystick-2-Bedeutung behalten)
    • Amstrads Joystick-2-Tasten: 6 oben, 5 unten, R links, T rechts
  • Aktion: unter einem Daumen (Leertaste, COPY, ENTER), unter dem rechten kleinen Finger (RETURN), unter einem Zeigefinger (G, Y für „Yes“) oder Feuer
  • Menü: zweites Feuer, ESC, P (die Pause-Taste des GX-4000), F (zweites Feuer für Joystick 2)

Wo sich zwei Schemata eine Taste teilen, geben sie ihr dieselbe Bedeutung, sodass dich das Mischen nie überrascht. Aufgezählt auf einer CPC6128-Tastatur (● Aktion, □ Menü):

┏━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┓
┃ □ ┃   ┃   ┃   ┃ ← ┃ ↓ ┃ ↑ ┃ → ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃
┣━━━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━━━╋━━━╋━━━╋━━━┫
┃     ┃   ┃   ┃   ┃ ← ┃ → ┃ ● ┃ ↑ ┃   ┃ ↑ ┃ □ ┃   ┃   ┃     ┃   ┃   ┃   ┃
┣━━━━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┓ ●  ┣━━━╋━━━╋━━━⫫
┃      ┃   ┃   ┃ ↑ ┃ □ ┃ ● ┃ ← ┃ → ┃ ↓ ┃   ┃   ┃   ┃   ┃    ┃   ┃   ┃   ┃
┣━━━━━━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━━━━╋━━━╋━━━╋━━━⫫
┃        ┃   ┃   ┃ ↓ ┃ ← ┃ → ┃ ↓ ┃   ┃   ┃   ┃   ┃   ┃      ┃   ┃ ↑ ┃   ┃
┣━━━━━━━━╋━━━┻━━┳┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┳┻━━━┻━━━━━━╋━━━╋━━━╋━━━⫫
┃        ┃  ●   ┃               ●               ┃     ●     ┃ ← ┃ ↓ ┃ → ┃
┗━━━━━━━━┻━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━┻━━━┻━━━┛

Zwei ehrliche Ausnahmen in diesem Set. Y bricht Regel 1: Auf QWERTZ tut es einfach nichts, und es gibt sechs andere Aktionstasten. Die Zifferntasten benötigen auf einer AZERTY-Tastatur Shift: auf einem echten CPC und mit positionsbezogenem Mapping ist das fein, aber es kann in einem Web-Emulator fehlschlagen, wie im Fall „Resist Fingerprinting“ oben. Deshalb sind sie nie die einzige Möglichkeit, sich zu bewegen.

Müssen die Spieler all das erfahren? Just Get 9 erwähnt es im Spiel nicht einmal; die README-Datei im Download enthält die Liste und das Diagramm oben, und niemand hat sich beschwert. Spieler, die bestimmte Gewohnheiten haben, erkunden die Tastatur und finden etwas, das für sie funktioniert.

Du bist dran

  • Wenn du Spiele schreibst: Bitte ziehe ein Any-Setup-Tastenset in Betracht. Das von Just Get 9 ist ein Beispiel; deins kann sich unterscheiden, solange es den beiden Regeln folgt.
  • Wenn du spielst: Welche Spiele haben dir auf deinem Setup (Tastatursprache, Emulator, Web-Emulator) Probleme bereitet? Welche funktionieren einfach? Ich würde diese gerne sammeln und das Ergebnis vielleicht in eine CPCWiki-Seite verwandeln.
  • Wenn du Emulatoren schreibst: Das ist ein verwandtes, aber separates Thema – symbolbasiertes Tastatur-Mapping. Ich habe darüber in Introducing in-page emulator on wiki pages geschrieben.

Danke fürs Lesen und viel Spaß beim (Any-Setup-)Spielen!

7 „Gefällt mir“

Das ist ein wirklich beeindruckender Beitrag!

Und ich stimme dem vollkommen zu: Es wäre großartig, wenn heutige Spiele so viele verschiedene Steuerungsmöglichkeiten wie möglich bieten würden.

Und die Nutzung des Joypads zusammen mit Feuer 1 und Feuer 2 bedeutet, dass es ohne jegliche Probleme auf dem GX4000 funktioniert.

1 „Gefällt mir“

Ja, bei all meinen Spielen lassen sich die Tastaturbelegungen mittlerweile vollständig anpassen, genauso wie die entsprechenden Belegungen für Joystick und Controller. Ich verwende dafür spielübergreifend dieselben Module und Methoden und optimiere sie bei jeder Wiederverwendung weiter.

2 „Gefällt mir“

Ehrlich gesagt halte ich eine Option zum Neubelegen der Tasten für eine einfache, flexible Lösung, die auch nicht wirklich viel Speicher verbraucht.

4 „Gefällt mir“

Ich stimme zu, aber für die Konsole muss es eine Option geben, mit der man das Spiel standardmäßig ohne Tastatur starten kann.

2 „Gefällt mir“

Ein solches Tasten-Schema macht die Tastaturkonfiguration kinderleicht – es gibt einfach nichts zu konfigurieren, man kann direkt ein Spiel starten. Es gibt jedoch zwei weitere Dinge zu bedenken:

  • Wenn eine Spielschleife sehr zeitaufwendig ist, kann es helfen, so wenige Tasten wie möglich zu erfassen, um etwas Rechenzeit zu sparen, auch wenn es nicht viel sein wird.
  • Es müsste genauer untersucht werden, aber je mehr Tasten berücksichtigt werden, desto mehr Ghost-Keys (Geistertasten) können sich einschleichen. Das passiert auf einem Emulator zwar meist nicht, auf echter Hardware kann das jedoch zu einem Problem werden.
1 „Gefällt mir“

Absolut, aber das ist gar nicht so schwer. Ich habe mich einfach für „Feuer zum Starten / ESC Tasten belegen“ entschieden. Und ich habe es so eingerichtet, dass man die ESC-Taste nicht als Feuerknopf belegen und sich dadurch festfahren kann. Ich glaube kaum, dass irgendwer ESC zum Feuern braucht. Wenn man einen Joystick benutzt, kann man direkt loslegen.

Einer der Vorteile einer Option zum Neubelegen der Tasten ist – abgesehen von der maximalen Flexibilität –, dass sie auch jegliche Unklarheiten darüber beseitigt, welche Tasten wofür da sind. Das obige Steuerungsschema ist nämlich ziemlich kompliziert zu erklären.

4 „Gefällt mir“

Stimme zu 100 % zu. Tasten sollten für kein Spiel eine Voraussetzung sein, das sie nicht auch während des eigentlichen Gameplays benötigt.

Als Minimum sollte eine Joystick-Steuerung immer vorhanden sein, und der Feuerknopf sollte immer die Option sein, um ein Spiel zu starten. Am besten kombiniert mit einer typischen Belegung für eine alternative Tastatursteuerung, die für diejenigen umbelegt werden kann, die ein anderes Set bevorzugen oder sich mit den vielen Problemen auseinandersetzen müssen, die durch die Tastenbelegung von Emulatoren entstehen.

1 „Gefällt mir“

Vielen Dank an alle für euer Feedback!

TL;DR: Ein Spiel ist eine Art Show, es muss so flüssig wie möglich laufen. Außerdem die überraschende Wahl in Ritmans und Drummonds Batman und ähnlichen isometrischen Spielen.


Als ich auf meinem CPC gespielt habe, habe ich Spiele, bei denen man die Tasten neu belegen konnte, extrem bevorzugt.

Vielleicht mache ich das für mein(e) spätere(n) Spiel(e). Einfachheit ist dennoch wünschenswert.

Ja, hervorragender Ansatz! Erlaubst du mehrere Tasten für dieselbe Aktion?

Nun, da der Emulator Tastenanschläge auf der virtuellen Tastatur des emulierten CPC imitiert, bekommt man immer die CPC-seitigen Ghosting-Effekte und vielleicht noch ein paar weitere Probleme mit dem Emulator-Setup.

:keyboard: Übrigens wurde die Verkabelung der CPC-Tastatur so gewählt, dass Ghosting bei den Joysticks vermieden wird, aber nicht so sehr bei den Pfeiltasten. Wusstest du, dass das gleichzeitige Drücken von Pfeil-links, Pfeil-nach-oben und copy ein Ghosting-„Pfeil-rechts“ verursacht? Du kannst das in jedem Emulator testen: Einschalten, schnell Links, Oben, Copy drücken und dann loslassen. Ohne Ghosting stünde der Cursor in der Spalte ganz rechts, stattdessen steht er auf dem R von „ready“.

Das könnte ein Argument für ein festes Layout sein, das gut durchdacht ist, um Ghosting zu vermeiden.
Oder eine Routine zur „Tastenbelegung“, die den Benutzer vor Ghosting warnt und Lösungen vorschlägt.


Erinnerst du dich an die seltsame Menübedienung in „Batman“ (und ähnlichen Spielen desselben Teams)?

  • Im gesamten Menü dient ENTER zum Auswählen von Optionen (eigentlich die große Haupt-RETURN-Taste, nicht das ENTER des Ziffernblocks).
  • Jede beliebige Taste, um den Cursor (nach unten) zu bewegen.

  • Beim Neubelegen der Tasten drückt man SHIFT zum Beenden.
  • Eine gute Sache: Für jede der Aktionen (Richtungen, Springen, Tragen, Pause) konnte man mehrere Tasten festlegen.

Ich verstehe, dass es die Eigenschaft hat: Egal wie das Setup ist, solange man Enter und genügend andere Tasten drücken kann, ist alles gut.

Aber die Navigation war umständlich, man musste viele Tasten drücken, um die Steuerung neu zu belegen, und man musste das bei jedem Laden des Spiels erneut durchgehen, um die Tasten einzustellen oder den Sound anzupassen (die Standardoption namens „nasty“ hatte diese durchgehende Melodie, während man lief) sowie die „Empfindlichkeit“. Ich fand es so seltsam und lästig, das jedes Mal neu zu machen, wenn das Spiel geladen wurde.


Zurück zu einer allgemeineren Sichtweise: Ich weiß nicht wirklich, wie sehr es für den Spieler eine Einschränkung darstellt, wenn ein Spiel ein festes Layout bietet, das jedoch viele Gewohnheiten durch mehrere Tasten abdeckt – so wie ich es bei Just Get 9 gemacht und im ersten Beitrag des Themas vorgeschlagen habe. Bisher hat das niemand kommentiert.

Unerwartete Wendung: Als ich Just Get 9 im Browser auf einem Android-Smartphone getestet habe (also ohne Tastatur), bot die Android-Bildschirmtastatur keine Pfeiltasten an. Aber ich konnte Buchstaben tippen und „Enter“ drücken, um sie zu senden, und es hat funktioniert. :sweat_smile:.

1 „Gefällt mir“