マガジン

ゲームの途中で離脱した人は、直前に何をしていたか

遊びをつくる

執筆にClaudeを使用しています。

速さ、選択肢、ミスの許容を三つの異なる仕掛けで表したゲーム模型のイラスト。
記事のテーマをもとに制作したAI生成イラスト。

遊んでいた人が、ある瞬間にタブを閉じます。作った側に見えるのはそこまでで、「つまらなかったのか」「わからなかったのか」は閉じた後の画面からは読み取れません。この二つは直し方が正反対です。退屈なら刺激や変化を足す必要があり、混乱ならむしろ余計なものを減らして道筋を示す必要があります。取り違えると、直したはずなのに離脱が減りません。 この記事は、離脱の直前30秒の操作を記録し、退屈と混乱を見分けるための実験の設計書です。結果は載せていません。読者が自分のゲームと数人のテスターで行えば、答えが出る形にしています。 ここで言う退屈は「次に何をすればいいかは分かっているが、やる意味を感じなくなった状態」、混乱は「何をすればいいか分からなくなった状態」です。操作の記録は、この違いが外に出やすい場所です。

この記事の目次
  1. 離脱の数字だけでは見分けられない理由
  2. 準備するもの
  3. 手順と記録の取り方
  4. 結果の読み方
  5. 誤りやすい点
  6. 次の行動

離脱の数字だけでは見分けられない理由

アソバースのプレイ回数は作品起動の実測回数で、人数ではありません。同じ端末・作品の30分以内の再起動は重複として除かれます。つまり、起動された回数は分かっても、途中のどこでやめたかは分かりません。外部の解析ツールを使っても、分かるのは「何秒で閉じたか」までが多く、直前の行動は残りません。

退屈と混乱は、離脱の時刻が同じでも直前の操作が違うと考えられます。たとえば、次のような違いです。

  • 混乱している人は、答えを探して画面のあちこちを押したり、同じ操作を何度も試したりしそうです。
  • 退屈している人は、操作の回数が減り、間隔が伸びていきそうです。

これらは仮説です。この実験では仮説を決め打ちせず、記録を見て当てはまるかを確かめます。

準備するもの

次のものを用意します。

  • 遊ばせたい版のゲーム(初見で遊べる状態のもの)
  • 初めて遊ぶテスター5人以上(人数が少ないと、一人の癖を傾向と取り違えます)
  • 入力ログを取るコード(次の節に載せます)
  • 画面録画(テスターの同意を得たもの)。ログだけでは「画面で何が起きていたか」が分かりません
  • 観察メモ用の紙(名前は不要。「テスターA」のような符号だけにします)

次の三点は、始める前に決めて紙に書いておきます。結果を見た後に基準を動かすと、都合のよい読み方になるからです。

  1. 離脱の定義:タブを閉じた、ゲームをやめると言った、または10分間まったく操作がなかった、のいずれか
  2. 見る区間:離脱の直前30秒を、さらに前半20秒と後半10秒に分ける
  3. 見る指標:入力の回数、入力の間隔、押した場所の散らばり、同じ操作の繰り返し

テスターには「やめたくなったらいつでもやめてください。理由を説明する必要はありません」と伝えます。引き止めたり、困っていても手を出したりしません。助けてしまうと、離脱が起きなくなります。

手順と記録の取り方

手順

  1. テスターに、ゲーム名以外の説明をせずに遊んでもらいます。
  2. 観察者は横で、声をかけずに見ます。紙には「画面が変わった時刻」と「表情や声に出た独り言」だけを書きます。
  3. 離脱が起きたら、すぐ次の質問を一つだけします。「さっき、何をしようとしていましたか」。「面白くなかったですか」のような選択肢を誘導する質問は避けます。
  4. 答えを一言で紙に残し、ログを保存します。
  5. 全員分を終えてから、ログを並べて読みます。1人終わるごとに結論を出さないようにします。

入力ログのコード

次のコードは、ゲームのHTMLの末尾に貼れば動く最小構成です。外部ライブラリもサーバーも使いません。押した時刻・種類・位置を記録し、画面を離れたときにも残るよう、イベントのたびにブラウザの保存領域へ書きます。

html
<script>
const KEY = "inputlog";
const t0 = performance.now();
const log = [];

function add(kind, e) {
  log.push({
    t: Math.round(performance.now() - t0),
    kind: kind,
    x: e && e.clientX != null ? Math.round(e.clientX) : null,
    y: e && e.clientY != null ? Math.round(e.clientY) : null,
    key: e && e.key ? e.key : null
  });
  localStorage.setItem(KEY, JSON.stringify(log));
}

addEventListener("pointerdown", e => add("down", e));
addEventListener("keydown", e => add("key", e));
document.addEventListener("visibilitychange",
  () => add(document.visibilityState));
addEventListener("pagehide", () => add("pagehide"));

// 離脱直前の30秒を取り出す(コンソールで last30() と入力)
function last30() {
  const saved = JSON.parse(localStorage.getItem(KEY) || "[]");
  const end = saved.length ? saved[saved.length - 1].t : 0;
  return saved.filter(r => r.t >= end - 30000);
}
</script>

