「もう一回」を押す人と閉じる人:結果画面の滞在時間と視線を記録で比べる方法
遊びをつくる執筆にClaudeを使用しています。

ゲームが終わり、結果画面が出ます。ある人は数秒で「もう一回」を押し、別の人は数字を眺めてからタブを閉じます。この違いを、遊び心地の良し悪しだけで説明してよいのでしょうか。結果画面の中に、押させる要素や閉じさせる要素があるかもしれません。 この記事は、その違いを自作ゲームで確かめるための実験の設計書です。見るのは3つだけです。結果画面にどれだけ留まったか、最初と最長にどこを見ていたか、その後に押したか閉じたかです。視線を測る専用機器は使わず、簡単なログと観察者のメモで足ります。結果そのものは書きません。手順どおりに行えば、自分のゲームの答えが出る形にしてあります。
問いを三つの観測に分ける
「結果画面で何が見られているか」は、そのままでは測れません。次の3つに分けます。
- 次の行動:結果画面の後に「もう一回」を押したか、やめたか。
- 滞在時間:結果画面が表示されてから、次の行動までのミリ秒。
- 視線の先:最初に見た場所と、最も長く見ていた場所。
視線は、画面を大きな領域に分けて粗く記録します。結果画面によくある要素は4つに整理できます。
- A、内容:今回の結果、例:スコア、評価、クリアタイム
- B、内容:再挑戦の入口、例:「もう一回」ボタン
- C、内容:比較の材料、例:ベスト記録、前回との差
- D、内容:その他、例:やめる、メニュー、共有など
自作ゲームの結果画面がこの4つに収まらないときは、領域の数を増やしてかまいません。ただし、観察者が瞬時に区別できる数にとどめます。目安は5つまでです。
仮説は先に紙に書いておきます。たとえば「押す人は最初にBを見て、閉じる人はAを長く見る」といった形です。外れてもかまいません。先に書いておくと、結果を見てから都合のよい理由を探す誤りを減らせます。
準備するもの
- 対象のゲーム:自作ゲームが最適です。結果画面にログを仕込めるからです。公式作品など他の作品を観察する場合は、コードを入れられません。画面録画とストップウォッチだけで行い、結果画面の有無や構成は作品を開いて確かめます。
- 遊んでもらう人:目安は10人以上です。数人では、たまたまの癖と傾向を区別しにくくなります。ゲームを知っている人と初見の人は、別の区分で記録します。
- 観察者:1人以上。できれば2人で同じセッションを別々に記録し、後で見比べます。
- 同意:観察して記録すること、画面録画をするなら録画することを、事前に伝えて承諾を得ます。顔や声を撮る場合は特に注意し、必要がなければ画面だけを録ります。
- 記録用の表:1セッションを1行とする表計算シートか紙です。
録画は必須ではありません。ただし観察者の記録に迷いが出たとき、見返せると判断の根拠になります。
手順と記録の取り方
1. 結果画面にログを入れる
次のコードは、結果画面の表示、ポインタの出入り、観察者のキー入力、ボタンの押下を、時刻つきで画面に並べる最小構成です。1ファイルで動き、外部通信はしません。自作ゲームの結果画面に合わせて、領域の data-area を付け替えます。
<!doctype html>
<meta charset="utf-8">
<title>結果画面ログ</title>
<div id="result">
<p data-area="A">スコア 120</p>
<p data-area="C">ベスト 150</p>
<button id="again" data-area="B">もう一回</button>
<button id="close" data-area="D">やめる</button>
</div>
<pre id="out"></pre>
<script>
const log = [];
const t0 = performance.now();
const now = () => Math.round(performance.now() - t0);
function add(type, detail) {
log.push({ t: now(), type, detail });
document.getElementById("out").textContent =
log.map(e => e.t + "ms\t" + e.type + "\t" + e.detail).join("\n");
}
add("result_shown", "");
// 観察者用:1=A 2=B 3=C 4=D 、見ている場所が変わるたびに押す
addEventListener("keydown", e => {
const m = { "1": "A", "2": "B", "3": "C", "4": "D" };
if (m[e.key]) add("gaze", m[e.key]);
});
document.querySelectorAll("[data-area]").forEach(el => {
el.addEventListener("pointerenter", () => add("pointer_in", el.dataset.area));
});
document.getElementById("again").onclick = () => add("again", "");
document.getElementById("close").onclick = () => add("leave", "");
addEventListener("visibilitychange", () => {
if (document.hidden) add("hidden", "");
});
</script>実際のゲームでは、結果画面が出た瞬間に t0 を取り直し、結果画面を再表示するたびにログを空にします。
このログには限界が2つあります。まず、タブそのものを閉じると、画面上のログも消えます。閉じる行動は「やめる」ボタンの押下か、観察者の手書きメモで残します。次に、スマートフォンのようにキーボードがない端末では、観察者のキー入力が使えません。その場合は録画を見ながら、後でストップウォッチ付きで書き起こします。
2. 観察者の役割を決める
観察者はプレイヤーの斜め後ろ、画面とプレイヤーの目の向きが両方見える位置に座ります。結果画面が出たら、プレイヤーの目が向いている領域のキーを押します。目が動くたびに押し直します。最初に押したキーが「最初に見た場所」、押している時間の合計が最長の領域を示します。
目の向きは顔の角度からの推定なので、細かい位置までは当てられません。だからこそ領域を大きく分けます。押すまでには必ず遅れが生じます。短い視線移動は拾えないものとして割り切ります。
3. 1セッションを1行にまとめる
結果画面の表示から次の行動までを1セッションとし、次の列を埋めます。
- セッションID
- プレイヤー区分(初見/経験者)
- 何回目の結果画面か
- 今回の結果(スコアの帯でかまいません)
- 滞在ミリ秒(result_shown から again または leave まで)
- 次の行動(again/leave)
- 最初に見た領域
- 最長の領域
- ポインタが最初に入った領域
同じ人が何度も遊ぶ場合は、1人あたり3回までを目安にし、回数の列で区別します。1回目と3回目では、結果画面の見方が変わっている可能性があるからです。
結果の読み方
集計では、平均より中央値を使います。結果画面の途中で席を立つなど、極端に長いセッションが平均を引き上げるためです。「押した群」と「閉じた群」に分けて、滞在時間の中央値、最初に見た領域の分布、最長領域の分布を並べます。
読み方の例を、「こうなればこう判断する」の形で挙げます。
- 押した群で最初に見た領域がBに偏る、考えられる解釈:再挑戦の入口を探してから決めている。または入口が目立っている、次に確かめること:ボタンの位置や大きさを変えて、同じ偏りが出るか
- 閉じた群でAやCの滞在が長い、考えられる解釈:結果を確認して納得し、区切りよく終えている、次に確かめること:閉じた後の再訪があるか。この終わり方が悪いとは限らない
- 閉じた群の滞在が非常に短い、考えられる解釈:結果画面を見る前に終えると決めている。または目に入る要素が少ない、次に確かめること:結果の直前の場面(難しさ、長さ)に原因がないか
- 押した群でCの滞在が長い、考えられる解釈:比較の材料が再挑戦の動機になっている、次に確かめること:Cの表示を弱めたとき、押す割合が変わるか
- 群の間で差がほとんどない、考えられる解釈:結果画面の構成はあまり効いていない、次に確かめること:プレイ内容、遊んだ時間、疲れなど画面の外の要因
差が見えても、因果は断定しません。この実験は結果画面で起きていることを観察するもので、「Bを大きくすれば押される」を証明するものではありません。証明したいときは、次の条件を1つだけ変える実験が必要です。
また、観察者2人の記録が合わないセッションが多い場合は、領域の分け方が細かすぎます。領域を減らして、やり直します。
誤りやすい点
- 見られていることの影響:観察者が真後ろにいると、プレイヤーは急いで次に進んだり、あえて長く眺めたりしやすくなります。距離を取り、事前に「結果は評価に使わない」と伝えます。
- 結果の良し悪しとの混同:スコアが低いとすぐ押し、高いと眺める、といった傾向があるかもしれません。スコアの帯を列に入れておき、帯ごとに分けて比べます。
- 同じ人ばかりになる:友人は遠慮して押す傾向があります。可能なら、ゲームの作り手を知らない人にも加わってもらいます。
- ボタン文言の混在:「もう一回」と「リトライ」など、文言を途中で変えると、比較できなくなります。実験の間は結果画面を固定します。
- 領域の定義のぶれ:ベストの数字がAに近い配置だと、AとCの境目があいまいです。実験前に、領域を線で区切って共有しておきます。
- ログの消失:画面上のログは、タブを閉じるとなくなります。終了ごとに、表を手元にコピーします。アップロードしたゲーム内のlocalStorageは一時メモリー扱いなので、端末に残る前提で記録しないでください。
- 観察用コードを公開版に残す:画面にログが出るコードは、公開用のものには入れません。観察用と公開用は別のファイルにします。
次の行動
自作ゲームの結果画面を、A〜Dの領域に分けて線で書き出してください。そのうえで、10人分の記録を取る前に、1人に遊んでもらって観察者のキー入力を試します。記録の手順が通ったら、本番に進みます。差が見えた領域が1つあれば、次はそこだけを変えて同じ手順をもう一度行います。

