カテゴリー : 吉里吉里(KAG)

対戦画面インターフェース実装中

irgaly君がシステム側の各種ステータスにアクセスするインターフェースを準備してくれて、こちらもユーザーインターフェースの実装に取り掛かり始めています。 インターフェースとユーザーインターフェースでは指す物が違うので、ミーティング時には混乱しかけたりすることもあります(笑) 現時点では
  • ダメージ時のキャラマーカーアニメーション
  • ダメージ/回復時のHPゲージ処理とアニメーション(1Pのみ)
  • キャラクタコメントダイアログの出現アニメーションとメッセージ表示(1Pのみ)
が実装できました。 このゲージ、概念としてはそんなに難しいものではないのですがなかなか曲者で苦労しました……。 KAGLayerを親として持つオブジェクト配列で、HPのMAX値と現状値からゲージのチップ数を割り出してその差をアニメーションさせるメソッドを書いてあります。 アニメーションは出来るだけ負荷を減らすためにゲージアニメーション用のフレームタイマを1つ用意して、全てのチップをフレーム単位で処理させています。出来ればチップ単位でタイマを内包させたいので、プレイが出来る状態まで持ち込んで負荷に余裕があるようならオブジェクトの構造を変えようかと考えています。 もうすぐ2月も終わっちゃうのですが、3月の頭までに基本的なUIの内部処理や関数系は整えておきたいところ……。

KAGスクリプトのありかた

 吉里吉里を利用するといっても、TJSスクリプトを使用する、TJSですでに構築されたKAGスクリプトを記述する という二種類の方法がありますが、今回はKAGのお話です。 KAGはアドベンチャー、主にノベルゲーム用のフレームワークで、それに特化した機能を持っています。KAGスクリプトの言語形態もそれに合わせた形になっていますが、どうもこれがとっつきにくいようで、吉里吉里が難しいと言われる原因のひとつかもしれません。 加えるならば、恐らくスクリプト部分の記述量(というよりは要素の指定数)が他のシステムに比べて多いのと、トランジションやレイヤなどの概念の理解が必要になるためだと思われます。 しかし、”ノベルゲームを構成するどんな要素が必要になるか”から逆算して考えたら、吉里吉里に搭載されている機能もおのずと理解しやすい気がします。 ただ、ライターの観点からすると、スクリプトとはあくまで「演出指示」の領分であってほしいのも理解できます。脚本家にとっては自分の意図するとおり画面(ステージ)が動けばいいわけですから、出来るだけシンプルに、動きを指示できるような命令が理想でしょう。 となると、ライターからしたノベルゲームのスクリプトとは @image layer=”1″ storage=”kudryavka.jpg” top=”200″ left=”450″ opacity=”255″ visible=”true” とかいうものではなく、 @画面右側にクドを登場 が理想系なわけです。 まぁ実際、日本語は”何をするのか”より”何を言っているのか”が最初に来るため、こういう形には適しませんので、 @登場、クド。画面右側。 という形になりますが。 といってもこんなフレンドリーな言語がそうそうあるわけでもありません。それに、脚本家は実際にこのような指示を書いた後、細かな立ち位置や動きは練習を見て指示をだしていくわけで、結局細部の指定は後々必要になってくるのです。 となるとこれを解決するためにはただ単に簡単な言語ではなく、 1.汎用性が高く柔軟な基本システム 2.ユーザ定義命令(マクロ)の搭載 が必要になります。 これらがあるおかげで、ライターがおおざっぱな演出指示をシナリオに組み込み、その指示を実際に動かす部分はスクリプタがマクロによって解決する、という二段構造が可能なわけです。 予めスクリプタが @登場、{キャラクター名}、{位置} などの簡易言語をマクロで作っておき、ライターと相談しながら徐々に調整・拡張していけば、ライターはややこしい数値やレイヤ関連に忙殺されずに演出に専念できます。 シナリオはあくまでシナリオであるべきで、スクリプトの知識がない人がそれを見ても、どんな演出を意図しているのかが理解できるようなものであってほしいと思います。 そのためには簡易言語は必須だけれども、簡易言語だけではライターの演出要望に応えきれないために、汎用性の高い言語によるフレームワークが必要、ということです。 本来、TJS->KAGの時点でそれは既に解決されているんですが、さらにKAG->マクロ という層も用意されているあたり、さすがとしか言いようがありません。 まぁ、私が吉里吉里を好きな理由はそのような辺りです。 KAGの変数やラベルやマクロに2バイト文字、日本語が使えることも、シナリオスクリプトが脚本のように構成できる理由になりますし。 加えるとTJSが非常に扱いやすい言語であることも好きな理由なのですが、それはまた別のお話ということで。 ただ、今回の話はあくまでライターを主観に据えた”シナリオ”スクリプトのありかたであって、スクリプタからしたデータのありかたはまったく異なりますので(誤解を招かれないように)……。 ちなみにスルーしてきましたがクドに突っ込んじゃだめです。撫でてあげてください。

