セーブするとパーティー冒険者が宿帳に増殖

Issue #861 resolved
R created an issue

お疲れ様です。表題現象をご報告します。

【不具合の内容】

シナリオ内外問わず、セーブするとパーティの冒険者が宿帳に増殖する。

CardWirthPy 4.0 Alpha 2 (64-bit) Build: 2019-08-04 00:02:06で確認。
確認スキンはClassic, BloodWirth, JUDGEMENT, CardWirth アレンジパック Ver.1.10。

CardWirthPy 2.3 (64-bit) では発生せず。

増殖する人数はまちまちで、6人パーティー中1人~4人の増殖を確認しており、この増殖冒険者をパーティーに加えることもできます。
Yadoフォルダ下Adventureフォルダ内のXMLファイル数は、セーブ前後で変わらず冒険者ごとに一つのままです。

なお元のパーティー内冒険者にクーポン等を追加してセーブすると、宿帳内の増殖冒険者にもその変更が反映されます。
また宿帳から増殖冒険者を削除してセーブし、再起動すると、増殖冒険者および元のパーティー内冒険者の双方が削除されます。

【不具合の再現方法】

新規宿を作成し、冒険者を6人登録およびパーティー結成のち、セーブおよび再起動する。

パーティー冒険者が宿帳に確認される。

【再現環境】

Windows10, USB3.0 64GB USBメモリ。なお内蔵256GB SSDでは発生せず。

恐らく当方の環境に依存する現象と思われます。

見た目はあまり良くないのですが、宿帳に増殖した冒険者がいても、プレイには問題ないようです。

なおエラーログは発生しておりません。

Comments (8)

  1. R reporter

    CardWirthPy 4.0 Beta 2 (64-bit) Build: 2019-10-01 18:53:26

    では、当該現象発生せず。

    当方の確認不足でした。申し訳ありません。


    CardWirthPy 4.0 Beta 2 (64-bit) Build: 2019-10-01 18:53:26

    にて発生を再確認。エラーログは発生なしです。

    【不具合の再現方法追記】

    新規宿作成→”新規”から標準方式または簡易方式で冒険者作成、を行った際に発生。セーブ・再起動後、宿帳とパーティーに同一冒険者が併存する状態になる。

    “拡張”から自動登録で冒険者を作成した場合は発生せず。

    またver1.50から引き継いだ宿データにおいても、セーブにより、引継ぎ前から存在したパーティー冒険者が増殖する現象が発生しております。

    再現環境は上記に準じます。

  2. 暗黒 騎士

    パーティから外したなどでセーブデータと異なる状態になった(更新された)PCの一時的な定義ファイルは以下に作られ、プログラム終了時に自動で削除されます。

    CardWirthPy\Data\Temp\Local\Yado\(宿名)\Yado\(宿名)\Adventurer
    

    症状と前回の経緯を見るに、今回も大文字の.XMLになっている・重複ファイルが作られる・削除できないなどして読み書きが混乱している可能性があるでしょうか。

    (確認無しで直せてしまう案件ならお節介かとも思いますが、再現のヒントになれば幸いです)

  3. R reporter

    お返事ありがとうございます。

    確認いたしましたところ、大文字.XMLのPCの一時的な定義ファイルで、件の現象が発生し、小文字.xmlでは生じませんでした。

    仰るとおり、今回も大文字の.XMLが影響したと思われます。ご教示のほどありがとうございました。

    なお、CardWirthPy\Yado\(宿名)\Adventurer で大文字.XMLのPCファイルは、

    CardWirthPy\Data\Temp\Local\Yado\(宿名)\Yado\(宿名)\Adventurer

    においても大文字.XMLファイルでした。またセーブ後、PCの一時的な定義ファイルはすべて削除されておりました。

  4. k4nagatsuki repo owner

    pull request #2637

    ご報告ありがとうございます。

    この現象の原因は、拠点DBにケースの異なるファイル名で同一ファイルのレコードが複数作られる事です。

    修正方法にしばらく悩んでいたのですが、結局拠点DBに複数レコードが作られる事は許容して、読み出す時に整理するようにしました。WindowsではDB内のパスを全て小文字にするような方法だと、拠点のOS間の移植性が落ちてしまいます。

    副作用として拠点DBのサイズが増える可能性がありますが、許容できないほど増えるわけではないと思います。そもそも勝手にファイル名のケースが変更される事自体がほとんどないはずです。

  5. R reporter

    ご対応いただきありがとうございます。その後の挙動報告が遅くなりすみません。

    結論から申し上げると、修正ファイル適用後も増殖は発生しております。

    適用前後の変化として、USBメモリにおいて、下記内のPCファイルはすべて小文字.xml になりました。

    CardWirthPy\Data\Temp\Local\Yado\(宿名)\Yado\(宿名)\Adventurer  -(1)

    しかしその後のセーブで、下記内のPCファイルがランダムに大文字.XML になり、増殖が生じました。

    CardWirthPy\Yado\(宿名)\Adventurer -(2)

    また内蔵SSDでは件の現象は見られておりませんが、(2)にてPCファイルが大文字.XML の場合、増殖が生じました。この際(1)も大文字でした。

  6. k4nagatsuki repo owner

    pull request #2640

    ありがとうございます。パーティメンバーを待機メンバのリストから除外する処理に見落としがあったので修正しました。これでどうでしょうか。

  7. R reporter

    表題現象が解消されました!

    増殖していたPCが一人に集約され、またセーブにより、CardWirthPy\Yado\(宿名)\Adventurer 内の .XML が .xml に変わりました。

    お忙しいところ、ご対応くださりありがとうございました。

  8. Log in to comment