吉里吉里用のVisual Studio Codeプラグインを作った

Visual Studio Code用の拡張機能を作りました。
TJS用とKAG/KAGEX用があります。

TJS : プラグイン 説明書
KAG/KAGEX : プラグイン 説明書

今のところ以下の機能が使えます。

1.シンタックスハイライト

tjsのソースコードやタグを色分け表示できます。

2.定義へジャンプ・定義をここに表示

クラス、関数、変数やマクロの定義などにジャンプできます。
この機能を使うにはctagsとctagsxを入れる必要があります。詳しくは説明書を見てください。

※colorRectの定義を表示しているところ

3.リファレンスパレット

クラス名やタグ名からリファレンスを検索できます。

4.スニペット

forやfunctionなどのスニペットが使えます。

吉里吉里のバージョンを調べる

吉里吉里の質問をする時は使用している吉里吉里のバージョンを最初に伝えましょう。
単に吉里吉里といっても吉里吉里2安定版/吉里吉里2開発版と吉里吉里Zの各種バージョンで様々な違いがあります。
さらにKAG3/KAGEX2/KAGEX3などKAGのバージョンの違いがあります。
これらを書かない場合、バージョンを質問し返すのが面倒なためにスルーされる確率が上がります。

吉里吉里のバージョン

吉里吉里を起動してCtrl+F12を押すと以下のような画面が表示されます。
一番最初の行の「吉里吉里[きりきり] 2 実行コア version 2.31.2012.831 ( TJS version 2.4.28 )」が吉里吉里のバージョンになります。
自分の吉里吉里の同じ部分をコピーして送れば大体わかります。
krkr-version

KAGのバージョン

KAGのバージョンは簡単に調べる方法がありません。
しかし最後に更新されたのが5年前になるので普通は最新版だと思います。
KAGとだけ分かれば十分です。

KAGEXの場合は以下の3つのどこからダウンロードしたかでバージョンが変わります。
kag3ex3が最新版です。自分がどれを使っているかくらいは覚えておきましょう。
https://sv.kikyou.info/svn/kirikiri2/branches/kag3ex3/
https://sv.kikyou.info/svn/kirikiri2/branches/kag3ex2/
https://sv.kikyou.info/svn/kirikiri2/branches/kag3ex1/

吉里吉里でフォルダ/アーカイブの選択を省略する方法

吉里吉里を普通に起動すると以下のようなウィンドウが表示されます。
フォルダ/アーカイブの選択

ゲーム開発中は、この画面でプロジェクトフォルダを選択してOKをクリックしてゲームを起動します。
起動するたびに毎回選択するのは面倒です。
自動的にプロジェクトフォルダを選択する方法を紹介します。
2つあるので好きな方を使ってください。

方法1.フォルダ名をdataにする

プロジェクトフォルダをdataという名前にして、krkr.exeと同じ場所に置きます。
そうするとdataフォルダを自動的に選択してゲームを起動してくれます。

dataの代わりにcontent-dataという名前でも大丈夫です。
好きな方を使ってください。

方法2.コマンドライン引数を使う

フォルダの名前を変えずに「コマンドライン引数」でも設定できます。
実際に以下の手順でコマンド引数を指定できます。

1.krkr.exeを右クリックしてショートカットを作成します。

2.作成されたショートカットを右クリックしてプロパティを開きます。

3.ショートカットタブのリンク先の欄に、krkr.eXeの場所が書かれています。
その直後に半角スペースを付けて、さらに””で囲んだプロジェクトフォルダのパスを書き込みます。

下の画像の赤矢印の部分です。
ここでは”F:\project”フォルダをプロジェクトフォルダとして使っています。
shortcut-property

あとはOKをクリックして、設定したショートカットをダブルクリックすればゲームが起動します。

KAGのintrandomを使ってはならない

吉里吉里2/KAG3のintrandomは簡単に乱数が使えて便利ですが、デフォルトの状態ではバグがあります。例えば「@eval exp=”f.乱数 = intrandom(0, 5)”」とするとf.乱数は0以上5以下の数値になるはずですが、非常に稀に6になってしまいます。
これはtjsのMath.randomがバグっているためですが、吉里吉里2は既にメンテナンスされていないので多分修正されません。ということで自分で直しましょう。以下のスクリプトをOverride.tjsかAfterinit.tjsにコピーしておけば直ります。

// 0以上1未満の乱数を返す(Math.RandomGeneratorを使うように修正)
Math.random = function() {
    if (Math.random.staticGenerator === void) {
        Math.setSeed();
    }
    return Math.random.staticGenerator.random();
};
Math.random.staticGenerator = void;

// Math.randomのシードを設定 
Math.setSeed = function(seed) {
    if (seed === void) seed = System.getTickCount();
    if (Math.random.staticGenerator === void) {
        Math.random.staticGenerator = new Math.RandomGenerator(seed);
    } else {
        Math.random.staticGenerator.randomize(seed);
    }
};

Math.randomをMath.RandomGeneratorを使って計算する形に修正しています。Math.randomが直ればそれを使っているintrandomの動作も直ります。

実行中のファイルと行番号を表示

吉里吉里のキャプションに実行中のksファイル名と行番号を表示できます。こちらも開発中用の機能。
currentfilde-indicater
※first.ks(13)の部分

以下のスクリプトをafterinit.tjsにコピーするだけです。KAGとKAGEXどちらでも使えます。

kag.mainConductor.onTag_org = kag.mainConductor.onTag;
kag.mainConductor.onTag = function() {
	kag.caption = System.title + @" [${curStorage}(${curLine})]";
	return onTag_org(...);
} incontextof kag.mainConductor;
kag.extraConductor.onTag_org = kag.extraConductor.onTag;
kag.extraConductor.onTag = kag.mainConductor.onTag incontextof kag.extraConductor;

実行中のシナリオファイルを開くプラグイン

吉里吉里実行中に現在のksファイルをShift+Sで開くプラグインです。

ダウンロード

KAG/KAGEXどちらでも使えます。ゲーム製作中は結構便利。

秀丸、サクラエディタ、TeraPadなど対応しているテキストエディタなら実行中の行までジャンプします。
対応してほしいエディタがあればコメント欄まで。かぐや姫Studio、KKDEは行指定で開く機能がないので無理です。

windows8でquakeを使うとバグるやつ

Windows8で吉里吉里/KAGの[quake]タグを使うとフルスクリーン時に画面が乱れます。(以前の記事参照)

これは吉里吉里設定ツールで「フルスクリーン切り替え方法」の部分を”ddraw”から”cds”に変更すると防げるようです。詳しいことは調べていませんがお手軽に直せるので設定してしまってもいいかもしれません。

ゲームにエンジン設定ツールが同梱されていればプレイヤー側でも変更できます。フルスクリーンで遊ぶとおかしくなる場合はお試しください。