マガジン

スコアを消したゲームで、遊ぶ人は何を目標にするのか:観察実験の設計書

遊びをつくる

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

遊ばれた回数、好意、感想を表す三種類の小さな札を比べる人の手。
記事のテーマをもとに制作したAI生成イラスト。

画面の隅にあった「SCORE 12」という数字を消すと、遊ぶ人は何を頼りに動くのでしょうか。数字がなくなれば、遊び方が自由になるとも、目標を見失って早く飽きるとも考えられます。どちらもありそうで、ゲームを作る側には判断がつきません。 この記事は、その問いを小さなゲームと数人の観察で確かめる「実験の設計書」です。結果は書いていません。準備、手順、記録の取り方、結果の読み方、間違えやすい点を並べるので、自分のゲームや下に載せる最小のゲームで、同じ観察を行ってください。 観察するのは「スコアがあるほうが面白いか」ではありません。人が自分で決める目標の種類と、やめるタイミングです。スコア表示を消したときに目標がどこへ移るかが分かれば、数字に頼らずに手応えを作る設計のヒントになります。

この記事の目次
  1. 確かめる問いと、確かめないこと
  2. 準備するもの
  3. 手順と記録の取り方
  4. 結果の読み方
  5. 起こりやすい誤り
  6. 次の行動

確かめる問いと、確かめないこと

中心の問いは次のひとつです。

スコアが表示されないとき、遊ぶ人は自分で何を目標にし、どのように遊びをやめるのか。

これに付随して、次の3点を記録します。

  • 目標を口にするまでの早さと、その内容
  • プレイの長さと、やめた理由
  • 遊んでいる間の行動の変化(精度を上げようとする、動きを変える、など)

一方、この実験では次のことは確かめられません。

  • 「スコアなしのほうが良い」「スコアありのほうが良い」という一般論
  • 何人中何人という割合の正確さ。少人数の観察から出せるのは傾向の手がかりまでです。
  • ゲームの完成度の評価。ゲームがつまらなければ、どちらの条件でも早く終わります。

条件は2つに絞ります。

  • 条件A:スコアを画面に表示する
  • 条件B:スコアを表示しない(内部では数えていてもよい)

AとBでほかの要素は変えません。差が出たときに、その理由をスコアの有無に絞れるようにするためです。

準備するもの

試作ゲーム

星が上から落ちてきて、クリック(タップ)で消せるだけの小さなゲームです。目標も終わりも用意していません。フィードバックは「クリックした星が消える」ことだけです。条件はコードの SHOW_SCORE を true(条件A)か false(条件B)にして切り替えます。

HTML ファイル1つで動き、外部のライブラリも通信も使いません。

html
<!doctype html>
<meta charset="utf-8">
<title>星ひろい</title>
<canvas id="c" width="480" height="320" style="background:#123;max-width:100%"></canvas>
<pre id="log" hidden></pre>
<script>
const SHOW_SCORE = true; // 条件Bでは false にする
const cv = document.getElementById("c"), g = cv.getContext("2d");
const t0 = performance.now(), log = [];
let stars = [], score = 0, last = 0;
function rec(type){ log.push(Math.round(performance.now()-t0) + "," + type); }
cv.addEventListener("pointerdown", e => {
  const b = cv.getBoundingClientRect();
  const x = (e.clientX-b.left)*cv.width/b.width, y = (e.clientY-b.top)*cv.height/b.height;
  const i = stars.findIndex(s => Math.hypot(s.x-x, s.y-y) < s.r+6);
  if (i >= 0) { stars.splice(i,1); score++; rec("hit"); } else rec("miss");
});
function tick(now){
  const dt = Math.min((now-last)/1000, 0.1); last = now;
  if (Math.random() < dt*1.2) stars.push({x:20+Math.random()*440, y:0, v:40+Math.random()*60, r:14});
  stars.forEach(s => s.y += s.v*dt);
  stars = stars.filter(s => { if (s.y > 340) { rec("lost"); return false; } return true; });
  g.clearRect(0,0,480,320); g.fillStyle = "#fd6";
  stars.forEach(s => { g.beginPath(); g.arc(s.x,s.y,s.r,0,7); g.fill(); });
  if (SHOW_SCORE) { g.fillStyle="#fff"; g.font="20px sans-serif"; g.fillText("SCORE "+score,10,26); }
  requestAnimationFrame(tick);
}
addEventListener("keydown", e => { if (e.key === "l") {
  const p = document.getElementById("log"); p.hidden = !p.hidden; p.textContent = log.join("\n"); } });
