謎解きアプリを個人で作るなら、最初に考えたいのは「問題を見て、答えを入力し、結果を確認できる」小さな流れです。問題数を増やしたり演出を加えたりする前に、まず一問を最後まで遊べる状態にすると、必要な機能が見えてきます。
作者の『謎解き千本ノック』の公開当初の記録では、Unityを使い、5つの画面で構成していました。ここでは、その画面構成を入口として、これから作る人向けの設計例を紹介します。
目次
最初の完成形を「一問遊べる」にする
「ゲームを作る」だけでは作業の終わりが曖昧です。まずは次の条件を満たす一問を完成させます。
- 問題の文章や画像を表示できる
- 答えを入力して、正解・不正解を判定できる
- 正解した後、解説を読める
- 問題選択へ戻り、もう一度遊べる
- アプリを閉じても、必要な進捗を復元できる
ランキング、ログイン、対戦などは、この流れを確認してから追加を検討します。機能の数よりも、想定している遊びが途切れず成立することを、最初の目標にする考え方です。
5画面で役割を分ける
| 画面 | 主な役割 | 確認すること |
|---|---|---|
| タイトル | 遊び始める入口 | 開始ボタンを迷わず押せるか |
| ステージ選択 | 問題のまとまりを選ぶ | 未解放の状態が伝わるか |
| 問題選択 | 挑戦する一問を選ぶ | クリア済みかを区別できるか |
| 問題 | 手がかりを読み、答える | 文字や入力欄が画面内に収まるか |
| 解答 | 答えと考え方を確認する | 次の問題や一覧へ戻れるか |
これは画面の役割の分け方です。Unityのシーンも必ず5個に分ける、という意味ではありません。一つのシーンで表示するパネルを切り替える方法も、複数のシーンに分ける方法もあります。まず役割と遷移を決めてから、規模に合う実装方法を選びます。
問題データと表示の処理を分ける
問題を増やすたびに画面のコードへ文章を書き足していると、問題の修正と画面の修正が混ざりやすくなります。そこで、「問題そのものの情報」と「その情報を表示する処理」を分ける設計を考えます。
たとえば、次の情報を一問のデータとして持たせる案があります。
- 問題ID:進捗と対応させるための変わらない識別子
- 問題文・画像:プレイヤーに見せる手がかり
- 受け付ける答え:正解として扱う表記の一覧
- ヒント:段階的に考え方を助ける情報
- 解説:答えに至る道筋
- ステージ・並び順:問題の分類と表示順
UnityのScriptableObjectは、GameObjectから独立したデータを持たせるための選択肢の一つです。問題をエディター内で管理したいときに検討できます。ほかにJSONなどの形式で管理する方法もありますが、形式を決める前に、誰がどのように問題を追加・確認するかを考えると選びやすくなります。
重要なのは、表示順を変えたときに、過去のクリア状況が別の問題へずれないことです。進捗を単なる「配列の3番目」で保存する設計では、途中に問題を追加すると対応が変わる可能性があります。問題IDで進捗を管理し、IDの重複も確認するようにします。
正解判定は「何を同じ答えとみなすか」を決める
自由入力の謎解きでは、答えがわかっていても表記が違うことがあります。たとえば「ねこ」と「猫」、入力の前後の空白、英字の大文字と小文字です。
一律に文字を置き換えると、文字の形そのものが手がかりの問題で意味が変わることもあります。問題の性質に合わせ、許容する表記と許容しない表記を決めます。誤入力のすべてを正解にするのではなく、同じ意味の答えを無理なく受け付けるための設計です。
- 空欄や空白だけなら、入力を促す
- 必要な場合は、入力の前後の空白を取り除く
- 別表記を受け付ける問題では、正解候補を複数用意する
- 間違えた場合も、入力を直して再挑戦できる
スマートフォンで見落としやすい操作を確認する
エディターの画面で動いていても、スマートフォンではキーボードが入力欄やボタンに重なることがあります。小さい画面、長い問題文、大きい文字設定などを想定し、実機で「どこを押せばよいか」まで確認します。
『謎解き千本ノック』の過去のストアレビューにも、回答ボタンが見つからないという声があり、作者は画面下へのスクロールを案内しています。こうした声は、処理が動くかに加えて、操作が見つかるかも確認する必要があることを示しています。
新しく設計する場合は、問題文を読む領域と回答操作の領域をどう配置するか、キーボード表示中にも送信手段があるか、といった点を確認します。
公開前に試したい操作
- 一問目から解答まで進み、一覧へ戻る
- 不正解の後に入力を修正し、再回答する
- 長い問題文や画像の端まで確認する
- 入力中にキーボードを閉じ、再び開く
- アプリを終了して再起動し、進捗を確認する
- 問題の並び順を変更しても、クリア状況が正しい問題に対応するか確認する
広告や通信を加える場合は、それらが失敗したときに遊びへ戻れるかも確認します。基本のゲームができてから、一つずつ外部サービスを足すと、原因を切り分けやすくなります。
次に読む記事と実際のアプリ
画面構成を実際の公開記録と合わせて見たい方は、謎解き千本ノックの制作日数・公開当初の実績もご覧ください。完成後の準備は、iOS・Androidへの公開前に確認したいことに整理しています。作者のほかの作品は、アプリ一覧にまとめています。
参考情報
- Unity公式ドキュメント:ScriptableObject(利用するUnityバージョンに合わせて参照してください)
- App Store:謎解き千本ノック(過去のレビューとデベロッパの回答)
作者:Takeru Ito。
