AIとゼロから作る脱出ゲーム開発日記 第4話:位置調整に付き合わせすぎたので、専用の編集ツールを作った話

Claude Codeのターミナル画面と、ドラッグでオブジェクトを編集する様子、ドアが暖色の光に縁取られたスマホ画面が並ぶデスクのイメージ画像。 開発日記

前回までのあらすじ

前回は、procedural描画から本物の背景・オブジェクト画像に差し替えたら、これまで存在しなかったはずのバグが一気に噴き出した話を書きました。重さの問題、file://で音が鳴らない核心バグ、そして背景を実写にしたことで発覚した床とオブジェクトの位置ズレ。特に最後の位置ズレの修正では、スクリーンショットを撮ってグリッドを重ねて測り、合成画像を作って確認してもらい、ズレを直す、というやり取りを何周も繰り返していました。

今回は、その「言葉で位置を指示する」というやり方の限界についに手を打った回です。あわせて、効果音や光の演出といった細部の仕上げも進めました。

第1章:位置調整、何周もするコストの限界

背景を実写画像に差し替えてからというもの、ドアの位置がズレている、金庫が浮いて見える、といった指摘のたびに、同じ手順を繰り返していました。背景画像のスクリーンショットを撮る、グリッドを重ねて座標を測る、修正した合成画像を作って確認してもらう、ズレていればまた直す——この往復を何周も続けているうちに、「これ、オブジェクトの位置や大きさを自分で直接変更できるようにした方が良くない?」という提案が出てきました。

言葉で座標を伝えて直してもらうより、実際に触って動かした方が速い場面がある。それも、1回や2回ではなく毎回この調整が必要になるなら、ツールを作るコストの方が明らかに見合っていました。

第2章:ドラッグで位置と大きさを直接変えられる「配置編集モード」

DEBUGパネルに新しく「配置編集」モードを追加しました。仕組みはシンプルです。オブジェクト本体をドラッグすると位置(x, y)が、右下に表示される小さなハンドルをドラッグすると大きさ(w, h。円形のオブジェクトの場合は半径r)が、その場でリアルタイムに変わります。画面には現在のシーンにあるオブジェクトの一覧がJSON形式で表示され続けていて、「JSONをコピー」ボタンを押せば、そのままconfig.jsに貼り戻せる形式で取得できます。

実装のポイントは3つありました。1つ目は、マウスやタッチの移動量は実際の画面ピクセル単位で取得されるので、それをゲーム内部で使っている論理座標(900px基準)に変換する必要があったことです。.game-viewportの実際の表示幅を900pxで割った実測スケールで移動量を割ることで対応しました。2つ目は、編集モード中はアイテム取得などの通常のクリック操作が誤動作しないよう、capture: trueのクリックリスナーで先にイベントを止める必要があったことです。

3つ目は、作ってすぐには気づけなかった問題でした。最初のバージョンではパネルをゲーム画面の内側に配置していたため、肝心のオブジェクトの上に重なってしまい、編集したいものをクリックできないという問題が出ました。パネルを.frameの外、document.body直下にposition: fixedで配置し直すことで解決しています。

この機能は、今回の位置調整を早く終わらせるためだけに作ったわけではありません。将来このテンプレートを買ってくれた人が、自分で用意した背景画像にオブジェクトの位置を合わせる時にも、そのまま使えるはずです。地味な機能ですが、テンプレート自体の商品価値を底上げする一つになりました。

第3章:全部同じ効果音になっていた問題

配置の目処が立ったところで、細部の指摘も入りました。「引き出しでメモを見つけた時、木箱を開けた時、扉を開けた時、効果音が全部パスコード入力の音と同じになっている」というものです。

調べてみると、この4つのアクションが全部同じunlockという効果音を共有していました。発見の演出用に、別途「ピコーン」という音(pickup)をきちんと用意していたのに、動作確認をしながら仮で流用していた箇所が、そのまま直されずに積み重なっていたのです。引き出しのメモや木箱を開けるといった発見系のアクションには本来のpickup音を、扉が開く演出には新しく低い音の伸びるdoorOpenという専用の合成音を追加しました。パスコード正解のunlock音はそのまま残しています。

第4章:8.8秒の効果音と、扉の光の演出

効果音を整理している途中で、もう一つ気になる指摘が入りました。「パスコード正解後の音が長い、遅い」というものです。調べてみると、納品されていたunlock.mp3が実は8.8秒もある音声ファイルでした。「開錠成功」を知らせる効果音としては、明らかに長すぎます。これは実は納品された直後にも気づいて記録していた懸念点だったのですが、実際にプレイして違和感が出たタイミングで、あらためて対応することになりました。長い実ファイルの登録を外し、代わりに短い「カチャッ」という合成音を新しく作って差し替えています。

もう一つ、以前から構造上の限界として分かっていた点にも手を入れました。ドアが開く演出は、扉のスプライトを縮めて透明にしているだけなので、ドアの真下にある背景がそのまま見えてしまいます。ここに、ドアの位置へ重ねる形で光る演出(暖色のグラデーションとグロー)を追加し、扉が縮んでいくにつれて、まるで背後から光が差し込んでくるように見せました。「外につながった」という手応えを演出で補った形です。

最後に、実写の暗いゴシック調の背景に合わせて、左右移動・戻るボタンの配色もダーク半透明から金色半透明に変更しました。暗い背景に埋もれて見つけづらい、という指摘への対応です。

🎮 今回のバージョン

配置編集モードで細部まで調整し、効果音と光の演出も仕上げたバージョンです。DEBUGパネルの配置編集モードは制作者向けの機能なので、通常プレイでは表には出てきませんが、扉の光の演出や効果音の違いはぜひ体感してみてください。

💬 読者へのヒアリング

効果音周りは実際に何度もプレイしないと気づきにくい部分でした。もし遊んでいて、まだ違和感のある音や、演出のタイミングが合っていない箇所があれば、ぜひ教えてください。

まとめ&次回予告

位置を言葉で伝えて直してもらうやり取りを何周も繰り返した結果、専用の編集ツールを作ることになりました。地味な手間を減らすために作ったこの機能が、実は買い手にとっても価値のある機能になったというのは、今回の一番の収穫です。

procedural描画から始まったこの部屋も、ここまでで一区切りです。次は、同じエンジンで別のテーマの部屋をもう1本作るところから始めようと思っています。1つのテーマだけでは気づけなかった、テンプレートとしての汎用性の課題が見えてくるはずです。


次回:第5話「別テーマでもう1本作ってみたら見えてきたこと」

コメント

タイトルとURLをコピーしました