コマンドとは

Last-modified: 2024-03-13 (水) 22:12:18


コマンドとは何か

Light.vnは、スクリプト文中の行頭に「~」を付与すると、以降をコマンド(命令語)として認識します。コマンドを駆使することで、様々な演出やシステムを構築することができます。
エディター上でスクリプトを表示すると、コマンドはテキストから区別され、テキストのような全体に渡る青ではなく、コマンドの日本語名に大分類ごとの色が付き、設定項目や数値などは黒色で表示されます。
もしもコマンドとして設定したはずのものが全体に渡って青く表示されていたら、それは文章扱いになっているということですので、コマンドの先頭に「~」を付与しましょう。

使用方法

コマンドごとに設定されている日本語名をスクリプトの行内に記述することで、そのコマンドを使用します。

コマンド名 設定項目 設定項目 設定項目 ……

コマンド名のあとにスペースを挿入しながら各項目を設定してゆき、必須項目をすべて正しく設定できれば、そのコマンドが適用されます。

設定項目の記述について

コマンド名の後ろに続く設定項目の記述には、いくつかの種類があります。

  • 命名
    コマンドによって設定・表示する個体に対して、新しく個体名を付けます。
    この個体名は、コマンドの適用対象を指定する際に用いることになります。
    なお、使用する素材のファイル名に個体名を合わせる必要はなく、日本語を用いることも可能です。
    項目参照:命名について
  • 個体名
    コマンドを適用する対象の個体名を記述します。
    命名した個体名の他に、一部の語句を代用することがあります。
    項目参照:個体名について
  • ファイル名
    「image01.png」などのファイル名を記述します。
    ファイル名は、全角・半角や、英字の大文字・小文字まで正確に記述する必要があります。
  • 数値
    基本は数字や計算用記号を記述します。
    16進数等などの特殊な場合には半角英字や記号が用いられることもあります。
    なお、カラーコードの指定時には、最大値が255、最小値が0となります
    項目参照:座標について加速度について
  • 設定項目の語句
    コマンド目録内にある表において「設定項目」の列にある語句をそのまま記述します。
    たとえば、カメラ操作の適用範囲から素材を除外する「カメラ付着」を設定する場合は、設定項目として「カメラ付着」と記述します。
  • コマンド
    コマンドの中には、さらに別のコマンドを指定するものがあります。
    その場合は、設定するコマンドの日本語名を記述してから、各設定項目を記述します。
    なお、Ver16.0.0以降では、当該コマンドが現画面領域の最下層スクリプトを基準に実行されます
  • テキスト
    コマンド「文字」やコマンド「ダイアログ」など、テキストを使用するコマンドにおいて記述します。
    記述の際には、「"」を文頭と末尾に付与することが必要になります
    Ver5.7.0以前では「"」を末尾に置く必要はありませんでしたが、Ver6.0.0から必須になりましたまた、「'」は用いることができなくなりました
    コマンドの設定項目としてテキストを用いる場合に限り、「"」を付与しても以降のスクリプト文はテキスト区間扱いになりません

  • 「()」で囲んだ式を記述します。コマンドによっては「"」で囲むこともあります。
    変数における右辺設定値やコマンド「もし」における条件に用います。
    項目参照:変数もし

命名について

  • 同じコマンドにおいて同じ個体名を命名すると、先に設定されていた個体は抹消され、直近に設定された素材や座標を反映して、個体が更新されます
    したがって、同じコマンドで複数の個体を設定したい場合は、必ず異なる個体名を命名する必要があります
  • Ver6.0.0から変数機能の拡張に伴って命名規則が追加されました。
    • 数字を個体名の先頭に用いることはできません
    • 演算子を個体名の途中に用いることはできません
  • 特定の機能や性質を持つ個体が複数ある場合は、適当な規則を与えておくと便利です
    たとえば、立ち絵の個体名の先頭に「ch_」を用いるようにすると、コマンド「アウト ch_.*」によって立ち絵だけをすべて退場させることができます(項目参照:正規表現に触れてみよう)。

