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 機能の
バックポート、
goto、ffiライブラリ等)が加わる。 - 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 という言語そのものに、軽く挨拶してまいりましょう。さあ、熱く参りますわよ!