提案:簡易シナリオ選択ダイアログの作成

Issue #421 resolved
req created an issue

シナリオの数が多くなってくるとシナリオ選択ダイアログも 重くなってくるので、簡易選択用のダイアログを作って それを設定ダイアログで切り替えられるようにしたらどうかと思いました。

例: 新しいビットマップ イメージ.jpg

設定ダイアログの詳細のシナリオのところにチェックボックスを1つと その簡易選択フラグが立っている場合は簡易選択用ダイアログ が立ち上がるようにしたらいいのではと思うのですがどうでしょうか。

Comments (12)

  1. k4nagatsuki repo owner

    ご提案ありがとうございます。

    シナリオ選択ダイアログが重くなってしまう問題は、以前からしばしば改善を試みていたのですが、決定的に軽くはならない状態です。理由は、「ここを省略すればよくなる」という所が見つけにくい(無い?)からです。

    シナリオの一覧を表示するまでには、いくつかの処理があります。

    1. フォルダからシナリオの一覧を取得する
    2. シナリオの情報を更新する
    3. シナリオ以外のフォルダの一覧を取得する
    4. ショートカットがある場合はたどる
    5. ソート
    6. 表示
      • 一覧表示でない場合は貼紙またはフォルダ内の一覧を描画する
      • 一覧表示の場合はツリーに追加する

    現状を測定してみたところ、このうち比較的重いのはツリーへの追加処理のようです。逆にツリーが表示されていない場合は、DBが構築されていれば、比較的ましな速度が出るようです。シナリオが1,000本あると情報の更新処理に時間がかかりますが、ツリーの速度に比べればウェイトは軽いです。

    となると、UIを簡略化しても効果はほとんど見込めないと思われます。そもそもツリーを表示しないという事であれば、一覧表示を使わなければいいだけですので、新しいダイアログを用意するほどの手間(これには今後の保守の手間も含まれます)はかけられません。どうしたものでしょうか。


    pull request #1597で問題のツリー更新処理に対して手許で少し工夫してみましたが(最新のテスト版をお試しください)、大量のシナリオがあるフォルダを開く場合など、少しましになっていると思います。

  2. 暗黒 騎士

    おぉ…もしかしてパーティメーカーの開発者の方でしょうか。

    テスト版、少し動作が機敏になった感じはしますが、昨日までのVerでは一覧同時表示でフォルダをクリックするとそのままの位置で展開されるのに対して、 このVerだとフォルダにあるシナリオ数次第でスクロールが下に吹っ飛ぶようになっているようです。

    貼り紙表示が極端に重いというのはしばしば聞きますが、どれぐらいになると重くなるんでしょうね?

    自分の環境ではPyのscenarioフォルダには200程度、そこからショートカットでリンクしているCWのscenarioフォルダには各50ほどでジャンル分けしたフォルダ合計1000シナリオぐらいありますが、重くなっているという感じはあまりないのでファイルの生成関係でなんかしらOSと競合が起こってるのかなと思っていました。

  3. k4nagatsuki repo owner

    このVerだとフォルダにあるシナリオ数次第でスクロールが下に吹っ飛ぶようになっているようです。

    書き忘れていましたが今回の改造の副作用です。どうもスクロールバー回りにツリーのパフォーマンス問題の根があるらしく、それが動かない状態で一覧の更新をする必要があり、そうすると最終的にスクロール位置がおかしくなってしまいます。できるだけ復元する事を試みましたが、上手くいかない場合があるようです。

    このトレードオフは考える必要があります。フォルダに数百件のシナリオがあると体感的に馬鹿にできない速度差が出るので、どちらを取るかなのですが……。

  4. req reporter

    パーティメーカーの者です。

    UIを簡略化しても効果はほとんど見込めないは了解しました。

    2.シナリオの情報を更新する

    は何を更新しているのですか?

  5. k4nagatsuki repo owner

    名前からピンと来てもよさそうなものなのに気が付かなくてすみません。パーティメーカーはかゆいところに手が届くいいツールです。

    何を更新しているのですか?

    • 新しいシナリオが追加されている
    • 同じファイル・フォルダでも中身が変わっている
    • シナリオが消滅している

    これらのチェックとDBの更新作業です。これは記憶装置とCPUの性能にもよると思いますが、シナリオが数千本あっても1~2秒程度で終わるようです。

    1~2秒というのは結構バカにならないので、辛いという意見が出てきたら更新作業を省略する(つまりDBからの情報だけ表示する)モードをつけた方がいいかもしれません。

  6. k4nagatsuki repo owner

    pull request #1598

    色々いじっていたらスクロールバーの問題を解決できました。

    ツリーそのものを更新処理中非表示にするとパフォーマンス問題が出なくなるのですが(再描画を抑止するだけでは発生する)、それだと画面がちらつくので、ダイアログ本体の再描画を抑止→ツリーを非表示にして更新→ツリーを表示してダイアログの再描画という手順を取ると綺麗にいきました。

    やっている事はめちゃくちゃですが、もう背に腹は代えない方針で行きます。

  7. Iraka.T

    失礼します。この修正以降、フォルダの貼り紙で「読込中…」とシナリオ名のリストがちらつくようになりました。貼り紙と一覧の同時表示を有効にしている時のみ発生するようです。

  8. k4nagatsuki repo owner

    これは……ちらつくどころの話ではないですね。

    pull request #1600で修正しました。

  9. Iraka.T

    修正確認しました。ありがとうございます。

    最新版と1.1で表示速度を比べてみたのですが、1フォルダに最多で80程度(すべて圧縮形式)しか入っていない私の環境では、体感できる差はないように思えます。(貼り紙、一覧、同時いずれも)

    ちなみに80個程度のフォルダで、ツリーの展開が気のせい程度にもたつきます。もしかすると数百にもなると重いと感じるのでしょうか。重くなる方のシナリオフォルダの構成が気になります。

  10. req reporter

    お褒めくださりありがとうございます。k4nagatsukiさんにそう言われるとは光栄です。

    シナリオを数千程度持ってきて動かしてみましたが快適でした。どうも圧縮シナリオ の読み込みで少し重くなるぐらいのようです。

  11. 暗黒 騎士

    対処ありがとうございます。スムーズになっていました。

    一覧表示でフォルダを開くのは元々気にならない速度(1秒未満)でしたが、1.50並み(即時)に速くなったように感じますね。

  12. k4nagatsuki repo owner

    当初の目的をある程度達成できたという事で完了にしておきます。

    ただ、シナリオ選択ダイアログには引っかかりを覚える程度のパフォーマンス問題がずっと残っているので、そのうち根本的に解決したいところです(でも難しい……)。

  13. Log in to comment