スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

カテゴリ : スポンサー広告

skn_MouseGesture更新 ver. 1.01

ダウンロードはこちら

skn_MouseGestureプラグインをバージョンアップしました。

以下変更点。

・KAGEX用のラッパクラスを同梱
TJSを使わずとも[rclick]と同じようにタグから制御できるようになります。
右クリック動作との共存、栞への保存などが自動的に行われます。

続きを閉じる▲

スポンサーサイト

タグ : 吉里吉里 KAGEX プラグイン

カテゴリ : 雑記

吉里吉里/KAGEX 単一行エディッタ拡張 SKN_EditEx

ダウンロード
KAGEXの単一行エディッタを拡張します。

キャレットやハイライトの色を変えたりプレースホルダーを指定したりできます。
ついでにパスワード入力の機能がタグから使えるようになります。

editex_example.png

続きを閉じる▲

タグ : 吉里吉里 KAGEX プラグイン

カテゴリ : プラグイン配布

吉里吉里/KAGEX 選択肢拡張 SKN_SelectAction

ダウンロード

KAGEXの選択肢を拡張します。
選択肢の表示/消去にアクションが使えるようになります。

seladd, select タグなどで表示する選択肢を動かしながら表示したりできます。
現在のところフェードとスクロールがテンプレとして準備されているので簡単に使えます。
とりあえず同梱のサンプルを実行すれば何が出来るのかは大方わかります。

自分でアクション定義すれば他にも色々動かせます。
※ 選択肢ボタンのクラスはAffineLayerクラスを継承していないのでrotate や zoom などは使えません。

単純なフェードは selopt タグの fadetime 属性を指定することでもできますが、このプラグインの type=fade の方を使うことをおすすめします。
※ fadetime 属性だとスキップできなくてイラッとします。

使い方は同梱の説明書などを見てください。

↓横からスクロールして表示の例
skn_selectaction.png

SKNアクション拡張プラグインが必須です。
必要なファイルは同梱されています。別途ダウンロードする必要はありません。

続きを閉じる▲

タグ : 吉里吉里 KAGEX プラグイン

カテゴリ : プラグイン配布

skn_ActionEx更新 ver. 1.03

ダウンロードはこちら

skn_ActionExプラグインをバージョンアップしました。

バグフィックス版です。機能的には変更ありません。

タグ : 吉里吉里 プラグイン

カテゴリ : 雑記

skn_ActionEx更新 ver. 1.01

ダウンロードはこちら

skn_ActionExプラグインをバージョンアップしました。

以下変更点。
・スキップ機能を追加しました。
TJSで使う用です。単体ではあまり意味はありません。

タグ : 吉里吉里 プラグイン

カテゴリ : 雑記

TJSでKAGのタグを実行する(kag.tagHandlers)

TJSでKAGのタグを実行する方法。
kag.tagHandlers編。

基本的にはkag.tagHandlersにタグの実装が入っています。
コンダクタからもkag.tagHandlersが呼び出されています。
@iscript
// image タグを layer=0 storage=image.png visible=true で呼び出してみる。
kag.tagHandlers.image(%["layer" => "0""storage" => "image""visible"=>"true"]);
@endscript
属性は引数に辞書配列の形で指定します。
KAGでは属性の値は全て文字列の形になるので、ここでも文字列で指定することを推奨します(「"layer"=>0」 ではなく 「"layer"=>"0"」)。


ただしこの方法では使えないタグもあります。

kag.tagHandlersに存在しないタグは使えません。
[macro][endmacro][if][else][elsif][endif][ignore][endignore][iscript][endscript][emb][erasemacro][jump][call][return]
これらは特殊な処理を行うのでkag.tagHanlersからは使えません。
※使う方法はまた今度紹介します。

[wait][wt]などのウェイトが入るタグも使えません。
KAGでウェイトを入れる、というのはコンダクタの実行を一時停止するということでした。
kag.tagHandlersから直接呼び出しても、コンダクタの動作には影響を与えません。
ウェイトを入れる(= コンダクタの実行を一時停止する)にはコンダクタを通してタグを使う必要があります。
※この方法もまた今度紹介します。

時間をおいてTJSを実行するには全く別の方法を使います。
KAGとTJSは全く別物です。
[wait]などKAGの機能を使ってTJSの動作は止めることはできないので注意してください。
@iscript
System.inform("てすと");
// ここで3秒待ちたい、というときには[wait]などは使えません。
// Timer などのKAGとは別の機能を使わなければなりません。
System.inform("3秒経ちました");
@endscript

続きを閉じる▲

タグ : 吉里吉里 TJS KAG KAGEX

カテゴリ : TJS

