2017年9月24日日曜日

IFFとトリガー、そしてちょっとだけメイド養成のお話。

まず最初に書いておくと、私のリポジトリはここな。
リトルメイドの移植版を名乗ってはいる。

で。。

今取り掛かっている作業なんだけど、IFFとトリガーの一新なのね。
IFFっつーのは簡単に言うと、Mobの敵対設定を変更できる機能で、従来通り本でメイドさんを右クリックで設定できる。
これ、管理方法がオーナーのUUID別で、もともとサーバ・クライアントで別々の処理をしていたんだけど、1.10.2に対応するにあたってちょっと注意が必要になった。詳しいことはこのissueをみていただきたい。
要するに、クライアントだから使用者は一人だろう、と胡坐をかけなくなったというわけだ。

それに対応する変更はとうに済んでいるんだけど、ここで一つ思い出した。

たしかIFFには武器トリガーの設定も同時に保存されるんだよな…
ということは、武器トリガーの設定もユーザ単位で保存されるというわけだ。

それって、今後の開発方針としてはちょっと、まずいことになるのでは…?

将来的に、メイドREは個別に能力を育成するシステムを構成しようと思っていて、これが武器トリガーにもひじょーに深く関わってくることになる。具体的には、ダイヤのソードやエンチャント付きの矢はある程度のレベルにならないと使えない…とか。
そうなると、ユーザ単位でトリガー設定が保存されるのは非常によろしくない。

というわけで、コミットがない裏で、今は武器トリガー設定を「メイド単位」にしてNBTに書き込むように変更中である。
そうなるとIFF設定も、メイド単位で保存する必要が出てくるな。さあ大変。
問題は、それでデータサイズがどのくらい増えるかだが…タグ数抑えた方がいいのかなあ。

なにがめんどくさいかって、「もともとトリガーとして認識されるアイテムがトリガー設定に重複して登録される」ということが、現状できてしまうので、この無駄を防ぐ方法が必要になる。育成システムの概形がまだイメージできていないので、この部分をどう実装するか全く見えてこない。同様の理由で、IFFの移行も、元々敵対であるエネミーを敵対として重複登録しないようにする必要がある。もっとも、こちらはEntityのListが種類別にstatic参照できるので、さして判断機構の制作は難しくないが…。

なんか、すごく長い道な気がしてきたぞ。

基本的に、コンパイル通らない状態ではコミットしないようにしているので、今回ばかりは一度の変更が結構大きくなってしまう。
なんせ、今まで使っていた機構が一切使えなくなるんだからしょうがない。

あるいはベースの親実装と末端の子実装を分けて、細かくコミットした方がいいかなー?

0 件のコメント:

コメントを投稿