使い方の注意が二つあります。

  • アソバースにアップロードした作品の中では、localStorageは一時メモリーの互換処理として動くため、離脱後に読み出す用途には向きません。この実験は、手元のパソコンでHTMLを開く、または自分で用意した環境で行います。
  • ログは観察者のパソコンで取ります。テスター本人の端末に仕込む場合は、何を記録するかを事前に伝えます。記録するのは操作の時刻・種類・位置だけで、文字入力の内容や個人情報は含めない作りにします。キー名の記録が気になる場合は key の行を消します。

記録表の作り方

離脱ごとに、次の項目を1行にまとめます。

  • テスター符号、何を書くか:A、B、C など
  • 離脱までの時間、何を書くか:開始から離脱まで(分・秒)
  • 前半20秒の入力数、何を書くか:離脱の30〜10秒前
  • 後半10秒の入力数、何を書くか:離脱の直前10秒
  • 最後の入力から離脱までの空白、何を書くか:秒
  • 押した場所、何を書くか:同じ場所の繰り返しか、散らばりか
  • 画面の状態、何を書くか:録画から一言(例:説明表示中、操作可能、結果待ち)
  • 本人の一言、何を書くか:離脱後の質問への答え

結果の読み方

ログを並べたら、各離脱を次の表に照らして分類します。基準は、先に紙へ書いた内容に従います。

  • 後半10秒の入力が前半より増え、押す場所が散らばる、疑うもの:混乱(探索)、確認すること:画面に押せる対象が見つけにくくなかったか
  • 同じ場所や同じキーを繰り返し押す、疑うもの:混乱(反応の欠如)、確認すること:押しても何も起きないように見えなかったか
  • 入力は多いがすぐ戻す・やり直す操作が続く、疑うもの:混乱(意図と結果のずれ)、確認すること:操作の結果が予想と違っていないか
  • 後半の入力が減り、間隔が伸びてから離脱、疑うもの:退屈、確認すること:直前の数十秒に新しい要素や目標があったか
  • 入力は正確で一定、変化のない作業が続く、疑うもの:退屈(単調)、確認すること:同じ操作の繰り返しが何回続いたか
  • 離脱の直前に入力が全くなく、画面は結果表示や説明文、疑うもの:判断保留、確認すること:読んでいたのか、離席したのか

読み方の基本は、三つです。

  1. 「増える」は混乱、「減る」は退屈という見立てを、最初の仮説として使います。ただし、離脱後の一言と録画の画面が食い違う場合は、一言と画面を優先します。
  2. 分類は、テスター一人ずつではなく全員を並べて見ます。5人中3人以上に同じ型が出たなら、その型を最初に疑います。バラバラなら、ゲームの問題ではなく人によって異なる事情が混ざっていると考えます。
  3. 離脱の直前の画面の状態を必ず見ます。混乱型が「説明表示の直後」に集中するなら入口の問題、「中盤の特定の局面」に集中するならその局面の問題です。

判断が出たら、直す方向は次のとおりです。

  • 混乱型が多い場合:新しい要素を足す前に、押せる場所の見せ方、反応の返し方、最初の目標の示し方を見直します。
  • 退屈型が多い場合:直前の数十秒に何が続いていたかを見て、変化・目標の更新・報酬が入るタイミングを前倒しできないか考えます。
  • 混在する場合:まず混乱型を直します。分からないまま遊んでいる人は、退屈かどうかを判断する段階にも達していないためです。

誤りやすい点

  • 無入力を退屈と決めつける:パズルや読み物系では、考えている間の無入力が長くなります。ジャンルに合わせて、先に「普通の間隔」を測るのが先決です。同じゲームの離脱しなかったテスターの間隔と比べると、基準が見えます。
  • 質問が誘導になる:「分かりにくかったですか」と聞くと、そう答えてしまう人がいます。「何をしようとしていましたか」の一問に絞り、答えはそのまま書き取ります。
  • 助けてしまう:困っていても口を出さないでください。助けると離脱が起きず、観察したい場面が消えます。ただし、本人が明らかに不快そうな場合は、観察より本人を優先して止めて構いません。
  • 少人数の結果を言い切る:5人で見えるのは傾向の候補です。「このゲームは退屈だ」と結論づけず、「中盤の同じ局面で、複数人の入力が減った」のように、見えた事実だけを残します。
  • 離脱の理由が外にある:呼ばれた、時間切れ、通信の都合など、ゲームと無関係な離脱も混ざります。離脱後の一問で、外部要因だったと分かった記録は分析から外し、外した件数も控えます。
  • 記録の取りすぎ:位置や時刻をすべて見ようとすると、かえって読めなくなります。まずは「後半10秒の入力が増えたか減ったか」と「押す場所が散らばったか」の二点だけで分類し、足りなければ他の指標を足します。

次の行動

まず、自分のゲームに上のコードを入れて、自分で1回遊び、last30() でログが取れることを確認します。それから、初見のテスターを5人集め、離脱の定義と読み方の基準を紙に書いてから始めます。結果が出たら、混乱型と退屈型のどちらが多かったかを一行で書き、直す箇所を一つだけ選んで修正し、同じ手順でもう一度確かめます。