いくつかのゲームや PlayStation3 のソフトウェアキーボードで採用されているカーソル移動の操作仕様を紹介する。この操作仕様に「トリガループ」という名前をつける。
また、トリガループでない、よくある操作仕様「リピートループ」と比較し、トリガループのほうがユーザインタフェースとして優れていることを主張する。
なお「トリガループ」「リピートループ」という呼び方は一般的に普及している用語ではなく、筆者が勝手につけた名前である。 より普及している名前があれば教えていただきたい。
多くのゲームでこの操作仕様が採用されることを希望する。
キーワード: メニュー カーソル移動 方向キー 操作 仕様 ユーザーインターフェース ユーザ インタフェース アクセシビリティ バリアフリー
目次
このプログラムは、以下のメニューを扱う。
1. Normal Game 2. Special Game 3. Versus Game 4. Character Creation 5. Battle Records 6. Gallery 7. Options 8. Quit
キー入力について 3つの用語を定義する。
横軸に時間をとって図示すると以下のようになる。
| スイッチ | off | on | off | on | |||||||||||||||||||||||||||||||
| Down | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| Trig | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Repeat | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
この例では、Repeatの連射開始待ち時間は 5フレーム、Repeatの連射間隔は 2フレーム となっているが、これらの定数はゲームの1フレームの処理時間や連射速度の好みによって変更できるようにするのが望ましい。
連射開始待ち時間 や 連射間隔 を変更するとどのようになるかは、Windows のコントロールパネルから「キーボード」を選び、設定を変えてみるとわかりやすい。「表示までの待ち時間」がこの文書でいう連射開始待ち時間で、「表示の間隔」が連射間隔に相当する。
> 1. Normal Game 2. Special Game 3. Versus Game 4. Character Creation 5. Battle Records 6. Gallery 7. Options 8. Quit
つまり、↓キーを押しっぱなしにすると 1→2→3→4→5→6→7→8→1→2→3→4→5→6→7→8→1→2→ …、 ↑キーを押しっぱなしにすると、8→7→6→5→4→3→2→1→8→7→6→5→4→3→2→1→8→7→ …、 のようにカーソルが動く。
2008年現在でも多くのゲームに採用されている操作仕様である。 この仕様を「リピートループ」と呼ぶことにする。
> 1. Normal Game 2. Special Game 3. Versus Game 4. Character Creation 5. Battle Records 6. Gallery 7. Options 8. Quit
最初、カーソルが 1 にあり、ここからカーソルを下に移動する場合を考える。
↓キーを押しっぱなしにすると、Repeat信号が入力されるたびに、カーソルは 1→2→3→4→5→6→7→8 と移動していく。カーソルが 8 に達したら、そこはメニューの一番下なので、もう↓キーの Repeat では移動しなくなる。
そこでいったん↓キーを放し、再度↓キーを押すことで、↓キーを Trig にする。 すると、カーソルは 8→1 に移動する。
そのまま↓キーを押し続けると、やがて Repeat連射が始まり、またカーソルは 1→2→3→4→5→6→7→8 のように移動し、そして一番下の 8 で止まる。
逆に、カーソルが 8 にある状態から、↑キーを押しっぱなしにすると、カーソルは 8→7→6→5→4→3→2→1 のように進み、 1 で止まる。いちど↑キーを放してから押し直すと、カーソルは 8 に飛ぶ。
方向キーを押し続けて Repeat連射が入力されていても、カーソルはメニューの端でいったん止まる、というのがトリガループ方式の特徴である。
項目が多いメニューにおいて、カーソルがメニューの中央付近にある状況で、ユーザが「メニューの一番下の項目を選びたい」と思ったとしよう。ユーザは↓キーを長く押すだろう。 リピートループでもトリガループでも、Repeat のたびにカーソルは下へ移動していく。
■リピートループの場合
リピートループでは、ユーザはちょうどカーソルが一番下に達した瞬間に↓キーを放さなければならない (Repeat連射間隔の設定によって0.1秒程度の誤差は許されるかもしれないが)。 ↓キーを放すのが遅すぎればカーソルは一番上まで行き過ぎてしまう。 ↓キーを放すのが早すぎれば、カーソルがまだ一番下に到達していないのに、カーソルの移動が止まってしまう。
カーソルがちょうど目的地に到達した瞬間にキーを放すというのは、並の人間の動体視力では非常に難しい。 多くのユーザは一発で目的地にカーソルを合わせることができず、↓キーを放した後、さらに数回ちょんちょんとキーを押してカーソル位置を修正するはめになるだろう。
■トリガループの場合
トリガループでは、一番下にカーソルを合わせるのは非常に簡単だ。 単に Repeat を入力しつづければよい…つまり↓キーを押しっぱなしにするだけでいい。
また、一番上/下にカーソルを合わせやすいということは、端から2番目などにもカーソルを合わせやすい。例えば、下から2番目の項目を選びたいときは、↓キーを押しっぱなしにしてカーソルを一番下まで移動してから、↑キーを1回押せばよい。
一画面に収まらないほど多数の項目があるメニューを、スクロールさせて表示する場合を考える。
■リピートループの場合
Repeat でカーソルがワープしたとき、画面全体が書き換わる。 表示内容が一気に変化するので、その瞬間はユーザの眼と脳に大きな負担をかける。 カーソルがメニューの端で止まってくれないので、カーソルのワープは頻繁に起こる。 これはストレスの原因になるのではないか。
■トリガループの場合
Repeat ではカーソルはワープせず、メニューの端で止まる。 カーソルが反対端にワープするのはユーザが明示的に Trig を入力したときだけだから、ユーザの意図に反して画面全体が書き換わることは少ない。
■リピートループの場合
Repeat 信号だけでカーソルがワープしてしまうので、ユーザは方向キーを押しっぱなしにするのを躊躇するようになるかもしれない。
意図しないワープが起こるのを嫌がった結果、5個くらいの項目のメニューだったら、カーソル移動はいつも Trig を使う (押しっぱなしの Repeat は使わない) ようになっていくのではないか。 これは指の疲労を招くだろう。
■トリガループの場合
Trig にしないかぎりカーソルは端で自動的に止まる。 ユーザの意図に反してカーソルがワープすることがないので、ユーザは安心してRepeatを使うようになるのではないか。
この結果、項目数が少ないメニューでも積極的に方向キー押しっぱなしの Repeat を使うようになり、指の疲労が軽減されるのではないか。
カーソル移動音を2種類用意する。ひとつはRepeatで移動したときの音。もうひとつは、Trigで一番上/下にワープしたときに鳴らす、少し派手な音。カーソルがワープしたときに違う音が鳴れば、より操作しやすいのではないか。
…と思って、サンプルプログラムには音もつけてある。
ひとつのゲーム内で、リピートループとトリガループが混在することは絶対に避けること。
戦闘シーンではリピートループで、移動シーンではトリガループである、というゲームはユーザに異様な混乱をもたらす。それならいっそ、ゲーム全体が旧来のリピートループであるほうがマシだ。
サンプルプログラムでは、上下方向の 1次元メニューにトリガループを使ったが、 PlayStation3 の OS に搭載されたソフトウェア・キーボードでは、 横方向・縦方向それぞれにトリガループを用いている。