タイトルと説明文を変える
js/ の meta と ui を書き換えます。
meta: { id: "escape-room-default",← 自分のゲーム用の英数字に変える(例: "my-game-v1") title: "ここをゲーム名に",← subtitle: "ここに副題(省略可)",← version: 1, debug: false,},ui: { title: { heading: "ここを見出しに", description: "ここに説明文" },← clear: { heading: "CLEAR", description: "ここにクリア時の文章" },←},ui の中で書かなかった項目(eyebrow・buttonなど)は、テンプレートの文言のまま残ります。
「10. エンディングを分ける」を使う場合、クリア画面の見出し・本文はエンディング側の内容で上書きされます(eyebrow・buttonはこのまま有効です)。
→ 他の項目はリファレンスの「ui」
画像を差し替える
既存の画像を変えるだけなら、同じファイル名で上書きするだけで反映されます(config. の編集は不要)。
上書き後に画面が変わらない場合は「11. 公開前のチェックと困ったとき」の「キャッシュについて」を見てください。
新しい画像を追加する場合は、ファイルを assets/ に置いてから、assets. に「名前」とファイルの場所を1行追加します。
assets: { images: { "my-new-item": "assets/images/my-new-item.png",← 追加 },},→ 「名前」の付け方の正確なルール(idとitemIdの優先順位など)はリファレンスの「assets」
→ 推奨サイズ・透過PNGはリファレンスの「画像ファイル」
物の位置を動かす(配置編集モード)
meta.をdebug trueにして保存し、index.を再読み込みする。html - DEBUGパネルの「配置編集」ボタンを押す。
- ドラッグで移動、右下の角で拡大縮小、左下の角で左右反転。