rec("start"); requestAnimationFrame(tick);
</script>

観察者用の操作として、遊び終わった後に L キーを押すと、経過ミリ秒,hit/miss/lost の行が並んだ記録が画面に出ます。ログは画面を開いている間しか残りません。再読み込みや閉じる操作の前に、必ず別の場所へ写してください。

自分のゲームで行う場合も考え方は同じです。「何かをした時刻」と「その種類」だけを記録する仕掛けを入れておけば足ります。

人と道具

  • 遊ぶ人:各条件に4人以上を目安にします。そのゲームを初めて遊ぶ人にします。
  • 観察者:自分以外の1人がいると理想的です。難しければ、録画で代用します。
  • 録画または画面記録:遊ぶ人の同意を得てから使います。顔は映さず、画面と操作だけでも十分です。
  • 紙かメモ:遊ぶ人ごとに1枚用意します。

説明の台本

両条件で、一字一句同じ台本を使います。例を挙げます。

星が落ちてきます。画面を触って自由に遊んでください。やめたくなったら、いつでもやめてかまいません。

目標、終わり、スコアの有無には一切触れません。これが最も崩れやすい部分なので、事前に紙に書いて読み上げてください。

手順と記録の取り方

手順

  1. 遊ぶ人を条件AかBに割り振ります。同じ人に両方を遊ばせると、2回目は1回目の影響を受けます。人ごとにどちらか一方だけにしてください。割り振りは、到着順に交互にするなど、機械的に決めます。
  2. 台本を読み上げ、ゲームを開いて渡します。
  3. 観察者は話しかけず、うなずきや笑いなど反応を見せないようにします。遊ぶ人から質問されたら「ご自由にどうぞ」とだけ答えます。
  4. 遊ぶ人がやめると言うまで待ちます。時間制限は設けません。ただし長くなりすぎる場合に備え、上限を10分などと決めておき、その到達も記録します。
  5. 終わったら、すぐに聞き取りを行います。
  6. 画面のログを L キーで出し、写し取ります。

記録する項目

記録は、何を・どの単位で・何回取るかを決めておくと、後で比較できます。

  • プレイ時間、単位:秒、取り方:ログの最後の時刻、または録画
  • hit/miss/lost の数、単位:回、取り方:ログを集計
  • 操作が止まっていた時間、単位:秒(5秒以上の空白を数える)、取り方:ログの間隔から
  • やめた理由(本人の言葉)、単位:原文のまま、取り方:聞き取り
  • 遊び方の変化に気づいた箇所、単位:時刻とひとこと、取り方:観察メモ

遊んでいる最中に「今、何を考えていますか」と聞く「思考発声」は避けてください。声に出して説明させること自体が、本人の目標を作ってしまうおそれがあります。目標は、終了後の聞き取りで言葉にしてもらいます。

聞き取りの質問

順番も固定します。「スコア」という言葉を実験者から出してはいけません。

  1. 遊んでいる間、何を目指していましたか。
  2. いつ頃、やめようと思いましたか。そのきっかけは何でしたか。
  3. うまくいっていると感じたのは、どんなときでしたか。
  4. もう一度遊ぶとしたら、何をしてみたいですか。

答えが短い場合は「たとえばどんなことですか」と、相手の言葉を繰り返す形で促します。「スコアがないから難しかったですか」のような誘導は禁物です。

結果の読み方

目標を分類する

聞き取りの答えを、次の分類で読み分けます。分類は事前に決めておき、結果を見てから変えないでください。

  • 記録更新型、聞き取りに出やすい言葉の例:「さっきより多く」「たくさん取る」
  • 効率型、聞き取りに出やすい言葉の例:「外さないように」「取りこぼさないように」
  • 持続型、聞き取りに出やすい言葉の例:「できるだけ長く」「どこまで続くか」
  • 探索型、聞き取りに出やすい言葉の例:「何か起きるかと思って」「仕組みを探して」
  • 表現型、聞き取りに出やすい言葉の例:「端から順に」「同じ並びに」など、自分で決めた遊び方
  • 目標なし、聞き取りに出やすい言葉の例:「特になし」「何となく」

