どうも一般人です。ゲームツールを触る一般人nizyuitiです。
某ツールを触りながら頭をひねっております。
CとWは……。息抜きにデバッグしようと思います……。
現在、細々と触っているツールが「Light.vn」というものです。
ホコグラ動かしたいけどテキストベースでスクリプトを書きたい、という欲望からこちらのツールを触り始めました。
ただ、独自言語というか、関数などが独特なので、割と悩みながら亀の歩みでスクリプトを書いているところです。
なので、今回はその悩みポイントを(ほぼ自分のために)かみ砕いてまとめよう! な内容になります。
知ってる人は「そんなことで悩むんだ……」と思ってくださいまし!
コマンド名について
ツールをダウンロードするとサンプルゲームが同梱されています。
で、エディタを開くと日本語が乱舞していることにびっくり。
なんと、コマンド名が日本語なのです。
英語できない、プログラミングわからない人からすると親近感が湧くかもしれないのですが、個人的にはtyotto-dasaiと思わざるを得なかったり。
がしかーし問題はありません。
コマンド名は総じて「英語で」書くことが出来るのです!
対応表とか細かいものはありませんが、公式wikiには「コマンド名(英語名)」といった記述があるので、それに対応する名前に置き換えれば問題なし!
コマンド入力補助的なボタンを使うと日本語コマンド名で挿入されるので、逐次変換は必要なのですが。
……という理由で当方のスクリプトも日本語と英語のコマンド名が入り混じった状態です。
でも動く。ちょっと怖いけどすごい。
思ったより英語がないスクショ……。
「~」の意味
コマンド冒頭によく出てくるへにょ記号。
要するに「ここからコマンド」という合図らしいです。
文字
コマンド
文字
という順番であれば
文字
~コマンド
文字
という書き方になるかんじ。
……のだけれど、マクロ内でスクリプトを呼び出すときに「~」を付けると呼び出されなかったりする?
気がするので、ちょっと謎が多いところ。
でもコマンド系で困ったら「~」を取ったりつけたりするのもありだと思われます。
「スクリプト」「栞」「マクロ」「コマンドマクロ」
言葉がややこしい選手権。
●スクリプト
テキストファイルに記述されているコマンドなどをひとまとめにしたもの。のはず。
もちろんそのテキストファイルにはシナリオも記述されています。
スクリプト=ファイルという認識でも良いかもしれないです。
コマンドはテキストファイル以外にLuaという拡張子で書けるらしいのですが、調べていないのもあるので今回は割愛。
●栞(bookmark)
スクリプトのジャンプ先のこと。
名前が名前なので分かりにくいのですが、個人的には関数のようなものだと思っています。
定義するときは
栞 栞名 引数があれば引数名
~コマンド
~スクリプト終了
……と記述するので、「そこは栞終了でもよかったのでは?」と思わなくもない。
呼び出すときは
~スクリプト スクリプトのパス/hoge.txt 栞名 引数があれば引数名
……と記述するので、栞という単語は他のコマンド名にはあまり出てこないです。
スクリプトの中の栞だからそうなのかもしれない。
ということは、栞名を記述しなければ手続き型のごとく上から実行するってことなのかも。
もちろん変数を引数にもできるのですが、ここも悩みポイントだったので詳しくは後述。
●マクロ(macro)/コマンドマクロ(commandMacro)
スクリプトを簡単に呼び出す自作コマンドのこと。
マクロという名前はティラノにもありましたね。あの時はお世話になりました。
違いが今ひとつわかっていないのですが、マクロは正規表現が使えて、コマンドマクロは使えない、という認識です。
というかwikiに書かれている説明からしても、めちゃくちゃ大きな違いはない気が。
あと、コマンドマクロのスクリプトを呼び出しするとき、冒頭に「~」は付けないとかの違い?
(マクロで「~」つけても呼び出されなかった気がするので、そのへんちょっとよくわかってないです)
マクロ マクロ名 スクリプトのパス/hoge.txt 栞名 引数があれば引数
のような書き方が基本。
毎回スクリプトでファイルを呼び出すとスペルミスなんかが怖いので、マクロは作っておくと便利です。
「変数」「全域変数」「臨時全域変数」「システム変数」
毎度悩ましい変数たちのメモ。
●変数(var)
ただの変数ちゃん。型はないです。
ダブルクォーテーションで囲うと文字列、それ以外は数値扱い?
どうやら数値はインクリメントもできる様子。ティラノも多分出来たよ!
定義するときはあまり問題はないのですが、参照するときが結構ハマりました。
テキスト(セリフなど)の記述で使う場合は{{}}で囲い、
コマンドの記述で使う場合は()で囲う必要がある、とのこと。
裸の変数名から直接参照はできないようなのです……。
間違えないようにしませう。
あと、単に定義しただけでは保存されません。
ゲーム終了時に消されます。
保存したいときは「保存変数(datavar)」というコマンドで改めて保存する必要があるようです。
セーブデータごとの保存データが必要な時にはこれを使う感じかなと。
ちなみに栞の内部に記述された変数は、栞の外から参照できません。
他の栞もといスクリプトで使いたい場合は「全域変数」に設定する必要があります。
●全域変数(globalvar)/臨時全域変数(temp_globalvar)
要するにグローバル変数。
スクリプトまたいで参照したいときに定義する変数です。
変数名は種類問わず同じ名前を設定出来ないので注意!
通常変数で「tmp」と設定して全域変数で「tmp」という名前は使えないということです。
まあごっちゃになるので、同じ名前はなるたけ付けない方がいいはず。
あとこれは当方がアホだったのですが、スクリプト読み込むときに栞を指定したら栞の部分だけ読み込みます。
ので、スクリプト冒頭の栞の外に全域変数を定義しても読み込まれないので注意です!!!!
全域変数読み込み用の栞を作って読み込む、というのが今時点の最適解です。
臨時とそうじゃないものの違いは、保存できるか否かだと思います。
全域変数は保存コマンドがあるのですが、臨時はありません。臨時だもんね。
保存するまでもない一時的なものに関して使うときは臨時でいいのかなあという。
あと栞から栞に変数を渡すときには、通常変数から臨時に代入すれば参照できるので、そういう場合に使うのかなと。
●システム変数
名前の通りです。
ぶっちゃけまだ触ってませんが、基本的にめちゃくちゃ入れ替わり立ち替わりする変数ではないと思います。
コンフィグ画面とかいじるときには必要かも。
うっ……頭が……!
エディタについて
リアルタイムレビューで見れるので便利です。
F5を押すとその行からテストプレイが出来るのもチョー便利。
でもパソコンが結構唸ります。
当方のPCが貧弱ゥだからかもしれませんが……。
ちなみにwin10/i5の8GBです。ノートです。……メモリがやばいわよ!
現在はコマンドをwikiで探して、エディタで入力して、プレビューで表示されなくてヴァーしたりしてます。
使いこなせているとは言い難いですが、プレビュー機能がらくちんなのでVsCodeなんかを開くことなくそのまま突っ走ってます。
ダークテーマが欲しかったりしますが、探せばあったりするのかしらん。
ただ、複数タブでスクリプトを開けるのですが、タブA->タブB->タブAに戻ってCtrl+Zは出来ないです。
タブ移動した時点で、移動前のタブの処理を戻すことが出来ないので、その時は大人しくタブを閉じましょう。
保存されていないよ! と可愛らしいダイアログが出ますが、保存されたら死ぬんだよ!! と叫びながらNOを押します。
便利ですけど、万能ではないのでそこは注意したいところです。
しらべたいところ
マップ関係のコマンド。
あとCSVからテキストを読み込む方法。
多言語対応~というわけではないですが、別ファイルから読み込む方法に慣れたいなあと……。
あわよくばRPG的なものも作りたいのですが、現時点だとDB関係の実装が難しいのかなとか思ってます。
そのうちアップデートで変わるかもしれないですが。
あんまりよく調べてなかった時は、CSVの中身を配列にぶち込んでシステム変数とかなんやらに活用できないかなと思ってました。
今時点だとそういう使い方は出来なかったような気がします。
json読み込みは出来るようなので、もう少しその辺詳しくなったら色々考えたいと思います。
なんというか、配列の初期変数をさくっと定義したいというイメージです。
公式サイトやwikiにサポートdiscordへのリンクがあるので、そこで尋ねるのもありかなあとは思ってますヨ。
人に聞くよりまず自分で調べてみよう精神なので、まだそれらしい質問をしたことはないのですが。
基本が出来たらその先をいじいじしたいと思います。
……基本ってなんだろう。
会話ウィンドウとかメニュー画面自作は基本に入るのだろうか……。
とりあえずこんなかんじです。
マクロもまだ全然組めてないのですが、そろそろ会話部分は仕上げたいところ。
今回とある理由でだらだらしてらんねえとおしりぺんぺんしてるとこなので、当社比意識高めで頑張ります。
クリエイターズ文化祭、実はドンピシャで予定被ったので、スマホでちょろっと会場見たりした程度なのですが、ちゃんと回りたかったなあともだもだもだ。
ソフトとかは目ざとくDLしてるので、ちゃんと遊びたいです。
周りに創作してる人がいないのは気が楽な分、緩み切ってしまうのがデメリットですね。
そしてハロウィンだけど何もしてません。
去年も何もしてないので大丈夫です!!!
もう今年も終わりそうですけど、毛虫のように生きていきまっせ。
ではでは。