jump と call

[jump](KAGEXでは[next])とか[call]とか右クリックサブルーチンとかの話。

jumpタグ
シナリオの実行位置を変更します。
昨日のコンダクタの話でいうと「次のタグを探す」の探す位置を指定したラベルの位置に変更しています。
TJSだとkag.processを使っても同じことが出来ます。
kag.processでは[s]や次のタグがなかったなどの理由でコンダクタが止まっていた場合、コンダクタを再開する働きもします。

callタグ
基本的には[jump]と同じです。
ただし[return]タグを使うと[call]タグの位置に戻ってくることができます。
これは何をしているかというと、[call]タグを実行する時にコンダクタがその場所を記録しておきます。
そして[return]でその記録した位置にジャンプで戻り、使った記録を削除します。
なので[call]と[return]の数が合わないと、その記録情報が無かったり([return]が多い)、記録情報が使われずに残ってしまったり([return]が足りない)して困ったことになります。

右クリックでcall
[rclick]を使うと右クリックの動作を設定することができます。
jump=true のときには通常の[jump]タグと同じような動作ですが、 call=true のときには[call]とはちょっと違った動作をします。
call=true のときに右クリックされると、 storage, target 属性に指定された位置へシナリオ実行位置を変更します。
この変更には、[call]や[jump]とは異なり、通常のコンダクタ(kag.mainConductor)は使われません。通常のコンダクタは右クリックされた位置で一時停止しておいて、右クリックサブルーチン用のコンダクタ(kag.extraConductor)を使用します。
右クリック用のコンダクタの動作自体は通常のコンダクタとほぼ同じです。
[rclick]で指定された位置からシナリオ実行を開始します。そして[rclick]のcallと対応する[return]で停止して、一時停止していた通常のコンダクタの実行を再開します。

このことは普段は意識する必要はありませんが、右クリックサブルーチン内と外で使われるコンダクタが異なるために、困ることもあります。
右クリックサブルーチンから既読スキップはその例です。

続きを閉じる▲

タグ : 吉里吉里 KAGEX KAG TJS

カテゴリ : TJS

簡単なコンダクタの話

TJSで書かれたKAGはKAGスクリプトを解析して実行しなければなりません。
その解析、実行を行うのがコンダクタです。以下の話はKAGEXでも共通です。


コンダクタの中身はConductor.tjsに書かれています。
コンダクタは「次のタグを探す」→「見つけたタグを実行」を延々と繰り返しています。

KAGスクリプトでコンダクタがやっていることのイメージを書くと
*START
; 次のタグを探す
; 見つけたタグを実行
@jump target=*START

*END
; 指定時間後に*STARTにジャンプする命令
@s
こんな感じです。実際にはコメント部分で色々とやってくれています。
*ENDはウェイトを入れるタグを実行するときにジャンプしてくるラベルです。
KAGの「ウェイト」というのはコンダクタの実行を一時停止することです。
指定時間後にまた*STARTから実行再開します。

例えばfirst.ksに以下のようなスクリプトを書いて実行します。
[wait time=200]
*start|スタート
[cm]
こんにちは。
最初のタグは[wait]です。
初っ端からウェイトが入ったので*ENDにジャンプして200ms後に*STARTにジャンプします。
次のタグは[cm]です。ラベルの処理はここでは説明しません。
[cm]でメッセージレイヤがクリアされました。
ウェイトはないのですぐに*STARTにジャンプ、次のタグを探します。
次のタグは「こ」です。もっと言うと[ch text="こ"]です。
文字は自動的に[ch]タグとして処理されるようになっています。
まずは「こ」をメッセージレイヤに表示します。
次にウェイトを入れます。ウェイトの時間は設定された文字表示速度です(デフォルト「普通」で30ms)。
なので*ENDに飛んで30ms後に*STARTにジャンプします。
おなじことを「ん」「に」「ち」「は」「。」について繰り返します。

「。」の次には何もタグがないので*ENDに飛んで、*STARTへはジャンプせずにそのまま終わりです。
ここでは[wait][cm][ch]タグしか出てきませんでしたが他のタグでも「探す」→「実行」を繰り返す部分は同じです。
※それぞれのタグの動作の中身は基本的にkag.tagHandlersにあります。

続きを閉じる▲

タグ : 吉里吉里 KAGEX KAG TJS

カテゴリ : TJS

吉里吉里2/KAG3って何ぞや

吉里吉里とかKAGとかTJSとか色々あるけどなんなの?という話とかいろいろ。


まとめ
吉里吉里リファレンスから引用↓。
「吉里吉里2は、JavaとJavaScriptににたスクリプト言語であるTJS2を用いていろいろな事をやるためのソフトです。」

