CODE TRACE開発記録|4桁の数字を短時間で読み解くゲーム
LOCKとTRACEを手がかりに4桁を特定するSOLOと、同じ推理を2人で競うBATTLE。その仕組みと実装上の工夫を紹介します。
CODE TRACEは、重複しない4つの数字を6回以内に特定する短時間推理ゲームです。0から始まるCODEも有効で、ページを開けば登録やダウンロードなしですぐ遊べます。
LOCKとTRACEで候補を削る
入力した4桁に対して返る情報は2つだけです。LOCKは数字と場所が一致した数、TRACEは数字は含まれるものの場所が違う数を表します。たとえば結果が「LOCK 1 / TRACE 2」なら、入力した4つのうち3つは秘密CODEに含まれ、1つだけ正しい位置にあります。
判定処理はUIから分けた純粋関数にしました。完全一致、全数字一致で全位置違い、0を含むCODE、一致なし、6回目の成功と失敗を自動テストで固定しています。表示を変えても判定規則が変わらないようにするためです。
1人で詰めるSOLO
SOLOでは過去の入力とLOCK / TRACEを解析ログとして並べます。3回目の判定後もゲームが続いている場合は、1ゲームに1回だけ「位置ヒント」を使えます。選んだ桁が0〜4か5〜9かだけを示し、数字そのものは公開しません。開始直後から使える版も試しましたが、使わない理由がなくなるため、3回目の後に解禁する形へ調整しました。
同じ問題を共有できるChallenge、日付から同じCODEを生成するDAILY TRACE、結果画像の共有も、秘密CODEそのものをURLや画像へ含めない設計にしています。
2人で競うBATTLE
BATTLEでは2人が別々の秘密CODEを持ち、交互に相手のCODEを推理します。毎ターン4桁を入力し、2手目と4手目には追加の質問カードを1枚使います。先に4 LOCKへ到達することが目標ですが、同じ手数で先攻が正解した場合は後攻にも回答機会を残し、公平に勝敗を決めます。
ルーム、再接続、RESULT、REMATCHはWorker側で管理し、各プレイヤーへ必要な情報だけを返します。秘密CODEは対戦中の相手には送らず、RESULTで初めて双方へ公開します。
数字を主役にした画面
ウラギリ・シグナルが通信網と複数人の盤面を描くゲームなのに対し、CODE TRACEは暗号解析端末として設計しました。黒と濃いチャコールを基調に、4つの入力スロットと解析ログを中心へ置いています。375pxと390pxの縦画面でも数字入力と主要操作が収まるかを確認し、キーボード操作、フォーカス表示、色以外のラベルも維持しています。