«Tasti con configurazione libera»: così ogni giocatore può giocare al tuo gioco, qualunque sia il suo CPC o emulatore

Ciao a tutti,

Molti giochi per CPC sono fantastici, eppure una buona fetta di giocatori non riesce a giocarci comodamente. Non per via del gioco in sé, ma per via dei tasti che utilizza. Ne ho parlato in Why make such great games if most people can’t play them properly?, e vorrei andare oltre: descrivere i problemi e proporre una soluzione.

L’obiettivo: il comfort del giocatore

Ogni giocatore ha le sue abitudini, e un gioco è comodo quando vi si adatta. Per esempio:

  • mano sinistra per sinistra/destra e mano destra per su/giù, o il contrario;
  • una disposizione a diamante sotto una mano;
  • i tasti freccia;
  • un joystick;
  • il tasto di sparo vicino al pollice, o sotto il mignolo.

Un gioco che accetta una sola di queste abitudini costringe tutti gli altri a rieducare le proprie mani o a rinunciare. Un gioco che le accetta tutte contemporaneamente non ha bisogno di alcuna ridefinizione dei tasti: ogni giocatore gioca semplicemente nel modo in cui è già abituato.

Cosa va storto

Anche un gioco che offre un’ottima configurazione di tasti può risultare inutilizzabile sulla configurazione di un altro utente.

Lettere che si spostano. WASD, QAOP e simili presuppongono una tastiera QWERTY. Su AZERTY (CPC francesi, PC francesi), A e Q si scambiano di posto, così come Z e W, e la M si sposta. Su QWERTZ (PC tedeschi), Y e Z si scambiano. Un gioco che si gioca con QAOP diventa un rompicapo su una tastiera francese ancora prima di iniziare.

Tasti che un emulatore deve posizionare da qualche parte. COPY, CLR e i tasti da f0 a f9 del tastierino numerico non hanno un posto ovvio su una tastiera PC, e ancora meno su un laptop. Oggi ho provato My Roland, un lavoro in corso, dove il salto è assegnato a COPY. A seconda dell’emulatore, COPY finisce su Alt o su Ins. Non sono nemmeno sicuro di potergli dare la sufficienza in quanto a giocabilità.

I livelli intermedi. Tra il dito del giocatore e il tuo gioco possono esserci: il layout di tastiera dell’host, il sistema operativo, un browser, il mapping dell’emulatore (per posizione o per simbolo, che Arnoldemu chiama “tradotto”), a volte un desktop remoto. Ogni livello può spostare un tasto. Leggere le posizioni fisiche dei tasti risolverebbe in parte il problema, in un ambiente normale; in molte configurazioni l’interfaccia semplicemente non le fornisce, e il programma legge solo quale simbolo è stato digitato.

In un browser la situazione può peggiorare. Con l’impostazione “resist fingerprinting” di Firefox, alla pagina viene detto che la tastiera è standard (probabilmente US) a prescindere da quale sia quella reale. Ho provato un emulatore CPC integrato nella pagina in questo modo da una tastiera francese: tutte le lettere andavano bene, ma i tasti numerici davano caratteri sbagliati o niente del tutto, e non riuscivo nemmeno a digitare virgolette " (dettagli).

Il risultato: un gioco funziona perfettamente sulla configurazione del suo autore, ed è scomodo o injocabile su quella di qualcun altro.

Una proposta di soluzione: i tasti universali (any-setup keys)

Li chiamo tasti universali (any-setup keys): un set di tasti che si adatta a ogni giocatore, indipendentemente dalle sue abitudini e dalla sua configurazione: CPC reale di qualsiasi lingua, emulatore desktop, emulatore web. Due regole, la prima sopra ogni cosa:

  1. Usa solo lettere che rimangono al loro posto. Queste si trovano nello stesso punto su QWERTY, AZERTY e QWERTZ: B C D E F G H I J K L N O P R S T U V X. Evita A Z Q W M (si spostano su AZERTY) e Y (si scambia con Z su QWERTZ). Una lettera da questo elenco viene trovata sia che l’emulatore mappi per posizione che per simbolo.
  2. Assegna a ogni funzione importante diversi tasti, inclusi tasti presenti su ogni tastiera. Azione su sparo, barra spaziatrice, RETURN, ENTER e COPY. Menu o pausa su ESC, secondo tasto di sparo, e P per compatibilità con il GX-4000.

Come scegliere questi diversi tasti: soddisfare ogni abitudine contemporaneamente. Joystick, tasti freccia, una mano per asse in entrambe le direzioni, disposizione a diamante, i gruppi di tasti che i giocatori conoscono già; sparo sotto un pollice e sotto un mignolo. Nessuno deve ridefinire nulla: avvii e giochi.