1人が複数に当てはまってもかまいません。最初に口にしたものと、最後に口にしたものを分けて記録すると、遊んでいる間の目標の移り変わりが見えます。

結果を判断する目安

条件Bの記録を見たとき、次のような読み方ができます。これらは目安であり、結論ではありません。

  • Bでも記録更新型が多い:数字が見えなくても、本人が頭の中で数えている可能性があります。数字は動機の源ではなく、表示の問題かもしれません。条件Aとの違いは、数え間違いや不確かさの有無かもしれず、ログの hit 数と本人の言う数を照らし合わせると分かります。
  • Bで効率型や表現型が目立つ:ゲームの中に、数字以外の評価の軸が生まれていると読めます。その軸を、画面の変化や演出としてゲーム側が受け止める余地があります。
  • Bで目標なしが多く、プレイ時間も短い:スコアを消すだけでは、代わりの手がかりが足りていません。星を消したときの反応や、場面の変化など、別の手応えを足す設計の検討に進みます。
  • AとBで差がほとんどない:この試作では、スコアが目標形成の決め手になっていない可能性があります。ゲームの中身そのものが、どちらの条件でも目標を生んでいないとも読めます。

プレイ時間は目標の語りと一緒に見てください。長く遊んだ人が「何となく」と答えているなら、目標がなくても続く心地よさがあると読めます。短く終えた人が明確な目標を語っているなら、目標を達成して満足した可能性もあります。時間だけで良し悪しは決められません。

条件ごとの人数は少ないため、割合ではなく、一人ひとりの語りと行動の対応に注目します。「Bの4人のうち、ログでは hit が増えているのに目標なしと答えた人がいる」といった食い違いが、次の仮説になります。

起こりやすい誤り

  • 隠れたスコアが残っている:スコア表示を消しても、難易度の上昇、効果音、星の増え方などが実質的な採点になることがあります。条件Bのゲームに、数字以外の「うまくいった印」が何かないか、事前に洗い出してください。この試作では、星が消えること自体が唯一の印です。
  • 実験者の癖が条件を漏らす:「今回はスコアがないバージョンです」のようなひとことが、遊ぶ人にスコアを意識させます。台本から外れないことが大切です。
  • 遊ぶ人の偏り:身近なゲーム好きばかりだと、記録更新を目指す傾向が強く出る可能性があります。誰を集めたかも記録に残します。
  • 見てから分類する:結果を見た後で分類を作ると、都合のよい解釈になりがちです。分類は先に決め、できれば2人が別々に振り分けて、食い違いを話し合います。1人しかいない場合は、数日おいてからもう一度振り分けます。
  • ゲーム自体がつまらない:どちらの条件でも早く終わるなら、スコア以前の問題です。この実験では原因が切り分けられないため、先にゲームの核を見直してください。
  • ログの消失:再読み込みやタブを閉じると、記録は消えます。写し取る前に画面を閉じないよう、手順に組み込みます。
  • 公開後の数字で代用する:投稿した作品のプレイ回数は、作品を起動した実測回数で、遊んだ人数ではありません。同じ端末と作品の30分以内の再起動は重複として除かれます。回数からは遊び方の違いも目標も読み取れないので、この実験の代わりにはなりません。

次の行動

まず、台本と分類表を紙に書き、条件Aの1人目を遊んでもらってください。1人終えた時点で、聞き取りの質問が誘導になっていないか、ログが写せているかを点検できます。

自分のゲームで行う場合は、スコアの表示部分を1か所のフラグで切り替えられるようにし、操作の種類と時刻だけを記録する仕掛けを足せば、同じ形で観察できます。手応えの作り方を確かめた後、公開したいときは、アソバースの投稿画面からHTMLをアップロードし、下書き保存で表示を確認できます。公開にはメールアドレスの確認が必要です。