マガジン

ターン制の「相手の番」をどう見せるか:空白の時間の扱い

遊びをつくる

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

光の差す窓辺に置かれたオセロ盤とチェス駒。対局のあとを思わせる静かな机。
記事のテーマをもとに制作したAI生成イメージ。実際のゲーム画面ではありません。

友達に招待リンクを送り、対局が始まって自分が一手置いた場面を考えてみます。盤面は静かで、動くものがありません。このとき、相手は考えているのでしょうか。席を外しているのでしょうか。それとも通信が切れて、ゲームが止まっているのでしょうか。画面の見た目が同じなら、プレイヤーには区別がつきません。 ターン制のゲームでは、自分の番より「相手の番」のほうが長くなりがちです。しかもオンライン対局では、その長さを作り手が決められません。この記事の問いは、操作できない時間に、画面が何を伝えるべきかです。アソバースのオンライン対戦は「潮目のオセロ」「灯りのチェス」の2作品だけなので、確認済みの仕組みから設計の意図を読み取ります。画面の細部は作品を開いて確かめる形にします。

この記事の目次
  1. 空白の時間は一種類ではない
  2. 公式2作品で確認できる仕組み
  3. 待ちを「張り付く時間」にしない設計
  4. 自分の目で確かめる観察の手順
  5. 自作ゲームで「相手の番」を作る
  6. 次の行動

空白の時間は一種類ではない

「待ち時間」をひとまとめにすると、見せ方の判断が曖昧になります。ターン制の空白は、少なくとも次の四つに分けて考えられます。

  1. 相手が考えている時間:相手は存在し、いずれ手を指します。プレイヤーに必要なのは「まだ続いている」という確信です。
  2. 相手がいない時間:席を外した、タブを閉じた、通信が切れたなどです。必要なのは「戻ってこられる」という見通しです。
  3. 自分に回ってこない手番:置ける場所がなく、手番が飛ぶ場面です。必要なのは「なぜ飛んだのか」の納得です。
  4. CPUが考える時間:相手が人間でなく、待ちの長さを作り手が決められる場面です。

1と2は外から見ると同じ静けさですが、プレイヤーの不安の種類が違います。1は「遅い」ことへの退屈、2は「壊れたかもしれない」ことへの疑いです。画面の見せ方は、この二つを分けて扱えるかどうかで変わります。

3は、オンライン対局では見落とされやすい空白です。自分の画面で何も起きないまま手番が相手に戻ると、操作が無視されたように見えます。4は、設計者が長さを選べる唯一のケースです。だからこそ、ほかの三つを考えるための練習台になります。

公式2作品で確認できる仕組み

「潮目のオセロ」と「灯りのチェス」について、確認済みの事項を、空白の時間の観点で並べます。右の列は、そこから読み取れることです。

  • 相手が考えている、確認済みの仕組み:手番・合法手・勝敗はサーバーで確認される、設計から読み取れること:手番の正しさが画面の演出に依存しないため、表示は「伝えること」に専念できます
  • 相手が不在・切断、確認済みの仕組み:再接続に対応。オセロは再読み込みで同じ部屋へ復帰できる、設計から読み取れること:待ちを「画面に張り付く時間」にしない前提があると読めます
  • 待ちを切り上げたい、確認済みの仕組み:投了がある、設計から読み取れること:対局を終える出口が、待つ側にも用意されています
  • 手番が飛ぶ、確認済みの仕組み:オセロは置けない手番を自動パスにする、設計から読み取れること:「置けないので何もしない」という操作を、プレイヤーに求めない設計です
  • 視点、確認済みの仕組み:チェスは黒側の盤面が反転する、設計から読み取れること:待っている間も、自分の駒が手前にある見え方が保たれます
  • 部屋の寿命、確認済みの仕組み:部屋は24時間、部屋と対戦履歴は作成から7日後に削除対象、設計から読み取れること:待ちには実質的な上限があります
  • 声かけ、確認済みの仕組み:フレンド・チャットは未提供、設計から読み取れること:「まだですか」と伝える手段が、ゲーム内にはありません

相手の待ち時間を縮める機能は、この一覧にありません。確認できるのは、待ちが長くなっても破綻しないための土台です。復帰できること、出口があること、手番の判定が画面に依存しないことです。

CPU戦の仕様も参考になります。「灯りのチェス」のCPUは、思考時間が約450msに制限されています。ひとり対局では待ちを短く保つ方向に作られていると読めます。ただし、なぜその値なのか、短いほうがよいと考えたのかなど、作り手の意図までは確認できません。この部分は、実際に遊んで間合いを体感するのが確実です。

待ちを「張り付く時間」にしない設計

確認済みの仕組みを重ねると、待ちの扱いについて一つの方向が見えてきます。待ちを短くするのではなく、待っていても困らないようにする方向です。

戻れることが、待ちの質を変える

再接続と部屋への復帰があれば、プレイヤーは画面を離れても対局を失いません。席を外す、別のタブを開く、再読み込みする。こうした行動が「対局の終わり」を意味しないので、空白は我慢の時間から自由な時間に変わります。

一方で、24時間という部屋の寿命は、待ちの上限を決めます。これは遊び方への約束事でもあります。長く放置された部屋は消える前提なので、「待つ」と「諦める」の境目は、部屋の寿命と投了が担っています。画面上でこの寿命がどう伝わるかは、確認済みの範囲にありません。作品を開いて確かめる部分です。

待ちの間にできることは限られている

「潮目のオセロ」のヒントと一手戻すは、ひとり対局のみです。「灯りのチェス」の機能一覧にあるヒントや一手戻すも、オンライン対局に含まれるかは確認済み事項から言い切れません。オンライン対局では、考えを助ける道具が少ない場面だと考えておくのが安全です。