個体名について

  • 効果コマンドの多くは、複数の対象個体を指定できます。
    指定の際には個体名の末尾ごとに「,」を付与したうえで、スペースを挿入する必要があります
    イン ball1, ball2, goal, ……
  • 対象の指定には、個体名の他にいくつかの語句を用いることができます。
    • 素材関係のコマンド名
      一部の効果コマンドにおいて、個体コマンドのコマンド名を個体名として用いることができます。
      たとえば、コマンド「ボタン」によって設定されたボタン個体が複数ある場合に、コマンド「アウト ボタン」を適用すると、すべてのボタン個体が退場します。
    • 全部
      対象名に「全部」と記述すると、画面上に表示しているすべての個体が指定されます(透明度0のものも含みます)。
      たとえば、コマンド「アウト 全部」を適用すると、表示しているすべての素材個体が退場します。
  • Ver13.2.1より、個体名にテキスト(「"」で囲んだ文字列)を用いることができるようになりました。

座標について

個体コマンドで個体を設置する際に、座標を指定することがあります。

  • 座標とは、画面上における個体の位置のことです。1ピクセルを1単位として、「x座標」と「y座標」を合わせて指定します。
    3Dカメラモードの場合には「z座標」も指定することになります。
    • 「ピクセル」という単位は、画素1個分の大きさを指します。
      あなたがいま見ている画面をよく見ると、極めて小さい点が見えると思いますが(見えなくても、そういうものなのだと考えてください)、それこそが画素です。
      「解像度」などとも呼ばれ、画像のサイズを表す際に用いられることが多いです。
  • x座標は、画面の左端を0として、右方向へ水平にどれだけ離れているかを表します。
    x座標「100」は、画素100個分、右方向に離れた位置を指し、「-100」は、画素100個分、左方向に離れた位置を指します。
  • y座標は、画面の上端を0として、下方向へ垂直にどれだけ離れているかを表します(数学等ではy座標の正の方向を上方向とするのが一般的ですが、今は下向きであるということに注意しましょう)。
    y座標「100」は、画素100個分、下方向に離れた位置を指し、「-100」は、画素100個分、上方向に離れた位置を指します。
  • 上では“画面上”としましたが、画面外の位置を指定することも可能です。

加速度について

効果コマンドにおいて、効果時間を設定すると、加速度を指定できる場合があります。
指定する際の数値は、「a0」のように、先頭に「a」を付与し、加速度の種類を続けます。

  • Light.vnにおける加速度(物理学的な意味から一旦離れて考えましょう)を端的に表現するならば、“変化の種類”です。
    効果コマンドにおいて効果時間を指定すると、通常は等速で変化してゆきます。時間あたりの変化量をグラフ上に表すと、水平な直線となります。
    加速度を設定する場合、このグラフが変形します。ただし、「a0」は変形せず、指定しない場合と同じ等速変化になります。
    加速度の種類は以下のとおり(コマンド「移動」で検証。一般性に関しては要検証)。基本的には数値が大きくなるほど激しい変化になります。
    • 傾きが減少する(右肩下がり・減速する)加速度
      1(要再検証)・3・6・9・12(逆走あり:終動時)・15(逆走あり:終動時・3回)
    • 傾きが増加する(右肩上がり・加速する)加速度
      2・5・8・11(逆走あり:始動時)・14(逆走あり:始動時・3回)
    • 連続で増減する(うねり・減速→加速→減速する)加速度
      4・7・10・13(逆走あり:始動・終動時)・16(逆走あり:始動・終動時・2回ずつ)・17(逆走あり:始動時・3回:範囲内)・18(逆走あり:終動時・3回:範囲内)

  • 視覚的に分かりやすい動画を提供していただきました。

カメラオプションについて

  • 画像・動画素材を用いるコマンドにおいて、カメラに対する反映方法を指定するのが、設定項目「カメラオプション」です。
    2D・3Dのいずれにおいても影響のある設定項目です。
    • 「カメラ付着」は、カメラ操作の影響を除外します。したがって、常に画面上で定常状態を保ちます。
    • 「2D視点」は、2Dカメラモードでの見え方に従って表示します。
    • 「3D視点」は、3Dカメラモードでの見え方に従って表示します。
    • 「y軸固定」は、カメラに対するy軸の角度を一定に保ちます。カメラの横移動やy軸回転に対して個体が回転しているように見えなくなるということです。
    • 「xy軸固定」は、カメラに対するx-y軸の角度を一定に保ちます。カメラの縦横移動やx-y軸回転に対して個体が回転しているように見えなくなるということです。

画面領域について

  • 個体の管理に関して、Ver12.2.0で導入されたのが「画面領域」です。
    画面領域は個体とキートリガーに領域名を付加することでグループ化する役割を担います。
  • 画面領域はスタックの概念を用います。
    最下層に「vn_screen_space_main」が常時存在し(抹消不可)、新たな画面領域が作成されれば積み上げられてゆきます。
    最上位の画面領域には、以降に設定される個体とキートリガーが属することになります
  • キートリガーは、属している画面領域が最上位にある時のみ適用されます
    これは同じキー入力でも画面領域毎に異なるコマンドを適用するように設定することが可能ということでもあります。
    • 画面領域が作成されると、既存のキートリガーはすべて一時的に初期化されます(設定は保存されており、後で呼び出せます)。
      そして、以降に設定されたキートリガーはその時点での最上位の画面領域に紐付きます
      それらの設定は、紐付いている画面領域がスタック内に存在する限りは保存されます。
      いわば「画面領域限定のキートリガーが設定される」ということです。
    • 画面領域が削除されると、その画面領域に紐付いていたキートリガーは完全に抹消されます
      そして、次の最上位画面領域に紐付いているキートリガーが有効になります
    • たとえば、最下層ではコマンド「スクリプト hide.txt」を、第1層ではコマンド「スクリーンショット」を、
      第2層(最上位)ではコマンド「ダイアログ選択 no」を、キー「space」に設定したとしましょう。
      この場合、最初のスペースキー押下で適用されるのはコマンド「ダイアログ選択 no」です。
      その後、第2層が削除されると、以降はスペースキー押下でコマンド「スクリーンショット」が適用されます。
      第1層が削除されれば、スペースキーの押下はコマンド「スクリプト hide.txt」の適用のキートリガーとなります。
  • 効果コマンドの対象に、画面領域の条件を設定することができます。この範囲指定は対象名によるものに優先します
    また、設定しない場合には「最上位の画面領域に属する個体」が範囲として指定されます
    旧Verとは指定方式が異なるため、更新の際にはご注意ください。
    • 同階層画面領域
      コマンド「画面領域上書き」を使用していなければ、最上位の画面領域に属する個体が範囲に含まれます。
      使用している場合には、最上位の画面領域とその旧版の画面領域に属する個体が範囲に含まれます。
      これは上書きの前後の画面領域が同階層として扱われることに因るものです。
      いずれにせよ、対象名が「全部」や正規表現であっても、対象となるのは画面領域範囲に属する個体のみとなります
    • 全画面領域
      画面領域による範囲指定を解除し、すべての個体を対象に含めたうえで、対象名に合致する個体にコマンドが適用されます。
      Ver12.0.0以前の対象指定はこちらの方式でした。
  • 画面領域を抹消するのは、その画面領域に属する個体がすべて退場した後にしましょう。
    個体には画面領域情報が紐付けられているため、仮に個体が残っている状態で画面領域を抹消してしまうと
    その個体を画面領域によって指定することが難しくなります(同じ名前の画面領域を再度作成すれば可能)。

  • 例え話を交えて「画面領域」について詳しく解説されている動画でお勉強してみましょう。


コマンドの種類

コマンドには以下のような種類があります。

  • 個体コマンド(素材コマンド)
    各フォルダ内に存在する素材を使用して、画面上やシステム上に様々な個体を設置します。
    個体にはそれぞれに個体名の命名が必要となります(背景音を除く)。設置と同時になんらかの効果や機能を設定するものもあります。
  • 設定コマンド
    個体コマンドによって設定された個体を指定して、なんらかの機能・性質を付加・抹消します。
  • 効果コマンド(演出コマンド)
    個体コマンドによって設定された個体を指定して、なんらかの効果の適用、またはなんらかの視覚的な操作を行います。
    • 効果コマンドの多くはコマンド名の末尾に「2」を付与すると、コマンド適用前の状態を基準とする相対的な変化になります
    • 効果時間の設定項目を持つ効果コマンドは、コマンド名の先頭に「.」を付与すると、コマンドの適用終了までスクリプトの以降行の読込みを一時待機します。このようなコマンドは「シンクロコマンド」と呼ばれます。
      シンクロコマンドは、キートリガーや砂時計個体などの適用コマンドとして設定することはできませんが、スクリプトを通して間接的に設定することはできます。
  • システムコマンド
    システムの構築、ゲームの動作や処理の設定・適用・変更を行います。
  • カメラ操作コマンド(カメラ操作)
    コマンド「移動」「回転」「拡大」の対象名に「カメラ」と記述したものと、コマンド「カメラモード」「カメラ初期化」を指します。
    カメラ操作コマンドが適用されると、各コマンドで設定する項目における基準そのものが変更されたように見えます。
    カメラ操作コマンドを使うには、個体の移動とカメラ操作とを区別して捉えることが求められます。
    • たとえば、コマンド「移動 カメラ 100 100」は、画面上の基準座標(画面の左上頂点の座標)を[x=0,y=0]から[x=100,y=100]へと変更します。
      これによって、画面上のあらゆる個体は、既定のx・y座標にそれぞれ-100を加えた座標へと移動するように見えます。
      これは、カメラが描画する座標(絶対座標)からカメラの移動を見るといずれも+100の移動となり、カメラから絶対座標の移動を見るといずれも-100の移動となるという「相対変化」です。
      「個体操作は相手を動かし、カメラ操作は自分が動く」とも言えます。
    • カメラ操作コマンドは、実際に移動するのがカメラのみであるため、個体が配置を変更することなく一気に移動するように見せることができます。
      複数の移動や拡大を連続させての振動など、個体単体への効果適用では難しい演出も可能になります。