「何か。」のゴースト製作記(12)(2002/03/21)
煮詰まってきたかなぁ……。細かいバグ取りも進んでるし。時々、震源の判らない例外が起こっててスクリプトがキャンセルされる以外は大きな問題も出てないです。
この時々起こるエラーについては、どうやらエラー位置を記録しようとするデバッグルーチンで落ちてるんではないか、とのデータもあるような……(^-^;) デバッガで待ち構えているときには一度も出ないので、原因不明。なんとかしてくれ!(笑)
まぁ例外自体は request() で握りつぶしてますけどね。
世間ではいざしらず、配布もとの掲示板では不安定だ、と決め付けられておりますが、俺に言わすと半分は、ゴーストコアが不安定なんだと思います。ちょっとしたメモリリークとかそんな些細な事でも本体ごと Halt してしまう事も……。
グローバルメモリまわりは不思議がいっぱい(^-^;)
仕様書も方針が不思議です。なんで時計合わせのタグが消えちゃったんだろう。¥a の時と同じようにやがては本体から落ちてしまうので、とりあえず ¥![] で対応されるまで待ってみようかと。それで駄目なら自力でやんないとなぁ……
メールチェック機能とかも分離してくれ、と言う要望がでたりもしてましたが、そうなると本体で処理する事なんて殆ど無くなっちゃうのよね。materia.exe が存在意義を無くしてしまいそうです。
そう言えば本体のタグでイベントが呼べるようになってました。しかしイベントスクリプトは呼べますが、イベントを起こすわけではないようで時計合わせやメールチェックとかしてくれません。……それに何の意味が?
SHIORI.DLL なら自分で何とかできるはず。外部アプリなら SSTP で呼べるはず。それこそ、本体がやる必要の無いことじゃ……。解せんのです。
少しわき道へ逸れて、デスクトップのアイコンを記憶して復元したりする機能を載せていますが、うまく動作しないので、呼び出せるのはもう少し先になりそう。位置は復元するのですが、何故か違うアイコンを置いてしまう場合あり。なんでだ。
ていうか、本体でやるよりこたつ≠ナやるかなあ……。
『バール乗っ取り』『ゴースト間チャット』『メニュー追い出し』は全部、フォームを使う仕事なので一つのアプリケーションに押し込んでしまいます。これをアクティブこたつトップ≠ニ命名。はい、世の中ナメてます(笑)
今は取り合えずメニューを外へと追い出してる最中。こたつ≠ヨログインするには、実行ファイルに対してゴーストのパスを引数に渡すと後は自動でやってくれます。
多重起動はミューテックスで監視していまして、既に存在していれば GetWindow API でハンドルを取得し WM_COPYDATA メッセージで引数を投げます。すると受けた側が、ログインするゴーストの認識とかモード変更の引継ぎなどを行います。この部分は完成。
最初はゴーストパスじゃなくてウィンドウハンドルとかゴースト名だったりしましたが……メニュー定義ファイルを直に読んだほうが楽か?と考えたのでゴーストパスに。
まぁ、ハンドルを渡した場合をフォローしておいて、SSTP でメニューデータを取得するのも良いかもとか考えてます。イベントの場合はただの文字列ですから好きに定義できますが、SSTP のリクエストを勝手に捏造できるんでしょうかね。要実験。
メニューを構築したら、その対処は……良く考えると、Operation雛≠ナはメニュー呼び出しもイベントで対応してるからただ単にそのようなタグを呼ぶだけけか? ユーザー独自イベントを呼ぶ方が良いかもしれません。結果的には同じコトですけど。
デュアルインターフェイス、てのもありか、そうか。
メニューの次は念願のバルーン乗っ取り。……具体的な仕様が全然決まってないΣ( ̄□ ̄;
独自のタグは規定せず、結局はさくらスクリプトをエミュレートする事には、しました。MAKOTO でのスクリプト処理が煩雑になった、と言うのが理由でして……。別スレッドにして単に文字列を渡すだけです。サーフェイスの変更要求などは、ですからイベントで変更すると思います。問題は、OnSurfaceChange などで無限ループにはまらないかが心配。
OnSurfaceChange なんか使わないんだから、リクエストを即座に握りつぶすべきかも。
バルーン乗っ取りでノウハウを蓄積すると、こたつにログインした複数ゴースト間でのチャット。コミュニケーションはたしかマンツーマンだったようで……この辺はその時、詳しく調べて必要無ければ何もしませんが。
あと…… HTML 風の簡易記述書式を制定してブラウザ機能も搭載したいな〜、なんて。この頃には完全に依存しあっていて、お互いに必須モジュールになっているでしょう。
あー、楽しいなっ。
最新版をアップロードしました。バージョン 0.2.9.84 です。正弓さんのシェルをマスターシェルにした事とか、変更ありますです。
一応、今度のはちゃんと起動するはず……です。なんか毎回、言ってますな(汗)
前述の通り、一部エラーが出たりしますけど……勝手に落ちたりしないみたいです。かなり強引にエラーを握り潰しますので(笑)
あ、こたつ≠ヘまだ配布できません。
ゴーストコアが安定してきたし、てことは仕様も固まりましたからリファレンス書くか……というより、イベントエディタ作ったほうが簡単かもしれません(^-^;) 基本的に汎用ゴースト否定派なので一般公開しないんだし。
つづく。