W.Deeの2003年8月の日記

kikyou.info»日記
最新月 : 2008年10月
2003年 [             3    4    5    6    7    8    9   10   11   12  ] 月
2004年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2005年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2006年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2007年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2008年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2009年 [   1    2    3    4    5    6    7    8    9   10   11       ] 月
前月の日記  次月の日記

2003年8月24日

吉里吉里@中国語

5月頃でしたが、簡体字中国語で動いている吉里吉里/KAG作品を見かけました。あー、実際に中国語でうごくんだなぁ、と感心。OSの「地域と言語のオプション」の所の「Unicode対応でないプログラムの言語」を中国語にしないと起動しませんでした (スクリプトファイルがUnicodeで記述されてないため)。

ウチで動かしてみたときのスクリーンショットがありますが、そもそもその作品自体が日本のいくつかのエロゲーの画像を使用していて著作権的に危なくて、のっけられません。

2003年8月18日

吉里吉里のイベントシステム

某所で CPU 使用率とイベント駆動に関して話が出ていたようですので、吉里吉里はそこらへんどうなのか、という話を。

吉里吉里それ自体はイベント駆動で動いています。状態ポーリング型のプログラミングは、吉里吉里1の頃は出来たのですが、吉里吉里2では出来なくなっています。

状態ポーリング・・・って言っても、「状態が変わった」(マウスのクリックを検出しただとかなんでもいいんですが) その結果、それによって何かアクションを起こす、ということならば、状態検出が自分のコード内にあるか無いかの違いはあるだろうけど、イベント駆動って言えるような。

吉里吉里2本体はイベントが発生しない限りは眠ってますので、CPU は不必要には使いません。

KAG3 は吉里吉里2上で動くアプリケーションですので、それ自体はイベント駆動型で書かれていますが、それが解釈するシナリオファイルは、手続き型で記述できるようになっています。

Windows 標準のタイマー精度に関してですが、吉里吉里2は Windows 標準の、あの不安定で不正確なタイマーは使っていません。タイマー専用のスレッドを作って、独自に高精度のタイマーを実装しています。

イベントキューも、Windows 標準のメッセージキューは利用していません。これは Windows 標準のメッセージキューがパフォーマンスが悪いからというよりは、吉里吉里用のイベントキューと Windows のメッセージキューを独立させる必要があったからです。そのため、Windows のメッセージキューだけを動かしたまま、吉里吉里のイベントキューを停止させるということが出来るようになっています。

イベント駆動指向で書く利点は、見かけ上の処理の複数同時実行がやりやすいということでしょうかね。複数同時実行をする方法としては、マルチスレッド動作にするという方法もありますが、こちらは排他処理や同期処理が煩雑になるので、自分はあまり好きではありません。

どこで複数同時実行してるのサ、ということですが、KAGなんかを見ますと、メインのシナリオは確かに現状では一本を走らせられるだけです。しかし、たとえばアニメーション制御なんかは、複数のレイヤごとのアニメーションがメインのシナリオとは別に独立して (さらにメインのシナリオとは並列に) 動作しますし、レイヤの自動移動をやりながらメインのシナリオを動かたり、雨や雪を降らせながら文字を表示したりトランジションをしたり、ということも割と簡単に出来るようになっています。

イベント駆動とオブジェクト指向は相性が良いので、TJS2 がオブジェクト指向のプログラミングスタイルをとれなかったら、かなり KAG なんかは記述が面倒になっていたなあ、と思います。KAG ではタイミング発生やシナリオの進行処理、状態管理はすべて BaseConductor というクラス内で請け負っていて、メインシナリオの進行を管理する Conductor や アニメーションの進行を管理する AnimationConductor はこれから派生しています。上層のクラスではイベント駆動に関連するタイミング制御の煩雑さなどは、あまり考慮しなくても良いようになっています。クラス階層についてはgutchie氏のページここのKAG内クラス階層図がわかりやすいです

まあ、ただ、「こういうプログラムはイベント駆動じゃなきゃならん」だとかいう「こうでなくてはならない」という議論は好きではないです。記述しやすいように記述すれば良いと思います。吉里吉里2がイベント駆動型でしか組めないのは、当初からそうだったから、としか今は言いようがありませんが・・・。

どうも Windows NT 系の タスクマネージャ (Win9x系は知りません) で出てくる CPU 使用率の数値は、なにかスレッドで処理を行ったとき、その処理が 1ms 未満で終わって OS に処理がもどっても、その時間を正確にカウント出来ない場合があるみたいです。時間管理をミリ秒単位でしか行ってないから・・・ですかね?正確に CPU 使用率を計りたい場合は、他のプログラムかなにかで優先度 idle のループを作って、そのループが一定時間内に回った数がどれほど変化するかとかで計るのが確実だと思います。