Nessuna routine di ridefinizione tasti da scrivere. I giocatori non hanno bisogno di ridefinire nulla, quindi non devi scrivere, testare e trovare memoria per un menu di ridefinizione, e i giocatori non devono passarci prima di giocare. Nulla ti impedisce di offrirne uno comunque, ma nessun giocatore dovrebbe averne bisogno.

Esempio: il set di tasti di Just Get 9

Ecco cosa accetta Just Get 9, tutto contemporaneamente:

  • Movimento, qualunque sia la combinazione più comoda per le tue mani:
    • tasti freccia
    • joystick 1 o joystick 2
    • una mano per asse, in entrambi i sensi: mano sinistra su V/B per sinistra/destra con mano destra su O/K per su/giù, oppure mano sinistra su D/C per su/giù con mano destra su H/J per sinistra/destra
    • un diamante sotto la mano destra: U su, N giù, H sinistra, J destra
    • una riga in stile ZX: 4 sinistra, 5 giù, 6 su, 7 destra (i tasti 5678 dello ZX Spectrum spostati di un tasto a sinistra, così 5 e 6 mantengono il loro significato da joystick 2)
    • i tasti per il joystick 2 dell’Amstrad: 6 su, 5 giù, R sinistra, T destra
  • Azione: sotto il pollice (barra spaziatrice, COPY, ENTER), sotto il mignolo destro (RETURN), sotto l’indice (G, Y per “yes”), oppure sparo
  • Menu: secondo tasto di sparo, ESC, P (il tasto pausa del GX-4000), F (secondo tasto di sparo del joystick 2)

Dove due schemi condividono un tasto, gli danno lo stesso significato, così mischiarli non crea mai sorprese. Disegnato sulla tastiera di un CPC6128 (● azione, □ menu):

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

Ci sono due eccezioni trasparenti in questo set. La Y infrange la regola 1: su QWERTZ semplicemente non fa nulla, e ci sono altri sei tasti per l’azione. I tasti numerici richiedono Maiusc su una tastiera AZERTY: va bene su un CPC reale e con il mapping posizionale, ma possono fallire in un emulatore web, come nel caso del “resist fingerprinting” sopra. Ecco perché non sono mai l’unico modo per muoversi.

C’è bisogno di spiegare tutto questo ai giocatori? Just Get 9 non lo menziona nemmeno nel gioco; il file README nel download contiene l’elenco e lo schema qui sopra, e nessuno si è mai lamentato. I giocatori che hanno abitudini specifiche esplorano la tastiera e trovano qualcosa che funziona per loro.

A voi la parola

  • Se scrivete giochi: prendete in considerazione un set di tasti universale. Quello di Just Get 9 è un esempio; il vostro può differire, purché segua le due regole.
  • Se giocate: quali giochi vi hanno dato problemi con la vostra configurazione (lingua della tastiera, emulatore, emulatore web)? Quali invece funzionano senza problemi? Mi piacerebbe raccogliere queste informazioni e magari trasformare il risultato in una pagina della CPCWiki.
  • Se scrivete emulatori: questo è un argomento correlato ma distinto, ovvero il mapping dei tasti basato sui simboli. Ne ho scritto in Introducing in-page emulator on wiki pages.

Grazie per la lettura, e buon divertimento (universale)!

7 Mi Piace

Questo è un post davvero fantastico!

E sono d’accordo, sarebbe fantastico se i giochi attuali offrissero il maggior numero possibile di configurazioni di controllo diverse.

E l’uso del joypad insieme a fire1 e fire2 fa sì che funzioni sul GX4000 senza alcun problema.

1 Mi Piace

Sì, ormai faccio in modo che tutti i miei giochi abbiano controlli da tastiera completamente ridefinibili, oltre ai corrispettivi per joystick/controller. Riuso gli stessi moduli e metodi tra un gioco e l’altro, ottimizzandoli e migliorandoli a ogni utilizzo.

2 Mi Piace

Sinceramente penso che un’opzione per ridefinire i tasti sia una soluzione semplice e flessibile, e che in realtà non occupi molta memoria.

4 Mi Piace

Sono d’accordo, ma per la console ci deve essere un’opzione che ti permetta di avviare il gioco senza tastiera per impostazione predefinita.

2 Mi Piace

Uno schema di tasti come questo rende la configurazione della tastiera un gioco da ragazzi: non c’è semplicemente nulla da configurare, si può iniziare subito a giocare. Ci sono però due aspetti aggiuntivi da considerare:

  • Se il ciclo di gioco (game loop) richiede davvero molto tempo, potrebbe essere d’aiuto monitorare il minor numero di tasti possibile per risparmiare un po’ di tempo di calcolo, anche se non sarà molto.
  • Servirebbe un’analisi approfondita, ma più tasti vengono presi in considerazione, più ghost key rischiano di insinuarsi. Di solito questo non succede su un emulatore, ma sull’hardware reale può diventare un problema.
