
プロセス間通信を実装する
今日はすごく暑いなあ。気温は28度くらいらしい。まあただ湿度はそれほど高くないので耐えられないことはない。週間予報をみると、月曜日は13度まで落ちるらしい。すごい寒暖差だ。季節の変わり目なのだろうか。まあもう乾季には確実にはいっていると思うが。こういうのをみると、体力がないとまいっちゃうんだろうなあ。私の知人がお寺の事務員をしているのだが、やはり季節の変わり目でお葬式が多いらしい。皆さんも健康には気をつけてください。
なんかもうあきらかにエバークエストの話ではないのだが、エバークエストの話なのが恐ろしい。Macroquest2は起動するエバークエストのクライアントごとにインスタンスを生成する。そのインスタンスは基本的に完全に独立していて、インスタンス同士でデータを共有したりやりとりすることはできない。通信はエバークエストのゲーム内で行う。tellとかsayとかそういうプリミティブなものだ。ただ、それだと毎回サーバを経由して遅いし、やりとりできるデータも限定的で不便なので、EQBCSと呼ばれるデータ交換用のサーバを立ち上げ、それを通じてローカルでやりとりができるようになっている。例えばEQBCSの通信を前提につくられたPluginでMQ2Netbotsというのがというのがあり、EQBCSに接続したキャラクターのHPやMana、バフの状況などもろもろの情報を他のインスタンスから参照できる仕組みを用意している。
E3の上で自動戦闘を作った時には、グループ内で、各メンバーが今戦っているのか、それともなにもせずに立っているのかがわからず苦労した。今回E4ではインスタンス間の通信を実装しようと思う。とは言え、プラグインではなくマクロ上で実装するため速度はサーバを経由するよりは早いものの、それでもかなり遅い。とは言え、なにもないよりはずうっとましだと思う。
まだテストしていない。これを作るにあたり、連想配列も作った。
使ったのは結局イベントだ。イベントは反応が遅いので、あまりたくさんのデータを他のインスタンスに送ることができない。ただ、これでアシストやフォローがきちんとおこなえているかどうかを指示を出す側から確認することができる。
進捗は今はいままで自分がつくってきたマクロを移植している。コードを読み直すとちょっと前の自分のコードですら、結構冗長な表現が多い。ついでに使わなくなった機能は移植しないことにしようかなと思っている。まあでも一個ずつ作るのではなくて、薄く広く作ってすくなくともサブグループで普通に使えるようにもっていくのがいいのかもしれないなあ。