Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Lua マニュアル概要

ごきげんよう。ここからは少しだけ歯ごたえのある領域――Lua の世界へご案内いたしますわ。 DSL だけでは手の届かない「数百件の単語を一気に流し込む」「凝った条件分岐でおしゃべりを組み立てる」、 そんな野心的な望みを叶えるのが、この章の役目ですの。フンッ、別に怖がる必要なんてありませんわよ。 わたくしが最短距離でお導きいたしますから、さあ参りましょう。


Pasta では、Pasta DSL(.pasta ファイル)の下層に Lua ランタイムが存在する。DSL のシーンや単語定義は 内部的に Lua コードへ変換(トランスパイル)されて実行されるため、Lua を直接書くことで、DSL の宣言的な 記法だけでは表現しにくい処理――ループ・条件分岐・外部データ読み込み・カスタムイベント処理――を実装できる。

この章群が対象とするのは次の3領域である。

  • scripts/ 配下のカスタム Lua スクリプト: ゴーストディレクトリ直下の scripts/ に置く。main.lua が エントリーポイントとして読み込まれ、シーン関数・単語定義・イベントハンドラ等をセットアップする。
  • pasta_scripts/ 配下の標準ランタイムスクリプト: pasta.dll が起動時に自己展開するエンジン同梱スクリプト。 通常は触らないが、scripts/ に同名ファイルを置けば動作を上書きできる。
  • Pasta DSL 内の ```lua ``` ブロック: .pasta ファイル中に埋め込む Lua コード。シーン関数として動作する。

対象 Lua 方言: LuaJIT 2.1

Pasta ランタイムが採用する Lua 方言は LuaJIT 2.1(言語仕様は Lua 5.1 系に相当)である。 これは本マニュアル全体で前提となる重要事項なので、最初に明示しておく。

  • 利用できる言語機能・標準ライブラリは Lua 5.1 をベースとし、LuaJIT 独自の拡張(一部の Lua 5.2 機能の バックポート、gotoffi ライブラリ等)が加わる。
  • Lua 5.2 / 5.3 / 5.4 / 5.5 系の新機能(整数型の分離、<close> 変数、新しいビット演算子など)は そのままでは使えない。学習やリファレンス参照の際は、必ず Lua 5.1 / LuaJIT に対応した資料を見ること。 版の離れた Lua 5.5 系の言語リファレンスは、方言が一致しないため案内しない。

外部の言語リファレンスは本マニュアルに取り込まず、リンク参照のみとする。具体的なリンク先は Lua の基礎外部リンク集 にまとめてある。

この章群の歩き方

各章は次の順序で読み進めると理解しやすい。

内容
Lua の基礎LuaJIT 2.1(Lua 5.1 系)の最低限の文法と、外部リファレンスへの入口
公開モジュール API@pasta_* 等、ランタイムが公開する各モジュールの API と試せる例
scripts/ の記述パターンシーン関数・イベントハンドラ登録・単語一括投入などの定型
DSL と Lua の使い分けどちらで書くべきかの判断基準

肩慣らしはこのくらいにしておきましょう。理屈をこねるより、手を動かしたほうが早いですわ。 まずは Lua という言語そのものに、軽く挨拶してまいりましょう。さあ、熱く参りますわよ!