NScriptしか知らない人向けのLua講座に挑戦してみる。(仮原稿)

NScriptしか学んでこなかった人のためのLua入門を作ってみようと思います。

NScriptには命令しかない。Luaはそうではない。

NScripterの一番最初の設計を想像してみましょう。主要な命令は ld, cl, bg, print, bgm くらいでした。実は最初期のNScripterには lsp すらありません。ただし、この時点でNScriptの思想はすでに固まっていました。
スクリプトとは命令の塊である」
何を今更、と言う向きもあるかと思いますが、たとえば何故現在の背景画像のファイル名を取得する命令がないんだろう、とか、背景画像のサイズを取得する命令がないんだろう、とか、端的に言うと「○○を調査する命令」がないんだろうか、と言う疑問が今のNScriptには常につきまといます。
これは目的からすれば当然です。NScripterでノベルを開発する人は、自分で素材を集めたり作っていたりするはずです。そんな人が作るのですから、素材の大きさだのなんだのは自明、調べる必要すらないものなのです。

開発者「背景画像のサイズを知りたいんだが……」
NScripter「そんなのエクスプローラーで自分で調べろよ」

この思想があるため、NScripterの命令はLuaでも実装されている「返り値」を持ちません。何かの命令を実行した時に、それが成功したかどうかはわからないのです。成功したものとして次の命令をどんどん投げていくしかないのです。(もっとも、失敗していればNScripterが止まっているでしょうから、成否はユーザーにとって明白です。そしてそれは、開発者にとって敗北です。バグ入りをリリースしてしまった!)

命令するだけじゃなく、状態を知りたい

こういった情報を知りたければ、あらかじめ変数に保存して、それを本来の命令に与えるしかありませんでした。