それじゃあTJSって何?となると今度はTJSリファレンスから引用↓。
「TJS2 は、アプリケーションへの組み込みを目的に開発された、オブジェクト指向のスクリプト言語です。」

それじゃあKAGって何?となると今度はKAGリファレンスから引用↓。
「KAG は Kirikiri Adventure Game の略です。吉里吉里でアドベンチャーゲームやノベルゲームを作るためのスクリプトです。」


これだけで理解できればこれ以上読む必要なっしんぐ。

吉里吉里
とりあえず吉里吉里の本体そのもの(krkr.eXe)はADVを作るためのものではないです。
自分が知ってる限り、吉里吉里製かつADV以外のゲームはSTG、RPG、音ゲ、タイピング、パズルゲなどがあります。
なにゆえADVが多いかというとKAGが存在するおかげです。がKAGの話は後回しにしてもうちょっと吉里吉里本体の話。

吉里吉里はC++という名前のプログラミング言語で作られています。
プログラミング言語というのはコンピュータに命令するために使う言葉です。
身近な例で言うとKAGスクリプトもプログラミング言語のひとつだと思います。

吉里吉里はオープンソースなので吉里吉里自体もC++が使えればカスタマイズできます。
残念ながら今は無料で手に入る開発環境が存在しません。多分。あったら教えてください。
カスタマイズではなく機能拡張することもできます。
吉里吉里プラグインというやつです。拡張子が.dllになってる奴がこれです。
こちらもC++が使えるなら自分で作ることができます。
今はncbindなんていう便利なものがあるので楽チンです。

ついでに吉里吉里2の2って何やねんというと、10年くらい前?に吉里吉里というのがあったんです。
今は吉里吉里2しか使われないので吉里吉里で問題ありません。
吉里吉里3というのも現在開発中ですがいつ完成するのかは知りません。そのうち出来るでしょう。


TJS
んで吉里吉里ですが、これはTJS2というプログラミング言語で制御することができます。
TJS2の2ですが、やっぱり昔TJSというのがあったんでしょう。こちらもTJSだけで通じます。
TJS自体は吉里吉里以外でも使えます。やり方はTJSリファレンスに書いてます。吉里吉里以外で実用している例はちょっと知りませんが。
このTJSを使うと吉里吉里を使ってSTGだったりRPGだったりが作れるわけです。
またついでになりますが、吉里吉里を制御するのにTJS以外のプログラミング言語も使えます。例としてJavaScriptやSquirrelが使えるようになる吉里吉里プラグインがレポジトリに転がってます。

んで、TJSはなかなか難しいです。C++と比較すればかなりマシですが。
勉強したい人は買うなりウェブで頑張るなりすればいいと思います。
ここで、TJSを使わなくてもなんとかするためにKAGというものが存在します。


KAG
KAGは吉里吉里でADVをつくるためのシステムです。
TJSを使って作られています。systemフォルダに入っているファイルが全部それです。
正確にはKAG3の3ですがこれもどうでもいいです。
KAGはKAGスクリプトを読んで、吉里吉里をいい感じに動かしてくれます。
KAGスクリプトというのは、普段.ksファイルに書いてるあれです。

KAGはTJSを使って書かれているので、TJSが使えるならKAGをカスタマイズできます。
カスタマイズではなく機能拡張することもできます。
KAGプラグインというやつです。このブログに置いてあるスライダープラグインもKAGプラグインです。
先ほどの吉里吉里プラグインとは異なります。
吉里吉里プラグインはC++で吉里吉里の機能を拡張します。
KAGプラグインはTJSでKAGの機能を拡張します。
単にプラグインと言われたら、どちらなのかちょっと注意する必要があります。
まあ拡張子が.dllだったら吉里吉里プラグインですね。


KAGEX
ついでにKAGEXって何?という話。
KAGEXは吉里吉里でADVをつくるためのシステムです。
TJSを使って作られています。KAGを大幅に改造してほぼ別物になってしまったものです。
先ほどのKAGを使わず、代わりにKAGEXを使う事もできます。
今回はKAGEXの話は主題ではないのでここまで。



無駄話が多くて分かりづらい話になってしまいました。
とりあえず吉里吉里とKAGの違いが何となく分かってもらえれば。
KAGはTJSで作られたADV用システムです。それで吉里吉里を制御しています。
実際にはKAGのことを吉里吉里と言っていることもあったりします。



参考リンク
吉里吉里/KAGの特徴を理解しよう

続きを閉じる▲

タグ : 吉里吉里 KAG TJS

カテゴリ : 吉里吉里

最新記事
カテゴリ

openclose

記事一覧
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。