なぜレイヤーが必要なのか
映画のシーンを思い浮かべてください。 遠景の山並み、その手前に建物、さらに手前に人物、そして最前面にテロップ。 この「奥行きの重なり」が、映像に深みと臨場感を与えます。
ビジュアルノベルでも同じです。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 の設計を解説します。