追加案: シナリオのインストールと整理

Issue #192 resolved
k4nagatsuki repo owner created an issue

圧縮ファイルやフォルダのドロップでシナリオをインストールできたり、シナリオの場所を簡単に移動できたりする機能がほしいところです。

インタフェースはまだ考えていないので、その検討から始める必要があります。

急がないので優先度は低めにしておきます。

Comments (50)

  1. k4nagatsuki reporter

    pull request #1207でドロップしたシナリオをすぐプレイできるように。

    これは暫定的なもので、本当はその時選択されているフォルダにインストールするかを尋ねるのがよいでしょう。

  2. k4nagatsuki reporter

    pull request #1673

    シナリオのインストールと新規フォルダ作成機能の追加。

    これで、シナリオのダウンロード後からプレイに至るまでの操作はエンジンで一括してできるようになりました。

    シナリオの場所を動かしたり、間違えて作ったフォルダを削除したりする事はまだできません。

  3. k4nagatsuki reporter

    pull request #1698

    いちいちシナリオ選択ダイアログを開くのが面倒だったので、メイン画面にドロップしたらインストールダイアログを表示するようにしました。

  4. Num_400

    ご無沙汰しております。早速使ってみて気になった点が出ましたので意見を残していきます。

    ・ダイアログには「インストール」という文言がありますが、シナリオのコピー動作なので「コピー」という文言で良いのではないでしょうか。
    ※CWではインストールという表現が合わないなぁと感じています。
    ・コピーだけでなく、シナリオファイルの移動機能も欲しいです。
    例えば、ダイアログに移動のチェックボックスを付けて、ダイアログ上で移動とコピーが選択できれば良いと思います。

  5. Iraka.T

    シナリオのコピー動作なので「コピー」という文言で良いのではないでしょうか。

    横からですが、私は「インストール」のままであってほしいです。「コピー」と言われると、違和感というより強い嫌悪感を覚えます。また、設定によっては元の場所のシナリオを削除する動作になるので、複製ではない場合があるのも名実が異なってしまうように思います。

  6. k4nagatsuki reporter

    ありがとうございます。自分一人でやっていると一般と感覚が乖離する所が出てくるので、そうしたご意見をいただけると助かります。

    ・ダイアログには「インストール」という文言がありますが、シナリオのコピー動作なので「コピー」という文言で良いのではないでしょうか。

    @IrakaTさんも仰っていますが、この機能は単純なコピーや移動だけではなく、DBへの登録や既存のシナリオの置換などを行う機能です。ですので、単に「コピー」(設定を変えたら「移動」)では、誤解を招くというか、ユーザの想定外の事をしてしまうおそれがあるように思います。あくまで私の感覚ですが、「インストール」という言葉が一番意味合いが近いのです。

    ただ、たしかに「インストール」という言葉はCWの世界ではついぞ出てきた事がありませんし、じゃあCW以外ではどうかというと、今なお一般的な言葉といえるかどうか謎です。AppleのAppStoreなんかでも「入手する」のように表記されていた気がします(今回の機能は「入手」ではないのでこの文言は使えない)。

    何かよい言葉があればいいのですが。


    ・コピーだけでなく、シナリオファイルの移動機能も欲しいです。

    これは詳細設定の「シナリオ」タブで切り替えられます。しかし、見つけにくいので、たしかにダイアログにチェックボックスを設けた方がいいかもしれません。

    問題があるとすれば、コピーだけしかしない人が誤クリックでチェックを入れてしまってそれに気づかない、という事故が起こるかもしれない事です。

    その場で切り替えられる利便性が事故率を上回るかどうかなのですが、どんなものでしょう。言い方を変えると、時によって移動とコピーと切り替える人がどれくらいいるかなのですが。

  7. Num_400

    返信ありがとうございます。私の中の疑問は概ね解消されました。

    この機能は単純なコピーや移動だけではなく、DBへの登録や既存のシナリオの置換などを行う機能です。

    なるほどだから文言が「インストール」なのですね。了解です。
    しかし「インストール」だと、操作後に具体的に何が起こるのか分かり辛いですね。

    ・コピーだけでなく、シナリオファイルの移動機能も欲しいです。
    これは詳細設定の「シナリオ」タブで切り替えられます。

    既に実装されていたのですね。
    設定する場所がわかり辛いですが、返信にありました操作事故を防げるなら、この実装の方が良い気がします。

    さて、このダイアログにはまず二点のわかり辛さがあるわけですが、
    これはダイアログの右上にヘルプでも作って、誘導すれば良い気がしてきました。

    「インストール」ついての解説と、切り替え設定の場所解説があれば、多少スムーズな利用が可能になるかな?と思いました。

  8. k4nagatsuki reporter

    インストールボタンにツールチップヒントでもつけてみましょうか。以下のような文言でどうでしょう。

    「<ファイル名>をコピーし、シナリオデータベースに登録します。\nインストール完了後のファイルを削除したい場合は、詳細設定の[シナリオ] > [詳細] > [シナリオのインストールに成功したら元ファイルを削除する]で設定を変更します。」

  9. k4nagatsuki reporter

    実際に使ってみないと感じが分からないので、pull request #1706で実際にやってみました。最新のテスト版をお試しください。

  10. Iraka.T

    「インストール」という言葉はCWの世界ではついぞ出てきた事がありません

    これについて、間違いです。「インストール」という用語は、groupAskの追加シナリオ同梱ReadMe_1st.txt内に記載されています。

    当該テキストは本体に付属して配布されている交易都市リューンとゴブリンの洞窟を除く全シナリオに含まれています。

  11. k4nagatsuki reporter

    おっと、そうなんですね。確認不足ですみません。撤回します。

  12. 暗黒 騎士

    話の流れとは関係ないですが、インストールに成功したら削除する設定、Readmeなどシナリオフォルダのファイルを開いている状態でインストールを行うと「インストールに失敗しました」と表示されます。が実際にはフォルダ内のファイルは全て移動されており(インストールは成功していて)エラーログが出力されるようです。

  13. Num_400

    素早い実装ありがとうございます!
    張り紙画面とメイン画面のインストールボタンで同じヒントが出ることを確認しました。

    ツールチップヒントだと消えちゃうのが残念ですが、知ることができれば後は難しくないから、きっとコレで初見さんでも大丈夫ですよね。
    ご対応頂きありがとうございます。

  14. k4nagatsuki reporter

    ご確認ありがとうございます。また気になるところがあったらお知らせください。


    インストールに成功したら削除する設定、Readmeなどシナリオフォルダのファイルを開いている状態でインストールを行うと「インストールに失敗しました」と表示されます。

    フォルダがロックされている場合ですね。普通に操作していても見る事のあるエラーなので問題です。どうしたものか迷うところですが、ロックされているものは仕方ないのでpull request #1707で空フォルダを残すようにしました。

    しかしメモ帳は何をロックする必要があるんだろ?

  15. Iraka.T

    「表示のみ」を行った後、無関係なツリーをクリックすると、フォーカス位置がずれることがあるようです。

    貼り紙と一覧同時表示で、ダイアログを閉じずに繰り返すと確実に起きます。サブフォルダ内のフォーカスはずれないようです。


    要望をひとつ。フォルダの削除やシナリオのアンインストールは、2.0正式リリースまでにできるようになってほしいです。作成ができて削除ができない、インストールできてアンインストールできない、というのは、あまりにも片手落ちだと思うので。

    インターフェイスについてはボタンを増やすよりも、一覧表示に右クリックメニューを実装できたら最良だと思うのですが。それがあれば、右上のボタンが片付いて画面がすっきりしますし、どのフォルダやシナリオに対する操作なのか、よりわかりやすくなります。


    議題とは無関係ですが、シナリオの解説ダイアログ、参照ファイルのドロップダウンリストでファイル名が省略されてしまうことがあります。

    見本を作成しようと試みたのですが、別シナリオに同名のテキストを作成しても(ファイルごとコピーしても)それは表示されるので、首を傾げています。それゆえ他者製のシナリオを例示しますが、「魔光都市ルーンディア」の著作権表記類がすべて「記.txt」になってしまいます。

  16. k4nagatsuki reporter
    • pull request #1726
    • pull request #1727

    それぞれ修正しました。ありがとうございます。

    要望をひとつ。フォルダの削除やシナリオのアンインストールは、2.0正式リリースまでにできるようになってほしいです。

    私もそう思います。移動もあるべきです。ただしたぶん右クリックにはならないでしょう。理由は、CWでは右クリックはキャンセル操作と決まっているのと(ツリー上では技術的問題があって連打しないとうまくいかない)、一覧が表示されていない場合があるからです。

    とはいえボタンを置くスペースも無くなりつつあるので、ブックマークのようにあるボタンを押すとメニューが出てくる感じで考えています。

  17. Iraka.T

    表示のみを行った後、改めてインストールを行おうとしたところ、「シナリオがデータベースに登録されています」と言われました。

    置換を選択したところ、Scenarioフォルダ内にはそれらしいシナリオが見当たらず、元ファイルを削除する設定にしてあったので、元の場所からも消え去ってしまいました。割りと重大な問題だと思います。

    ※追記

    ディスク内を検索して、問題の起きた操作の細かい手順を思い出しました。

    「表示のみ」を行ったのは古いシナリオを保管していたフォルダ(Scenarioフォルダから辿れない)です。改めてインストールしようとしたのは、ダウンロードフォルダの中にあった、新しいバージョンのシナリオでした。新しいバージョンのシナリオをインストールしようとすると、Scenarioフォルダにはないのにデータベースに登録されていると言われ、置換を行うと、古いシナリオ保管フォルダのものが置換されていたようです。

    Scenarioフォルダから辿れない場所のファイルを変更してしまうのはまずいと思います。

  18. k4nagatsuki reporter

    現状の仕様では、複数同じ(シナリオ名と作者名が一致する)シナリオがある場合は、更新日時の一番新しいもの(ただしインストールしようとしているシナリオ自体は除外)を上書きするようになっています。

    たぶんその動作は妥当ではありません。実装時に妙案が思いつかなかったのでそうしているだけです。今回やはり混乱を招いたので、なんとかして解決策をひねり出す必要がありそうです。時間をください。

    Scenarioフォルダから辿れない場所のファイルを変更してしまうのはまずいと思います。

    その判断を行うのは大変難しいです。CWPyからシナリオへの経路を知る手段は、本質的に存在しません。Scenarioから辿れない場所にあっても、それは過去にショートカットで結びついていたかもしれませんし、別のスキンタイプの初期フォルダからは辿り着けるかもしれません。別の経路が結び直されるかもしれません。実際のシナリオ配置はプレイヤーによって多種多様、場合によっては複雑怪奇で、機械的に把握するのは不可能に近いです。

    一応、置換された時には古い方をゴミ箱に放り込む事で、取り返しがつくようにはしているつもりです。ネットワーク上とかだとゴミ箱が使えない場合もありますが。

  19. Iraka.T

    機械的に把握するのは不可能に近いです。

    ではせめて、置換しようとしているシナリオのパスを表示することで、ユーザーが「今、何をしようとしているのか」を把握できるようにしたほうがいいと思います。

    dialogsample.png

    何も形を出さずにあれこれ言うだけというのは良くない気がしたので、雑ですが新しいダイアログの案を。(添付してプレビューしてから気付きましたが」の位置など本当に雑ですみません)

    この案には「表示のみ」ができない難点があります。ボタンを付けていないのは、「選択してください」に対するユーザーの解答を無視するからです。文言を変えれば付けてもいい気がします。

    ただ、「表示のみ」は、可能ならダイアログが表示された時点で実行済みであったほうが便利です。というか、まずダイアログが表示されるようになってから、若干の不便を感じています。以前のD&Dしてすぐシナリオを表示できる簡便さが失われてしまっているのが、私は少し残念です。

  20. k4nagatsuki reporter

    ありがとうございます。やはり場所が一目瞭然なのはいいですね。

    おそらく気づかれていない問題が1つあります。シナリオのインストール・表示は複数同時にできます。1つまたは複数となると、インタフェースの考え方の全体が変わってきます。

    プレイ環境を新たに作ったときなど、インストール数は一度に数十に達するかもしれず、毎回訊ねるという考えの採用は困難です。

    複数存在しているシナリオだけどうにかする、という手もありますが……。

    というか、まずダイアログが表示されるようになってから、若干の不便を感じています。以前のD&Dしてすぐシナリオを表示できる簡便さが失われてしまっているのが、私は少し残念です。

    実は私も感じています。インストールボタンもありますし、今はメイン画面にドロップする手段もありますから、ドロップ時の動作は明示的にオプション化した方がよさそうです。隠しオプションとしては実は存在するので、ダイアログに追加するだけです。

  21. Iraka.T

    実は私も感じています。

    ということはおそらく多くの既存ユーザーが感じるでしょうね。オプションのデフォルトは、以前のように表示のみになるのでしょうか。

    プレイ環境を新たに作ったときなど、インストール数は一度に数十に達するかもしれず、毎回訊ねるという考えの採用は困難です。

    たしかにその通りです。仏の顔が見られる程度ならともかく、数十回も同じダイアログを処理するのは苦行です。

    もしかすると、データベースに発見したからといって、置換は行わないほうがいいのかもしれません。アンインストール機能が実装されれば、重複しているシナリオをユーザーが選択して削除できるようになります。ただ、すでにインストールされている旨のメッセージはあったほうがいいと思います。

    どうするのが良いかはよく考えないといけないですね。

  22. k4nagatsuki reporter

    pull request #1730

    オプションを追加し、デフォルトの挙動を従来通りにしました。最初に実装した時にはメイン画面へのドロップが無かったのでインストールダイアログを出すようにしていましたが、今ではデフォルトオフでよいと思っています。

  23. k4nagatsuki reporter

    pull request #1747

    すでにインストール対象のシナリオが複数インストール済みの場合のさしあたっての対応として、置換するか問い合わせる時に、置換先を一括して表示し、置換対象をチェックできるようにしました。

  24. req

    自分は階層が付いていたら階層ごとインストールされるオプションを付けることを望みます。(出来ればデフォルトTrueで)

    だって、ユーザーを一気にごっそり1.50からPyに持ってくるにはそれ位できないとダメでしょう?


    階層付きオプションのやり方を福岡でノートに書いて考えてみました。

    (インストールフォルダへ移動(フォルダなければ作る、そのフォルダへ移動)を繰り返す。そのフォルダでそのシナリオをインストール) をすべてのインストールシナリオで繰り返す。

    を入れるだけです。

  25. req

    一週間置いて何の反対意見もなく、Pyのソース読んで分かるようなら着手を試みます。

  26. k4nagatsuki reporter

    階層構造の維持は賛成です。オプションのチェックボックスを1つ設けるべきかと思ったのですが、そもそも維持される方が直感的なので、さしあたりオプション無しで現状のフラットになる挙動を上書きしてしまってもいいと思います(フラットがよかったという意見が来たらまた考えるという事です)。

    だって、ユーザーを一気にごっそり1.50からPyに持ってくるにはそれ位できないとダメでしょう?

    他のエンジンのシナリオフォルダを持ってきたいのであれば、ショートカットを使う方がよいです。


    一週間置いての着手、について、これは階層維持の話ではなく一般論としてお読みください。

    私の反応が遅れたり、それによって結果的に提案をスルーする状態になったりしている事情は昨日書いた通りです(@namereqさんの行動を見ると内容が伝わっていると思えません、ぜひ念入りにお読みください)。

    その現状で期限を切って反応がなければ実装を行う、という行動を取ると、最後に壁にぶつかるおそれがあります。

    期限切れ→実装→Pull Request、のところで、どうしてもCommitterのレビューを通らなければならないからです。Committerは今のところ私しかいないので、結局反応待ちのタイミングがあとにずれるだけ、という事になります。そこではじめてCommitterが提案に反対する事が判明するかもしれませんし、そうなると作業が無駄になるかもしれません。その時点でまたずっと待たされる、という事も充分にありえます。この点をどうか頭に置いておいてください。

    じゃあそのような行動は避けるべきなのか、というと、実はまったくそうともいえません。バグの修正や機能の実装は、コードの内容を理解する一番の早道です。まったく最高の方法といってもいいくらいです。自分の勉強のため、と割り切り、ダメ元でレビューも通す、というくらいに考えて行動を起こすのは悪くないと私には思えます。


    ところで、私だけは一週間待って反応が無いから実装する、という行動をリスクなく取る事が可能です。これは私自身が唯一のCommitterであり、私のPull Requestをレビューできる人間がいない、という特殊な事情によります。他にCommitterがいれば、その人にレビューしてもらってからマージするという形式を採るつもりでいます。

  27. req

    ティナのテーマ聞きながら、コメントする気を維持して書きます。

    他のエンジンのシナリオフォルダを持ってきたいのであれば、ショートカットを使う方がよいです。

    ショートカットとは何ですか?それすらも分からないのです。

    その他は分かりました。昨日書いた通りは念入りに読ませていただきます。

  28. k4nagatsuki reporter

    たぶん実際にはご存じで、CWと結び付けられていないだけだと思いますが、ショートカットはWindowsのシェルの機能で、任意のフォルダやファイルに対するリンクを作る事ができます。そのリンクはCWPy上でもたどる事ができます。

  29. req

    ショートカットアイコンのショートカットは分かります。

    この機能は単純なコピーや移動だけではなく、DBへの登録や既存のシナリオの置換などを行う機能です。とあります。クラシックシナリオのフォルダのショートカット置いても、出来ないんじゃないですか?

  30. k4nagatsuki reporter

    ショートカットをうまく使えばそもそもシナリオを移動・コピーする必要がありません。

    既存のエンジンが抱えている大量のシナリオをそのまま遊びたいなら、その方法が一番手軽です。

  31. req

    ショートカットを置いて、pyが既存のシナリオを読めるとして、DBへの登録は、ショートカットが置かれた時点で勝手に行われたりするんですか? それともシナリオダイアログを開いた時に、DBへの登録がされるんですか?

  32. 暗黒 騎士

    DBへの登録は「シナリオ選択ダイアログでシナリオのあるフォルダを開いたとき」に行われるはずですね。 また「設定ダイアログでデータベース構築ボタンを押したとき」一括で行われるのでショートカットで大量追加する場合はそちらが便利かと思います。

  33. req

    今確認しました。クラシックシナリオ動作しますね。階層構造の維持は出来ると直感的でいいというのは同意見なのですが、今やる気起こりませんので、1週間置いてはなかったことにしてください。 何より 解説動画とかシナリオ でもいいから周知が必要ですよね。

  34. k4nagatsuki reporter

    pull request #1844

    移動・削除・名前の変更を行えるようにしました。これで一通りの機能は揃ったと思います。いくつものシナリオを移動したような時は、やはりエクスプローラの出番になりますが。

  35. 暗黒 騎士

    一覧同時表示している状態で、たとえば「aaaa」というフォルダやフォルダへのショートカットをメニューから削除すると、ツリー上でそれより下位にあるフォルダをクリックした際に、実際に選択したフォルダより一つ下に自動でズレこむようになるようです。(一度開き直せば直る)

  36. k4nagatsuki reporter

    実装したので完了にします。

    この機能は改善の余地が多そうですが、新しい提案等は新規Issueを立てた方がよいと思います。

  37. 暗黒 騎士

    「移動」でもシナリオリストの不一致が生じることがあるようです。 別ディレクトリにある1.50フォルダからScenarioディレクトリ直下へのシナリオ移動で確定で発生。

    また、「別ディレクトリにある展開されたWSNシナリオ(フォルダ)」へのショートカットをScenarioディレクトリ直下に置くとシナリオが見つかりません。これは仕様になるでしょうか?

  38. k4nagatsuki reporter

    pull request #1950

    後者は修正しましたが前者は再現できません。具体的にどういうディレクトリ構造で発生するのでしょうか?

  39. 暗黒 騎士

    すいません、前者についてはRebootの方でも確認した気がしたのですが、再現できなくなったのでまたややこしい勘違いをしていたかもしれません。ただ、更新漏れのパターンがあるのか、たとえば1.50Scenario直下(フォルダ・ショートカット数10シナリオ数10前後)とPyScenario直下(フォルダ・ショートカット数10前後シナリオ数10前後)で「交易都市リューン」を「移動」で何度も往復させると実態のない「交易都市リューン」が1.50フォルダ側のリストに残るようです。

  40. 暗黒 騎士

    雑な塗りつぶしですいませんがこんな感じです。 https://bitbucket.org/akkw/cardwirthpy-reboot/downloads/SS.png 貼り紙はgroupASK、その他CC0

    たとえば1.50Scenario/Askと1.50Scenario/冒険フォルダ間の移動だと移動で閉じられないこともあるようです?

    このScenarioディレクトリ間の移動では毎回閉じられていますが、この状態にするのに1.50フォルダを開き直した時にはリューンが残ってる状態です。(もう一度開き直したりすれば戻る)

  41. k4nagatsuki reporter

    やはり再現しません。性能や設定が関係しているのでしょうか?

    例えば初期状態のCWPyで同じようなフォルダ構造を作って同じ事を行うと再現しますか?

  42. 暗黒 騎士

    うーむ、では環境依存ということですね。ダイアログを開き直せばいいので実害は低いですし、無理に対応しなくても大丈夫だと思います。

    CardWirth
    Scenario(直下に無圧縮クラシックシナリオ11、フォルダ9)
    
    CardWirthPy
    Scenario(直下に無圧縮クラシックシナリオ8、フォルダ4、ショートカット4)
    
    CardWirthPybeta3
    Scenario
     Scenarioへのショートカット
    

    このように、初期状態のβ3を「CardWirthPybeta3」にリネームし、新しく宿と、 Scenarioフォルダに1.50ScenarioとPyScenarioへのショートカットを作り、一覧表示の設定をオンにし、 シナリオリスト上で両ショートカットを開いた状態で、同じようにリューンの移動を繰り返したところ、リューン増殖はしませんでしたが、 上記の削除と同じようにズレるのを確認しました(Liteで自分が入れたバグではなかったようです。よかった…)

  43. k4nagatsuki reporter

    仮に処理が遅れるにせよ、self.listの内容から選択中のアイテムをpopする処理は確実に動いているはずです。ツリー上のリストからアイテムを取り除く_remove_treeitemが動いていないという事でしょうか? このメソッドが呼び出されているか調べてみていただけないでしょうか?

  44. k4nagatsuki reporter

    再現できました。どうもショートカットを経由している事が問題のようです。うまくリストからアイテムを削除できない事も問題の根は同じじゃないかと想像しています。

  45. k4nagatsuki reporter

    pull request #1951

    直りました。self.scetableのキーはショートカット先のパスでなくてはいけないところ、移動処理に限りショートカット元のパスになっていました。

  46. 暗黒 騎士

    お疲れ様です。もたもたしてる間に解決してしまったようですいません…

    再現しなくなったのを確認しました。

  47. Log in to comment