【Tree of Savior】pointingをVer1.2.0に更新

紹介ページ

いやぁ、再現性の無い不具合が出てやたらと時間がかかってしまった。やっぱりデバッグ環境が無いというのはかなりしんどい。実際にプログラミングにかかる時間は3倍以上に膨れ上がってるんじゃないだろうか?

愚痴はさておき、更新点について。

・外枠フレーム表示時、プレイヤー右クリックメニューが出るように修正
・外枠の分割設定、カラー変更機能の追加
・ポイント対象の詳細設定を追加
・距離設定をした際の非強調ポイントを、透過から×マーク表示に変更
・オプション画面を開いた状態でスロットセーブがうまくいかない不具合の修正
・パフォーマンス改善

外枠の分割とカラー変更については自分が使っていて、背景が暗いマップで外枠が見にくかったり、上下左右敵のいる方向が分かっても、範囲が広すぎて結局敵を探さないといけない、といった不満があったので実装してみた。

右クリックができない問題は以前の記事でも少し触れたんだけど、今日はちょっと詳しく書きたいと思う。(実際に書いたけど誰も分からないと思ったのでいっそのこと隠した。見たい人は反転してみてねw)

なぜ外枠フレームの表示をオンにしていると右クリックできなかったのかというと、外枠ポイントを格納するためのフレーム(透明な描画枠)を画面全体に表示していて、それが右クリックを吸収してしまっていたから(おそらく)。

修正案としては2つあって、画面全体を覆うフレームに右クリックを透過させるオプションを付与させるか、外枠ポイントを一つ一つのフレームとして生成するという方法があった。

最初の方法だと、ソースコードを一行追加するだけで解決するので最も簡単かつスマートだった。だけど、やり方が分からないし、そもそも存在するのかもわからなかった。(とらはむさんの助言から存在することは分かったんだけどやり方が分からなかったw)

次に、外枠ポイントを独立したフレームにするというのは、パフォーマンス上の問題があり見送っていた。具体的に説明すると、ポイント一つ一つの周期処理の中で、対応する外枠ポイントの検索を行う処理が入っていたんだけど、これは、今までだと外枠ポイント専用のプールから検索を行うようになっていた。つまり、敵が100対いたら100のプールから100回検索が発生する。

これを外枠ポイントを独立したフレームにした場合、敵が100対いたら200のプールから100回検索が発生するようになる。200のというのは、フレームを格納するための共通のプールを使うからで、実際はもっと多い。それが無くても一部乗算的に重くなるので望ましくない。

そもそも検索処理自体不要なんだけど、検索をさせないためにはポイントのフレームに、外枠ポイントのアドレスを保持させる必要があった。今まではその方法が分からなかったからこっちの修正も出来なかった。

しかし、『SetLinkObject()』という、用途不明の関数に試しに保存したら問題なく保存できたので、思い切って外枠ポイントを独立したフレームに変更した。これで大分軽くなったと思うけど、何のために用意された関数か分からないので結構心配。あと、共通の検索プールへの登録数が単純に2倍になったことで、他のアドオンの作り次第では負荷が増えることになると思う。

関係ないけど、最近FPSセーバーを導入した。今のバージョンは正常に動作していないようだったのでちょっと改造した。ここまで読んだ人に特別に公開したいと思う。
ダウンロード
更新すると、一部オプションが固定化される点に注意。作者が更新するまでのつなぎにどうぞ。

このアドオンの修正はこれでフィックスにしたいなぁ。ちょっと複雑化しすぎてしまい、これ以上の拡張はデバッグ環境抜きでは難しい……。

2 件のコメント:

  1. カザモリ@さうれ2017年11月4日 7:03

    修正おつ&ありですー!
    めちゃ便利なのでとても助かってます!
    後者もひっそり・・・

    返信削除
  2. ありがとうございます。
    TOSのプレイが少しでも楽しくなったのなら何よりです。

    返信削除

お気軽にどうぞ。

※他の方から見て不快になるもの、記事の内容から逸脱したものは削除することがあります。
 管理人からの返信は必ず行われるわけではありません。