吉里吉里がオンライン対応?!

 Synthe、というサービスが開始されたようで、どうやら吉里吉里コアがSyntheのクライアントに組み込まれているようです。つまり、TJSを使用してオンラインゲームが作れるということだそうで! しかもライブラリによって3Dスプライトが利用できたりと、欲しかった機能が惜しげもなく詰め込まれているではないですか! 基本、ムービーが再生できないことや外部ファイルへのアクセスができない以外はKAGとTJSをサポートしているようです。あとは18禁NG、二次創作もNGだそうで。 3Dは現時点ではMaya、3dsMaxが対応、メタセコはだめだそうです。個人的にはShadeが早く対応して欲しいなぁ。 Syntheめっちゃ試したい……めっちゃ触りたい……x でもその前にリトレボを頑張ってきますっ。

レンダリング済みフォントで上部が切れてしまう問題

 吉里吉里のレンダリング済みフォント(マッピングフォント)で、一部のフォントが上半分ぶっちり切れてしまう問題にぶつかりました。レイヤーサイズとかlocateとか、ドツボにハマってdrawTextまで手を付けて色々試した挙句、原因はとても単純、行間であることが判明。 defstyleのlinespacingで適切な値を入れると直りました。ただし、一行目はやっぱりぶっちり切れたまま。二行目からのみ正しく表示されるので、 [r] ABC というように改行させて、@locateで位置を調整することに。 なんだか美しくない解決方法ですが、とりあえずこれで表示はできます。 誰かまともに直せる方法分かったら教えてくださいorz

吉里吉里でビデオが上下逆に表示される問題

 吉里吉里(KAG)にはビデオ再生の機能があるのですが、その設定をオーバーレイで行うとなぜかムービーが上下逆で表示されます。 ムービーの種類はWMV9エンコードのWMV。横は問題ないんですが、上下が逆で表示されてしまいます。なんでなんだろ。 ちなみに、オーバーレイではなくレイヤーで再生させると正常に表示されます。 これはバグなのか、それとも自分の指定が間違っているのか……。 うーん、謎だ。

吉里吉里のインライン画像(graph)を使ってみる

 フォントの演出を有効に使った作品というならやはりハリーポッターがメジャーな気がしますが、ノベゲーでは結構使われてますよね。 ということで、吉里吉里のインライン画像を使ってこれをやってみました。   まずはゲーム画面をキャプチャしてそれを背景にインライン画像作成。   フォントサイズや演出を調整して作ります。   で、1文字ずつバラします。   保存形式は背景透過のPNG24でOK。タグリファレンスには抜き色の   指定がありますがやっぱこれが一番綺麗。   スクリプトを書きます。
邪魔なのであとでマクロ化しておきましょうw でもどこでも使いそうにないから逆に無駄かなぁ。
  で、こうなります。   普通の文字と同じように表示されるので違和感はありません。   PNG24なのでフリンジも出ないし美しい。 そもそもインライン画像を作るのが面倒なのであまり使ったことが無かったのですが、これはなかなかいい機能ですよね。
graphタグで複数文字の指定が出来るとスクリプト的にも美しいんだけどなぁ。