VOL.3 — LAYER SYSTEM

映画的な奥行きを生む

なぜレイヤーが必要なのか

映画のシーンを思い浮かべてください。 遠景の山並み、その手前に建物、さらに手前に人物、そして最前面にテロップ。 この「奥行きの重なり」が、映像に深みと臨場感を与えます。

ビジュアルノベルでも同じです。VN Studio は デュアルレイヤー構造背景4枚重ねによって、この表現力を向上させ、映画的な奥行きを実現します。

デュアルレイヤー — Main と Menu

VN Studio の画面は、大きく2つのレイヤーで構成されています:

  • Main レイヤー — ゲーム本編(背景、キャラクター、テキスト、エフェクト)
  • Menu レイヤー — メニュー画面(セーブ/ロード、システム設定)

Menu レイヤーは Main レイヤーとは完全に独立して動作します。 メニューを開いても本編の状態は一切影響を受けず、 メニューを閉じれば即座に元のシーンに戻れます。

この分離は call / return の仕組みで実現されており、 メニュー呼び出し時には VisualSnapshot が Main レイヤーの状態(BG、キャラ、BGM)を丸ごと保存します。

背景4枚重ね — bg0 〜 bg3

Main レイヤーの背景は、4枚のレイヤーで構成されています:

# レイヤー構造(手前 → 奥)
┌──────────────────────────────┐
│ bg3: 最前面エフェクト(光・パーティクル)│
│ bg2: 前景オブジェクト                   │
│ bg1: 中景(合成用)                     │
│ bg0: 基本背景                          │
└──────────────────────────────┘

スクリプトでは、以下のように直感的に制御できます:

# 夕暮れの教室
bg school_classroom            # bg0: 教室の基本背景
bg1 sunset_overlay 
fade in 2.0                    # bg1: 夕焼けのオーバーレイを2秒フェード
bg3 light_particles            # bg3: 窓からの光のパーティクル

これにより「背景に夕焼けのフィルターをかけ、光のパーティクルを浮かべる」 といった演出が、わずか3行のスクリプトで実現できます。 また、背景に動画(WebP、APNG透過対応)を指定することもできます。 スクリプト上ではファイル名の指定だけで、画像と動画の区別を意識する必要もありません。

VisualSnapshot — 状態の保存と復元

レイヤーシステムの影の立役者が、VisualSnapshot です。 これは call コマンド(別スクリプトの呼び出し)を実行する際に、 現在の画面状態を丸ごとキャプチャする仕組みです。

  • 保存される情報: 各bgレイヤーの画像パス、キャラクター位置・表情、BGMファイル、テキスト設定
  • 復元タイミング: return コマンド実行時に、保存した状態を即座に再適用

このメニューレイヤーは、スクリプトによるカスタマイズも可能です。 これにより、メインストーリーから、(例えば)アイテム選択画面に遷移させるなど、柔軟なゲーム設計が可能になっています。 そして、メニューを閉じれば、画面が正確に元の状態に復元されます。

次回予告

Vol.4 では、これらの画像や音声ファイルを 「フォルダに置くだけ」で自動認識する AssetLoader の設計を解説します。