その一方で、「灯りのチェス」には取った駒と全棋譜の表示があります。待っている間に局面の流れを見返すのに向いた情報です。オンライン対局中に同じ情報が見えるかどうか、見えるなら待ち中に読みやすい位置にあるかどうかは、作品で確かめます。

ここから設計の原則を一つ引き出せます。待ちの間に何を見せられるかは、「操作の代わりに、読める情報を用意できるか」で決まります。操作を止める以上、読み物としての盤面、履歴、状況の説明が空白を埋めることになります。

動きを抑える設定との関係

待ちの演出に点滅や揺れを使うと、「動きを抑える」設定を使う人には邪魔になります。13作品は、この設定に対応しています。待ちを動きで見せる設計にすると、設定を有効にした人にだけ「何も起きていない」ように見えてしまう恐れがあります。文字や静止した印でも状態が伝わるかを、先に確認しておくと安全です。

自分の目で確かめる観察の手順

ここからは、公式作品の待ち時間を自分で観察する設計書です。結果はここに書きません。記録した内容から、読者自身が判断します。

準備するもの

  • メールアドレス確認済みのアカウント(部屋の作成に必要です)
  • 招待リンクで入ってくれる友達1人
  • 画面を並べて見られる環境(友達と通話しながらでも構いません)

問い:相手の番のあいだ、自分の画面は「考え中」「不在」「故障」のどれに見えるか。

手順

  1. 「潮目のオセロ」で部屋を作り、リンクで友達を招きます。自分は黒(先手)で一手置きます。
  2. 友達には、あえて30秒ほど何も操作しないでもらいます。その間、自分の画面を観察します。
  3. 次に、友達にページを再読み込みしてもらいます。自分の画面に変化があるか、友達が同じ部屋に戻れるかを確認します。
  4. 「灯りのチェス」でも同じ手順を行います。黒側になったときの盤面反転も見ておきます。
  5. 自分側でも再読み込みを一度行い、復帰後の画面が元の続きになっているかを確認します。

記録の取り方

次の項目を、場面ごとに「あり/なし/不明」で書き留めます。それぞれ2回以上繰り返すと、偶然の差を減らせます。

  • 手番を示す表示があるか
  • 相手の番のあいだに押せる操作は何か
  • 相手が離れたとき、画面の状態が変わるか
  • 再読み込み後に、盤面と手番が元どおりか
  • 自動パスが起きたとき、その理由が画面で分かるか(オセロ)

結果の読み方

  • 手番表示も変化もなく、静止している場合は、「考え中」と「不在」が見分けにくい設計だと判断できます。
  • 手番表示があり、不在の変化がない場合は、「考え中」は伝わるが「不在」は伝わらない設計です。
  • 復帰が元どおりなら、待ちの間にタブを閉じても問題ない設計だと読めます。

起こりやすい誤り

  • 友達の操作が遅れただけなのに、「画面が止まった」と判断してしまうことがあります。時間を決めて観察し、通話などで状況を確かめると誤りを減らせます。
  • 「動きを抑える」設定を有効にしたまま観察すると、演出が見えない場合があります。設定を変えて、両方で見比べます。
  • 通知が届くかどうかは、確認済み事項にありません。通知の有無は現在の案内で確認します。

自作ゲームで「相手の番」を作る

投稿作品向けの共通対戦APIは未提供で、サーバー用コードも投稿の対象外です。投稿作品の「最大参加人数」の申告も、共通対戦を有効にするものではありません。そのため、自作でオンライン対局の待ちを再現することはできません。それでも、CPU相手の「相手の番」を作れば、空白の時間の設計は十分に練習できます。

次は、相手の番に最短と最長の待ちを設けた最小の例です。MIN と MAX の数値は説明用で、公式作品の値ではありません。

html
<!doctype html>
<meta charset="utf-8">
<p id="s" aria-live="polite">あなたの番です</p>
<button id="b">石を置く</button>
<script>
const s = document.getElementById("s");
const b = document.getElementById("b");
const MIN = 400, MAX = 1500; // 相手の番の最短・最長(ミリ秒)
const wait = ms => new Promise(r => setTimeout(r, ms));

async function cpuTurn() {
  b.disabled = true;
  s.textContent = "相手が考えています…";
  await wait(MIN + Math.random() * (MAX - MIN));
  s.textContent = "相手が置きました。あなたの番です";
  b.disabled = false;
}
b.onclick = cpuTurn;
</script>

この小さな例にも、決めるべき点が三つあります。

  • 最短を設けるか:CPUがすぐ返すと、相手の手を目で追えません。逆に最短を長くしすぎると、ただ待たされます。
  • 最長を設けるか:「灯りのチェス」のCPUが約450msに制限されていることは、上限を置く設計があり得ることを示しています。自作では、遊ぶ人の様子を見て調整します。
  • 文字で状態を伝えているか:この例は動きに頼らず文章で状態を示しています。「動きを抑える」設定を使う人にも、同じ情報が届きます。

練習として、メッセージを「考え中」「置きました」「パスしました」の3種類に増やしてみます。そして、読む人が理由を理解できる文面になっているかを、別の人に見てもらって確かめます。

次の行動

「潮目のオセロ」か「灯りのチェス」で、友達と部屋を作り、上の観察手順を一度試します。記録を見返し、自分が不安になった瞬間と、その理由を一つ書き出します。次に、自作のCPU戦に「相手の番」の文面を足し、同じ不安が起きない見せ方かを確認します。