第三章 UINo.016
ダイジェティック UI
Diegetic UI別名 ダイエジェティック UI
概要
残りの弾数を武器の側面の目盛りで、体力をキャラクターの背中の灯りで示すように、ゲームの世界の中にある物に情報を出す作り方。画面の隅を覆わずに済み、見ている物のそばに情報があるので、目を動かす距離が短い。その物が画面の外にあったり小さく映っていたりすると読めず、細かい数値も読み取りにくいので、画面に重ねる表示と組み合わせて使う。
使われる場面
- 景色や暗さを見せたい探索の場面
- 画面の隅の表示を減らし、体力をキャラクターの背中の灯りで、残りの弾数を武器の目盛りで示す。画面に世界の外の物が重ならず、隅まで世界を見せられる。
- 撃ち合いの最中の弾数
- 武器の側面に残りの弾数を出す。武器はキャラクターの手元にあるので、キャラクターの辺りを見たまま弾が残り少ないことに気づける。
- 扉や装置の状態
- 扉の横の灯りで開くかどうかを、装置のランプで動いているかどうかを示す。その物を見たときに状態も一緒に目に入る。
- 乗り物の計器
- 運転席を映す視点では、速さや残りの燃料を運転席の計器に出す。画面の隅を表示で覆わずに速さや燃料を伝えられる。
- 敵や仲間の体力
- 世界の中の物で示しにくい体力は、頭の上に棒を重ねて出す中間の出し方にする。その敵のそばに出せて、敵が小さく映っても棒の大きさは保てる。
判断基準
| こういうとき | こうする |
|---|---|
| 画面の端の表示が邪魔で、周りがよく見えない | 物と結び付いた情報(弾数、扉の状態、装置の状態)から、世界の中のその物に移す。常に確かめたい体力は、キャラクターの体や持ち物のようにいつも画面に映る物に出す。 |
| 体力や弾数を確かめるたびに、キャラクターや敵から目を離すことになる | その情報を、見ている物の上かそばに出す。キャラクターの状態はキャラクターの体や持ち物に、敵の状態は敵の体か頭の上に出す。 |
| 残りの弾数が小さくて読めない | 目盛りを大きくするか、数を読まずに済むよう、残りが少なくなったら色を変える。正確な数が要る情報は画面の隅にも数字で出す。 |
| 扉が開くかどうか、近くまで行かないとわからない | 画面の外にある物の情報は、画面の端のその物がある側に印を出すか、画面の隅に出す。 |
| カメラを引く場面で、世界の中の表示が小さくて読めない | 頭の上の棒のように物の位置に合わせて画面に重ね、画面の上での大きさを保つ出し方にする。カメラを引くあいだだけ、画面の隅にも出してもよい。 |
| 暗い場所で、世界の中の表示が見えない | 表示そのものを光らせ、周りの明るさによらず見えるようにする。 |
| 表示が物の片側にあり、物の向きによって見えなくなる | カメラから見える側に置くか、物の両側に出す。 |
| 世界の中の表示が背景になじみすぎて、情報を示す物だと気づかない | 情報を示す灯りや目盛りにはゲームの中で同じ色と光り方を使い回し、飾りの明かりと見分けられるようにする。 |
| 灯りの色だけで状態を示している | 色の見え方によっては区別できない。色に加えて形(✕ と ○ など)や光る長さも変える。 |
遊んでこう感じたら
指示の例
画面の四隅の表示が邪魔で、周りがよく見えない。弾数をダイジェティック UI にして、右下の数字の代わりに武器の側面の目盛りで示し、残りが 3 割を切ったら目盛りを赤くして
体力を確かめるたびに、キャラクターから目を離して左上を見ることになる。体力をダイジェティック UI にして、背中の灯りの長さで示し、3 割を切ったら赤くして
ダイジェティック UI にした扉の灯りが、扉が画面の外にあると見えない。扉が画面の外にあるあいだは、画面の端の扉がある側に灯りと同じ色と形の印を出して
カメラを引いた場面で、武器の弾数の目盛りが小さくて読めない。ダイジェティック UI はそのままにして、カメラを今の 1.5 倍より引くあいだだけ、画面の右下にも弾数を数字で出して
武器の目盛りだと、残りの弾数が正確にわからない。弾を込め直すボタンを押しているあいだだけ、武器の横に残りの弾数を数字で出して
詳細
世界の中の物に出す表示
体力や残りの弾数は「HUD」として画面の隅に重ねて出せる。HUD はどの場面でも同じ所にあって読めるが、画面の隅を覆い、読むたびに目を画面の中ほどから隅まで動かすことになる。そこで、情報をゲームの世界の中にある物に出す作り方がある。残りの弾数を武器の側面の目盛りで、体力をキャラクターの背中の灯りで、扉が開くかどうかを扉の横の灯りで示す。このように、世界の中の物として情報を出す表示を ダイジェティック UI と呼ぶ1。
デモの上の段は体力、鍵の有無、残りの弾数を HUD で画面の隅に出す。下の段は同じ情報を背中の灯り、扉の横の灯り、武器の目盛りに出す。ゲームの進み方は二つの段で同じで、違うのは情報の出し方だけである。
世界の中、世界の外、その中間
画面に出す表示は世界の中の物か、世界の外から重ねる物かで分けられる。
- 世界の中の表示:武器の目盛り、背中の灯り、扉の灯り、運転席の計器のように世界の中に物として存在する表示。キャラクターにも見えている物として作る。ダイジェティック UI はこれを指す。
- 世界の外から重ねる表示:画面の隅の体力や弾数のように世界とは関係なく画面に重ねる表示。HUD はこれにあたる。
- 中間の表示:敵の頭の上の名前や体力の棒、行き先を示す印のように世界の中の位置に合わせて画面に重ねる表示。世界の中の物ではないが、示す物のそばに出る。
中間の表示は世界の中の物と同じく示す物のそばに出せ、HUD と同じく画面の上での大きさを保てる2。デモの「下の段の体力」を「頭の上」にすると、下の段の体力はキャラクターの頭の上に重ねた棒で出る。
目を動かす距離
プレイヤーは遊んでいるあいだ、キャラクターや敵を見ている。HUD の情報を読むには、そこから画面の隅まで目を動かし、読んだらまた戻す。ダイジェティック UI では情報がその物に付いているので、その物を見ていれば目をほとんど動かさずに読める。
デモではキャラクターの目の位置を見ている所とする。そこから、いま見たい情報の表示の中心までのまっすぐな距離を、画面の幅に対する割合で「目の移動」として出している。「敵を撃つ」場面では、上の段の弾数の表示は右下の隅にあり、目の移動は 61% になる。下の段の武器の目盛りまでは 5% である。「砲台に撃たれる」場面では、上の段の体力の表示(左上)までが 30〜40%、下の段の背中の灯りまでが 6% になる。
画面の隅を覆わない
HUD は画面の隅に映る世界を覆う。デモの上の段では右上の「鍵」の表示の裏に砲台があり、砲台の弾は表示の裏から飛んでくる。下の段は隅に何も重ねていないので、砲台が見え、どこから撃たれているかがわかる。ダイジェティック UI は画面に世界の外の物を重ねないので、景色や暗さを見せたい場面で隅まで世界を見せられる。
向いている情報と向いていない情報
ダイジェティック UI に向いているのは、数が少なく物と結び付いた情報である。武器の弾数は武器に、キャラクターの体力はキャラクターに、扉が開くかどうかは扉に結び付いている。多いか少ないかがわかれば足りる情報も向いている。
向いていないのは、細かい数値と、結び付く物のない情報である。デモの武器の目盛りからは残りが 3 分の 2 ほどだとはわかるが、8 発か 7 発かは読み取れない。上の段の「弾数 8/12」なら一目で読める。所持金、経験値、残り時間、スコアのように世界の中に結び付く物がない情報は、無理に物に載せるより HUD に出す。常に確かめたい情報を世界の中に出すなら、キャラクターの体や持ち物のようにいつも画面に映る物に出す。
読めなくなるとき
世界の中の表示は、その物が見えていないと読めない。読めなくなるのは物が画面の外にあるとき、小さく映るとき、暗い所にあるとき、物の向きで表示が裏に回るときである。
デモの「扉へ向かう」場面では、扉は初めは画面の外にあり、下の段の数字は「画面の外で読めない」になる。扉が画面に入るまでの約 2.3 秒、下の段では鍵を持っているかを確かめられない。扉が画面に入った直後も、灯りは画面の右端にある。目の移動は 49% で、上の段の「鍵」の表示までの 41% より遠い。扉の前に着くと、下の段は 6%、上の段は 29% になる。世界の中の表示が目の近くにあるのは、その物のそばにいてその物を見ているときである。
小さく映るときも読みにくい。デモの「映す範囲の広さ」を 2 倍にすると、世界の物は画面の上で縦横が半分になり、武器の目盛りの長さは画面の幅の 6.5% から 3.25% になる。扉の灯りの ✕ と ○ も見分けにくくなる。その代わり、面のほとんどが画面に入るので、扉が画面の外になることはない。1.5 倍では扉が画面の外にある時間が約 1.2 秒に縮む。HUD の表示の大きさは映す範囲を広げても変わらない。
暗い所の表示は周りと一緒に暗くなる。灯りや目盛りそのものを光らせると、周りの明るさによらず見える。物の片側にだけ表示を付けると、物の向きによっては表示が裏に回る。カメラから見える側に置くか、両側に出す。
組み合わせ方
世界の中の表示だけで全部の情報を出すと、上に挙げた読めない場面が残る。情報ごとに出し方を選び、読めない場面を画面に重ねる表示で補う。
- 画面の外にある物:画面の端のその物がある側に印を出す。デモの「扉が画面の外なら端に印を出す」を入れると、扉が画面に入るまで下の段の右端に灯りと同じ色と形の印が出る。印までの目の移動は 43% で、上の段の HUD(41%)とほぼ同じになる。印は扉がどちらにあるかも示す。
- 小さく映るとき:頭の上の棒のような中間の表示にする。デモの「下の段の体力」を「頭の上」にすると、映す範囲を 2 倍にしても、棒は同じ大きさで出る。
- 正確な数が要るとき:ふだんは武器の目盛りで示し、弾を込め直すときのように数を確かめたい場面だけ数字を添える。
- 危ない状態:体力が少ないときは背中の灯りを赤くし、灯りの長さでも減ったことを示す。
デモの 3 つの切り替え(「下の段の体力」「弾数を武器に出す」「鍵の有無を扉の灯りに出す」)で全部を画面の隅に戻すと、下の段は上の段と同じ画面になる。一つずつ世界の中に移すと、情報ごとの効き目を比べられる。
扉の灯りのように画面に映っているかで出し方を変えるときは、表示する物の位置を画面の上の位置に直して判断する。
// 扉の灯りの位置を、画面の上の位置に直す
const p = toScreen(lamp.x, lamp.y);
const onScreen = p.x >= 0 && p.x <= screenW && p.y >= 0 && p.y <= screenH;
if (!onScreen) {
// 灯りのある側の画面の端に、灯りと同じ色と形の印を出す
const x = p.x > screenW / 2 ? screenW - margin - markW : margin;
const y = clamp(p.y - markH / 2, margin, screenH - margin - markH);
drawMark(x, y, hasKey);
}
色だけに頼らない
灯りで状態を示すときは、色のほかにも違いを付ける。色の見え方は人によって違い、赤と緑のように区別しにくい組み合わせがある。デモの扉の灯りは鍵がないときは赤に ✕、あるときは緑に ○ の形を重ねている。背中の灯りも体力が少ないときは赤くするのに加えて、光る長さが短くなる。