1 Mi Piace

Assolutamente, ma non è poi così difficile. Ho semplicemente optato per «Fuoco per iniziare/ESC definisci tasti». E ho fatto in modo che non si potesse impostare il tasto ESC come pulsante di fuoco per evitare di rimanere bloccati. Non penso che qualcuno abbia bisogno di usare ESC per sparare. Quando usi un joystick puoi buttarti subito nella mischia.

Uno dei vantaggi dell’opzione di ridefinizione dei tasti, oltre a essere estremamente flessibile, è che elimina qualsiasi ambiguità su quali siano i tasti. Lo schema di comandi qui sopra è piuttosto complicato da spiegare.

4 Mi Piace

D’accordissimo al 100%. I tasti non dovrebbero mai essere un prerequisito per un gioco che non li richiede durante il gameplay vero e proprio.

Come minimo, il controllo tramite Joystick dovrebbe sempre essere presente e il pulsante di fuoco dovrebbe sempre permettere di avviare la partita. L’ideale sarebbe combinarlo con un set tipico per i controlli alternativi da tastiera, che possa essere ridefinito per chi preferisce una configurazione diversa o deve gestire uno dei tanti problemi legati al modo in cui gli emulatori mappano i tasti.

1 Mi Piace

Grazie a tutti per i vostri feedback!

In sintesi: un gioco è una sorta di spettacolo, deve girare nel modo più fluido possibile. Inoltre, la scelta bizzarra in Batman di Ritman e Drummond e in giochi isometrici simili.


Quando giocavo sul mio CPC, preferivo di gran lunga i giochi che permettevano di ridefinire i tasti.

Potrei farlo per i miei prossimi giochi. La semplicità resta comunque un obiettivo desiderabile.

Sì, un ottimo approccio! Permetti di assegnare più tasti alla stessa azione?

Beh, dato che l’emulatore imita la pressione dei tasti sulla tastiera virtuale del CPC emulato, si ottiene comunque il ghosting lato CPC, e forse anche qualche altro problema legato alla configurazione dell’emulazione.

:keyboard: A proposito, il cablaggio della tastiera del CPC è stato scelto per evitare il ghosting con i joystick, ma non granché per i tasti freccia. Sapevi che premendo la freccia sinistra, la freccia su e copy, si genera un effetto ghosting che attiva la “freccia destra”? Puoi verificarlo su qualsiasi emulatore: accendilo, premi rapidamente sinistra, su, copy e poi rilascia. Senza ghosting il cursore si troverebbe nell’ultima colonna a destra, invece si trova sulla R di ready.

Questo potrebbe essere un argomento a favore di un layout fisso, ben studiato per evitare il ghosting.
Oppure una routine di “ridefinizione tasti” che avvisi l’utente dei possibili problemi di ghosting e suggerisca soluzioni.


Vi ricordate la strana interazione nei menu di “Batman” (e giochi simili dello stesso team)?

  • In tutto il menu, ENTER serve per selezionare l’opzione (in realtà il tasto grande principale RETURN, non l’ENTER del tastierino numerico).
  • Qualsiasi tasto per spostare il cursore (verso il basso).

  • Quando si ridefiniscono i tasti, SHIFT serve per terminare.
  • Un lato positivo: per ciascuna azione (direzioni, salto, prendi, pausa) si potevano impostare più tasti.

Capisco la logica: qualunque sia la configurazione, se riesci a premere Invio e abbastanza altri tasti, sei a posto.

Tuttavia, era macchinoso da navigare, richiedeva di premere un sacco di tasti per ridefinire i controlli, e bisognava sorbirsi tutta la procedura a ogni caricamento del gioco per impostare i tasti o regolare l’audio (l’opzione predefinita, ben nominata “nasty”, aveva questa melodia continua mentre camminavi) e la “sensibilità”. Trovavo fosse così strano e una vera seccatura da rifare ogni volta che si caricava il gioco.


Tornando a una visione più generale, non so davvero quanto sia vincolante per il giocatore il fatto che un gioco offra un layout fisso ma pensato per diverse abitudini (con molti tasti associati), come ho fatto su Just Get 9 e suggerito nel primo post del topic. Finora nessuno ha commentato questo punto.

Colpo di scena: quando ho testato Just Get 9 nel browser su uno smartphone Android (quindi senza tastiera), la tastiera a schermo di Android non offriva le frecce direzionali, ma potevo digitare le lettere e premere “Invio” per inviarle e funzionava. :sweat_smile: .

1 Mi Piace