オフ会

で、17日はオフ会がありました。参加された方々、幹事を担当された秋人氏、お疲れ様でした。今回も多数の方々が参加され、ディープな交流が行われました。

時間の都合で一次会で私は退席させていただいたのですが、二次会も狂宴が続いたと聞き及んでいます。

次回も冬のコミケ最終日に併せて開催したいと思います。コミケ最終日にオフ会を行うにはいろいろと理由がありまして、「日・祝日だから」「その日全国から人が東京に集まるから、それに便乗して」「コミケ最終日でみなさんチョットおかしいから」ということです。同人サークルさんのみだとか、実際に作品を完成させた方のみが対象などということはありませんので、個人の方も含め、様々な方に参加していただきたいと思います。

吉里吉里 Ctrl + F12

デモしてるの見かけたらすかさず Ctrl + F12 ですね。覚えておきま。

オリジナリティ

やはり、オリジナリティを出したいという方の中には制作ツールを知られたくないという方もいらっしゃるでしょうから、そのような方はご一報くだされば、と思います。

C64

お疲れ様でした・・・。

今回は急遽 思いつきで ICONOCLASM さん の京 秋人氏のご尽力により、吉里吉里をご使用の出展サークルさんをリストアップしたのですが、やはりこちらで調べられるには限度があって、結構抜けがありました。リストの大部分の情報を提供したのは自分なので、抜けがあったのは秋人氏のせいってわけじゃないです。17日は、主に秋人氏と MIK氏と私で挨拶回りをしたわけなのですが、会場でハッと気づくと目の前に吉里吉里使用作品が!なんてことがありました。突撃挨拶を喰らった方、いきなりで申し訳ありませんでした。会場内の移動に予想以上に時間がかかり、挨拶に回れなかったところもあります。これも申し訳ありませんでした。また、いきなりの訪問にもかかわらず、貴重な出展作品をくださった方々、本当にありがとうございました。これから鑑賞させていただきたいと思います。

参加された皆様、本当にお疲れ様でした。

やはり吉里吉里を使用されている同人サークルさんや、これから吉里吉里で作品を作ろうとしている方にとっては 結構 価値の高い情報になりうるようですので、次回イベントでは他薦、自薦問わず、登録可能な形の CGI を用意し、早期に呼びかけを行いたいと思います。

吉里吉里を使用していただきありがとうございます。これからもよろしくお願い致します。

2003年8月7日

XP3 暗号化

著作権等の保護のために XP3 の暗号化への対応を望む声があることは承知しています。

更新履歴には書いてませんが、XP3 を吉里吉里本体と Releaser に XP3 アーカイブの暗号化に関する機能が追加されています。これについては DLL を作成して吉里吉里本体や Releaser に噛ませる必要があります。例はソースの /base/win32/plugin_kit/xp3filter にありますので適当に参照してください。暗号化方式については柔軟に変えられるようになっています。これについて、よりつっこんだお話しを聞きたい方は、IRC の #kirikiriirc で私を捕まえられれば聞けるかもしれません。

暗号化されたXP3は「暗号化された」だとか「どの暗号化方式で」のような情報は持ってない上に、拡張子はXP3のままで、ヘッダ構造にも変化ありませんからいいのやらわるいのやら。要するに吉里吉里本体もそれらを区別出来ませんから、他の暗号化方式のXP3と混ぜて使ったり、暗号化してないXP3と混ぜて使えないと言うことです。

暗号化ライブラリ

電子署名を実現するためにいろいろと暗号化ライブラリを探していたのですが、今回の用途にぴったりなのがありました。

libtomcrypt

で、これを使ってます。

キー・署名ツール

キー・署名ツールは公開鍵暗号を用いて、データとか吉里吉里本体とかに電子署名するためのツールです。

なんのためにそんな物が必要かというと、他人によるデータの「改ざん」や著作者以外の「なりすまし」をなんとか防ぐためです。特に吉里吉里がネットワーク対応になったときに、どこの馬のホネだか分からないデータを読み出そうとするのをこれで防げるかなーという考えです。まあ、そんなにピリピリしてもしょうがないなって気はしますけど。

署名をすることは出来ますが、現時点でこの署名を確認できる方法を、利用しやすい形で公開していないのでかなり無意味です。署名したところで吉里吉里本体にはその署名を確認する機能がついていません。これはのちのちつけます。

吉里吉里2 2.20

最近忙しいのですが。

もうそろそろ(といってもたぶん9月に入ってから) 2.20 を出そうかと思います。

前回のリリースが3/21ですから、現時点でも、もう 4ヶ月半たってるんですね。思えばやりたかったことの半分も出来てません。2.19代のβも、機能においてはあんまり目立った物はありませんね。