- 画面のJSON欄には、今編集しているシーンの
objects配列がまるごと表示されています。「JSONをコピー」を押し、js/の該当シーンのconfig. js objects: [ ... ]をその内容で丸ごと置き換えます(一部の数字だけを書き写すのではありません)。 - コピーする前にページを再読み込みすると、動かした内容は消えます。 必ずコピーしてから次の操作に移ってください。
- 公開前に
meta.をdebug falseに戻す(→「公開前のチェック」)。
→ ハンドルの詳しい挙動はリファレンスの「配置編集モード」
暗証番号とメッセージを変える
番号は暗証番号のオブジェクトだけでなく、ヒントやメモの文章にも書かれていることがあります。js/ を開き、古い番号(例: 7391)を検索(Ctrl+F)して、見つかった箇所を全部書き換えてください。
{ id: "safe-dial", type: "passcode", shape: "dial", code: "1234",← 新しい番号 clueText: "メモに書かれていた「1234」を試してみよう。",← ヒント文も同じ番号に hintWrong: "番号が違うようだ……", onSuccess: { setFlag: "safeOpened", message: "金庫が開いた。中に鍵が見える。" },},同梱デモでは、drawer オブジェクトの message(メモの文章)にも同じ番号が書かれています。検索で見つけた箇所は漏れなく書き換えてください。
→ clueFlagなど他のオプションはリファレンスの「passcode」
アイテムを増やす
js/ の items に1行追加します。
items: { key: { id: "key", name: "鍵", icon: "key" }, potion: { id: "potion", name: "薬", icon: "potion" },← 追加},icon に key・stick・cloth・torch 以外の名前を書いた場合、所持品欄には「?」が表示されます(動作には問題ありません)。画像にしたい場合は「2. 画像を差し替える」で同じ名前を登録してください。
部屋に置いて拾えるようにするには、シーンの objects に pickup タイプのオブジェクトを追加します(→ リファレンスの「pickup」)。
→ アイコンの一覧はリファレンスの「items」
部屋(視点)を増やす
js/ の scenes に新しいシーンを追加し、既存シーンの navigation からそこへつなげます。
scenes: { "room-front": { label: "正面の壁", background: "wall", bgAssetId: "bg-front", navigation: { left: "room-left", right: "room-right" },← room-right を追加 objects: [ /* ... */ ], }, "room-right": {← シーンを1つ追加 label: "右の壁", background: "wall-alt", navigation: { left: "room-front", right: null }, objects: [], },},新しいシーンの label・background・navigation・objects は省略できません(objects が空の [] なら、何も置かれていない部屋になります)。
→ bgAssetId・entryHintなど他の項目はリファレンスの「scenes」
「○○を持っていないと開かない」仕掛けを作る
pickup か exit のオブジェクトに requiresItem を追加します。同梱デモの drawer(引き出し)が実例です。
{ id: "drawer", type: "pickup", shape: "drawer", x: 305, y: 360, w: 115, h: 74, requiresItem: "torch",← これを持っていないと開けられない hintLocked: "暗くて中がよく見えない……明かりが欲しい。",← 持っていない時のメッセージ setFlag: "foundClue", message: "松明で照らすと、引き出しの中にメモを見つけた。「7391」と書かれている。",},requiresItem の値は、items に実在するアイテムの id にしてください。
→ 複数アイテムを一括で要求する方法はリファレンスの「requiresItems」
調べると何かが出てくる仕掛けを作る
同じ座標に「調べる前」と「調べた後」の2つのオブジェクトを重ねて置き、hideOnFlag とrequiresFlag を1組で対応させます。同梱デモの木箱が実例です。
{ id: "box-closed", type: "examine", shape: "drawer", x: 90, y: 452, w: 100, h: 70, hideOnFlag: "openedBox",← このフラグが立つと、このオブジェクトは消える message: "頑丈な木箱だ。鍵がかかっている……", itemActions: { key: { message: "鍵を使って木箱を開けた!", setFlag: "openedBox", sfx: "pickup" },← 変えたい反応 },},{ id: "box-opened", type: "examine", shape: "drawer", x: 90, y: 452, w: 100, h: 70,← box-closed と同じ座標にする requiresFlag: "openedBox",← このフラグが立つまで画面に出現しない setFlag: "foundSecretNote", message: "開いた木箱の底に、「裏の真実」について書かれた秘密のメモを見つけた!",← 変えたい文章},2つのオブジェクトの x, y(と w, h)は必ず同じ値にしてください。ずれていると、「消えた場所」と「現れる場所」が食い違います。type は pickup や zoom に変えても使えます。
フラグ名(上の例では openedBox)は、3か所(hideOnFlag・requiresFlag・setFlag)すべてで一字一句同じ文字列にしてください。 1文字でも違うと、2つ目のオブジェクトは永遠に出現しません。
→ フラグの仕組み全般はリファレンスの「requiresFlag/hideOnFlag」
触るとゲームオーバーになる罠を作る
type: "danger" のオブジェクトを置きます。同梱デモの trap-wire が実例です。
{ id: "trap-wire", type: "danger", shape: "trap", x: 697, y: 410, r: 22,← 置きたい場所に変える hoverText: "妙な光沢のワイヤーが張られている……触れない方がいいかもしれない。",← 警告文 message: "あやしいワイヤーに触れてしまい、トラップが作動した!",← ゲームオーバー時の文章},hoverText は必ず書いてください。 マウスを乗せた時点で危険だと伝わらないと、何の前触れもなくゲームオーバーになり、プレイヤーが理不尽に感じます(スマートフォンでは自動的に「1回目のタップで警告、2回目のタップで実行」になるため安全です)。
→ ゲームオーバー画面の文言を変える方法はリファレンスの「ui.」
エンディングを分ける
endings に結末を定義し、出口オブジェクトの defaultEnding/endingConditions で条件分岐させます。同梱デモの door が実例です。
endings: { normalEnd: { title: "NORMAL END - 無事脱出", message: "鍵を使ってドアを開け、無事に部屋から脱出した!" }, trueEnd: { title: "TRUE END - 真実の解明", message: "隠された真実に気づき、完璧な脱出を果たした!" },← 結末を追加},{ id: "door", type: "exit", shape: "door", requiresItem: "key", defaultEnding: "normalEnd",← 条件に合わなければこれ endingConditions: [ { requiresFlag: "foundSecretNote", ending: "trueEnd" },← 上から順に判定、最初に一致したもの ],},endingConditions を書かない場合は常に defaultEnding、defaultEnding も書かない場合は常に "normalEnd" という名前のエンディングが使われます。該当するエンディングが見つかった場合、クリア画面の見出し・本文は「1. タイトルと説明文を変える」で設定したui.より優先されます。 endings 自体を省略した場合は ui. の内容がそのまま使われます。
→ endings省略時の詳しい挙動はリファレンスの「endings」
公開前のチェックと困ったとき
公開前に確認すること
meta.がdebug falseになっているか(チート用のボタンが表示されたままにならないか)meta.を自分のゲーム用に変えたか(→「1. タイトルと説明文を変える」)id meta.・subtitle ui.・title ui.に書き忘れた項目が無いか(空欄はテンプレートの文言のまま残ります)clear - 編集後、画面に反映されているか(→ 下の「キャッシュについて」)
キャッシュについて
手元で確認している時に編集が反映されない場合は、Ctrl+F5(強制再読み込み)を試してください。Web公開後に更新した場合は、ファイルの中身を上書きしてもブラウザ・サーバー側にキャッシュが残ることがあります。更新したのが画像なら config. の画像パスの末尾の ?v=、config. 自体やCSSならindex. の <script>/<link> タグの ?v= の数字を1つ上げてください(無ければ追加)。
困った時は
| 症状 | 対処 |
|---|---|
| 画面が真っ白/何も表示されない/途中で止まる | 対処まず config. の書き間違い(カンマ抜け、括弧の閉じ忘れ、全角の引用符「”」など)を疑う。ブラウザでF12を押し「Console」タブを開くと、エラーの行番号が表示される |
| 画像を差し替えたのに反映されない | 対処assets. の「名前」と objects の id/itemId が一致しているか確認(ファイル名の大文字・小文字も区別される)。それでも変わらなければ上の「キャッシュについて」 |
config. を編集したのに画面が変わらない | 対処上の「キャッシュについて」 |
index. を直接開くと音が鳴らない | 対処ブラウザの仕様。「はじめる」ボタンを押した後は鳴る。鳴らない場合はスピーカーアイコンがミュートになっていないか確認 |
| シナリオを編集した後に動きがおかしい(フラグが変なまま進んでしまう等) | 対処画面下の「進行状況をリセット」ボタンを押す。meta.を上げてもセーブデータはリセットされない(保存されるだけで現状どこからも参照されていない)。公開済みのゲームを大きく変更した場合は、meta.を変えると全員が新しいセーブデータで始められる |
| 画面が真っ白/何も表示されない(上記で直らない場合) | 対処広告ブロッカー等の拡張機能を無効にするか、別のブラウザ(Chrome推奨)で試す |
→ より詳しい原因はリファレンスの該当項目