雑多な報告・連絡用Issue(part3)

Issue #222 resolved
k4nagatsuki repo owner created an issue

簡単な報告だけするために新規にIssueを立てるのは躊躇する事があるという意見をいただいたので、返信を書くだけで済むように雑多連絡用としてこのIssueを立てておきます。

軽い連絡や報告など、自由に書き込んでください(ただし返信にはBitbucketのアカウントが必要)。

スレッドが長くなりすぎた場合はクローズして次の汎用Issueを立てます。


このIssueは#210 雑多な報告・連絡用Issue(part2)の続きです。

Comments (105)

  1. hand.onlooker

    動画を作ってて思ったのですが、Pyエンジンで ウィンドウを前回閉じた位置で固定したいです。

  2. 権兵衛 七篠

    重箱隅で失礼ですが、 マルチディスプレイなデスクトップの環境からノートPCに環境を写したときなど、 存在しないディスプレイの座標に位置が指定されて音しか聞こえないと言う場合があるかとも思いますが、 起動時にチェックする処理はついてますでしょうか?

    頻度は少ないと思うのですが、 環境を引き継いだり<s>ディスプレイがぶっ壊れたり</s>した場合に 設定放棄とか再インストールなど必要とするのはちょっと酷かなぁ、とも思うしだいです。

  3. k4nagatsuki reporter

    はみ出た場合はできるだけモニタの内側に来ようとします。Windowsでは画面サイズより大きなウィンドウは作れないので、理論上は必ず画面内に納まるはずですね。

    プレイ画面を拡大している時に小さなモニタに移って表示サイズが足りなくなった、というような場合は表示が変になるのですが、F4を1回押せば解決できるはずです。

    なお、マルチモニタの中間部分に配置した場合、再起動後はより大きな面積が属していた画面で起動します。これはそういう仕様です。

  4. k4nagatsuki reporter

    プレイ画面を拡大している時に小さなモニタに移って表示サイズが足りなくなった、というような場合は表示が変になるのですが、F4を1回押せば解決できるはずです。

    書いてしまってからこれあんまりじゃないかと思ったのでIssue #223を作成しました。近いうちになんとかします。

  5. Former user Account Deleted

    はじめまして。 「itsuka」という名義で、いくつかシナリオを作っている者です。 ふとpyで自作シナリオをやってみたら、気になることがあったので報告させて頂きます。

    mp3楽曲の再生具合に違和感を感じます。 使用曲そのものに不具合があるのかもしれませんが、 1.50エンジンやメディアプレイヤーと、pyエンジン内で聞くのとでは、一部の音が違ったり、音質が異なるように感じます。

    これは個人的なことなのでどうでも良いかもしれませんが、自作シナリオで使用した曲の一部によっては、 BGM曲の山場の部分の、女声ソロパートが何故か聞こえなくなっています。

    音楽関係は素人なので、うまく説明できなくてすみません。

  6. k4nagatsuki reporter

    ご報告ありがとうございます。ituka様のシナリオは最近一通り楽しまさせていただきました。「話が長い子爵の護衛」などBGMも相まって非常に熱く(そして切なく)なれただけに、音がおかしいというのはなんとかしたいところです。

    音声の再生には1.50等と同じ仕組みを使っているのですが、その上でいくつか設定があるので(音の高低の段階数をどこまで細かくするか、ステレオかモノラルか、その他様々なオプション)、それが食い違っているのかもしれません。

    現在itsuka様のシナリオ内の曲をいくつか聴き比べているのですが、どうも違いが分かりません。音周りの初期化の時に指定できるオプションに音声再生デバイスの設定をそのまま使うという指定をしているので、環境がダイレクトに効いてきそうな気もします。

    たぶんCWPyと1.50で音声周りに異なるオプションを指定しているので、それを合わせるのが最終的な解決になると思います。それについても現在調査中です。

    お手数をお掛けして申し訳ないのですが、特に大きく出力結果が異なる曲にどのようなものがあるか、具体的に教えていただけないでしょうか?

  7. Former user Account Deleted

    あ、ありがとうございます。 そして本題ですが、上手く説明できないので・・・一番違和感のあったものを、動画にしてきました。

    http://ux.getuploader.com/itsuka_1/download/23

    ・使用BGM Feline Groove Labelさんより、使用楽曲もとい再生パスワードは「julian」です

    ・特に顕著なのが、動画時間で1:06~1:20と2:20~2:34、以降は繰り返し再生です(03:44で音が途切れているのは動画キャプチャソフトの都合です)

    ・一時間前に判明したのですが、使用サウンドフォントのチェックを外したら綺麗に再生されました(new!

    動画で一発撮りにする都合で、bgmを消すためにチェックを入れても再生されるのでpyのサウンドフォントのチェックも外して・・・とか何かやってたら、こうなりました。(ちなみに普段からサウンドフォントには拘ってます。) そもそも歌入り曲やユーロビート系をカードワースに使うこと自体が間違いかもしれませんが・・・。

  8. k4nagatsuki reporter

    検証動画まで作っていただきありがとうございます!

    私の方でもたった今何がおかしいのか調べがついたところです。自分の間抜けさに驚いている最中なのですが、なんとCWPyではモノラル再生をオプションで指定していました(プログラム的にいうとオプション定数が間違っていた)。なるほど音が変わってしまうわけです。

    私の環境でどれも同じように聞こえていたのは、たぶん私の環境自体に何か問題があってステレオが効いていないせいなのだと思います(ヘッドフォンの取説を探さないと……)。そのせいか動画内の音声も同じように聴こえてしまっています。

    これから修正したテスト版を用意しますので少々お待ちください。


    なお、サウンドフォントを外した場合の挙動なのですが、実はCWPyにはBASS AudioとSDL_mixerという2つの異なる音声再生の仕組みがあって、全てのサウンドフォントを外した場合は後者が使用される設定になっているためです(BASSではMIDI再生にサウンドフォントが必須のため)。そしてSDL_mixer側にはMIDIがループするタイミングでたまにハングアップするという不具合が確認されているため、引き続きお好みのサウンドフォントを指定した状態で使用される事をお薦めします。

    そもそも歌入り曲やユーロビート系をカードワースに使うこと自体が間違いかもしれませんが・・・。

    MP3ループのおかげでそうしたシナリオがちょくちょく見られるようになっていますね。表現の新境地という感じがして私は好きです。

  9. k4nagatsuki reporter

    再生オプションを直しました。お手数をおかけして申し訳ありませんが、改善されているかどうかお試しください。

  10. k4nagatsuki reporter

    書き忘れましたが、以下の問題(Issue #223)についてもこのテスト版で対処しています。

    プレイ画面を拡大している時に小さなモニタに移って表示サイズが足りなくなった、というような場合は表示が変になる

  11. Former user Account Deleted

    早速の対応、ありがとうございます。 BGMが綺麗に再生できました。

  12. k4nagatsuki reporter

    ご確認ありがとうございます。では、解決ですね。

    この問題はたぶん報告がなければ自力では一生気付かなかったと思います。本当に助かりました。ありがとうございました。

  13. Y Sakaguchi

    こんばんは、いつも更新お疲れ様です。

    今日の報告ですが、最近とあるサイトで見つけたライフゲージの画像が、Pyでは正常に使えないようです(1.50とNextで使えるのは確認しました)

    サイトのアドレスはこちらになります。 http://spice0v0.blog.fc2.com/

    ゲージ内のライフバーが写る部分が、青く塗りつぶされたままの状態になります。拡張子を変えたり、ペイントでBMPに保存し直しても同じ結果でした。

    不具合と言うほどではないと思うのですが、対処する方法はありますでしょうか?

  14. k4nagatsuki reporter

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

    これは一体……?そもそも1.50で透明になる理由が分かりません(透明色は紫のはず)。ライフバーの中身を透明にする事に関してまだ不明な仕様がありそうです。

    とりあえずすぐできる対処としては、ライフバーの中の青い部分を透明色の紫で塗りつぶすことです。とはいえ何もせずに表示できるのが本来なので、問題がどこにあるか調べてみます。

  15. k4nagatsuki reporter

    ライフゲージの透過色部分はCWで一般的な左上ではなく画像中央なのではないかと推測されていたのですが、それは単に推測で厳密に検証された事はありませんでした。実は左上を(0, 0)とした時の(5, 5)の位置のピクセルが透過色として扱われるようです。問題のライフゲージは画面中央が透過色でないものだったので正しく表示できていなかったようです。直したのでよろしければお試しください。

  16. Y Sakaguchi

    問題のライフゲージを含め、他のバリアントのゲージも全て正常に表示されているのを確認しました。

    音声や混乱カードの仕様といい、色々と意外なところで違いが出てくるものですね。正直驚いています(でもこうして報告者が増えて次々に対応されるたびエンジンが完成に近づいてるようで、使わせて頂いている側としては嬉しくもあったり)

    ともあれ、対応ありがとうございました。ではでは。

  17. k4nagatsuki reporter

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

    シナリオ1本プレイするたびにエンジンに数点修正が入るようなところから始めたので、ここ数日の流れは懐かしいやらまだこんなにあるのかとびっくりするやら……。

    また何かありましたらお知らせくださいませ。

  18. 暗黒 騎士

    Xeditorの方ではありがとうございました。 昨日の今日で恐縮ですが、CWPYの方でバグを見つけましたのでご報告します。

    1)効果コンテントの対象レベルがマイナスに設定されている場合、麻痺解除・中毒解除の効果が反転する。 たとえば対象レベル-10の場合、麻痺(4)・中毒(4)が与えられる。1.50で試したところそのような仕様はなかった。

    2)ゴブリンの洞窟でコボルトが逃げにくい。

    テスト方法:テスト方法、デバグモードでレベル10PCでゴブリンの洞窟に行き、最終戦でゴブリン&ゴブシャーだけを倒し、カード交換を選び続けた。 Py:逃走カードは配布されているものの、50ラウンド内で1体も逃走カードを選択しなかった。(×2回) 1.50;1ラウンド目に2体逃げ、10R目に3体目、22Rで全て逃走した。 テスト中には選択されなかったが通常プレイ中に別シナリオの通常コボルトが逃げた場合があったので全く選択されないわけではない…?

    それにしても、前回選んだシナリオがデフォルトに来る仕様は良変更ですね。 テストするのに何度も選び直すのが非常に快適でした。

  19. k4nagatsuki reporter

    ありがとうございます。1)は明らかに効果値計算のバグですね。これから直します。

    2)は不可解ですね。コボルトはほとんどの所持カードに適性が低く、若干合うのが逃走とカード交換くらいなので、高い確率で逃走が選択されるはずです(カード交換は特別扱いで選択確率が低いことがわかっています)。今、同様のテストをしてみているところですが、逃走より適性の悪い防御カードを選択するような行動が散見されます。おそらくバグなので調査してみます。

  20. k4nagatsuki reporter

    両方とも修正しました。実は逃走カードには「重症の時は必ず選択される」という特殊な処理があるのですが、その仕様を実装した時、間抜けなことに「重症の時には必ず選択される。重症でない時は絶対選択されない」という処理にしてしまっていました。修正したので今後はケガをしていなくても逃走するはずです。よろしければお試しください。

  21. 暗黒 騎士

    更新お疲れ様です。両方とも正常に動作しているのを確認しました。

    なるほど、修正前に逃走したのは確かに重傷の時でした。 プルリクエストの方も見させていただきましたが、ifをandに変えるだけ(?)でそれほど挙動に差が出てしまうんですね。 むむ、難しい。

  22. k4nagatsuki reporter

    ご確認ありがとうございます。

    あそこのif文は、「まず『逃走カード』と『それ以外』を分ける」→「逃走カードだったら重症かどうか判定する」「それ以外はカードが選択可能か判定する」という処理になっていました。逃走の場合は選択可能かの判定に行かなかったのです。それを「『逃走カード and 重症』か『それ以外』を分ける」という風に変えたので、重症でない場合は逃走も他カードと同じような選択判定を行うようになったわけです。

    言い遅れましたが機能を褒めていただきありがとうございます。他にもちょくちょく改良を入れているつもりです。快適にプレイしていただければ幸いです。

  23. Y Sakaguchi

    こんにちは。新たに謎の不具合が発生したため報告に来ました。

    張り紙を眺めていたところ、急にシナリオを分類したフォルダの中身を見られなくなり(クリックしてもシナリオ画面に行けない。右クリックで出ることはできた)、いったん終了させてから再起動したところ、その宿に入れなくなってしまいました。宿をクリックした途端にエンジンがフリーズし、「閉じる」以外の動作を受け付けなくなります。

    他の宿は普通に入れますが、新しい宿を作って問題の宿内のデータだけ移そうとしても駄目でした(転送完了と表示は出るものの、実際にはデータが移っていない)

    復旧不可能なら宿を削除してバックアップから復元するつもりですが、いったい何が起きたものやら…。

    追記。先ほど「CardWirthPy\Data\Temp\Local\Yado」内から問題の宿のフォルダを削除したところ、何事もなかったかのように入れるようになりました(苦笑)。何だったんだろう…。

    追記2. イーグル氏のシナリオフォルダで繰り返し発生するため一つ一つ試したところ、「愛人」「霧を抱く…」をcab圧縮のまま見ようとすると不具合が起きるようです。解凍した状態でフォルダに入れたら正常に認識しました。

  24. k4nagatsuki reporter

    ご迷惑をお掛けして申し訳ありません。宿が破損したわけではないのが何よりでした。

    ログを見た感じ、CAB展開した後、後記.txtにアクセスしようとしたら拒否された、というような状態になっているようです。再起動後に宿に入れなくなったのは、起動時にData/Tempの下にあるCAB展開データを掃除しようとした時、後記.txtの削除に失敗してしまってエラーで止まった、ということだと思います。しかし手動で普通に削除できるのにアクセスに失敗するとは一体……?

    とりあえず手許で再現しないか試してみます。転送機能に別個のバグがある可能性もあるのでそれも調べてみます。

  25. k4nagatsuki reporter

    CAB圧縮されたシナリオに後記.txtというファイルがあるとアクセスエラーになるようです。理由が分かりませんが、CABの伸張にexpandというWindows付属の外部コマンドをしようしているためにファイルの権限絡みで齟齬が発生しているのだと思います。伸張してできたファイルに読み込み・書き込み権限を付与する事で対処できました。よろしければお試しください。

    それと、転送は単なるその機能自体のバグでした……申し訳ないです。

  26. Y Sakaguchi

    こんばんは、テスト版で圧縮ファイルを認識できるようになりました。後記.txtは他のシナリオにも入っていたため、何故この二つ限定でエラーになるのか謎ですが。

    それと連続で申し訳ないのですが、また別の不具合の報告です。

    柚子さんの【滅びの呼び声】を遊んでいたところ、ボス戦の1ラウンド終了時にフリーズしました。原因はよく分かりませんが、他の人も同じ現象が起きたようです。

  27. k4nagatsuki reporter

    ご迷惑をお掛けして申し訳ありません。とんだ不具合が残っていたもので、同行NPCが自分自身を対象にした召喚獣カードを発動させるとエラーになるバグでした。今回のシナリオの場合はNPCに戦闘の助けを借りると止まります。

    修正しましたので、お手数をお掛けして申し訳ありませんがご確認ください。

  28. Y Sakaguchi

    こんばんは、更新お疲れ様です。

    テスト版にて無事【滅びの呼び声】をクリアしました。確かにあのNPC、付帯能力っぽいカードが付いてましたね。

    素早い対応ありがとうございました。ではでは。

  29. k4nagatsuki reporter

    ご確認ありがとうございます。あのシナリオは雰囲気が凄くいいですね。そして1.50の一部バージョン辺りに格納イメージが壊れたBMPになってしまうバグがあってだいぶ前に対処したのですが、そのバグを最初に発見した思い出深いシナリオだったりします。ラストバトルの敵の画像でした。同じバトルでまたバグを起こすとは因縁というやらなんというやら……。

    とりあえず大物含めて色々バグが出ているので、明日辺り0.12.3β3をリリースしたいです。

  30. 権兵衛 七篠

    開発お疲れ様です。
    今夜のCWHSチャットで話題に上がった要望の報告です。
    Pyエンジンでは1.50以前のエンジンで設定可能な項目がいくつかなくなっていますが、 これを復活させることは出来ないでしょうか?
    こちらで調べてみたところ、
    「拡大カードの画像補正を行う」「縮小カードの画像補正を行う」「所持金変更時の視覚効果」(1.50config「画面」タブから)
    「パーティーのオートロード」「背景クリックによるキャンセル」「背景クリックによるイベント間のジャンプ」「レベルを最大値に維持」「張り紙のキャプションにパスを表示しない」(1.50cfg「システム」タブから)
    などの項目がPyに相当する項目のないもののようです。
    ※なかでも「背景クリックによるイベント間のジャンプ」の選択は「空白時間を利用した演出を楽しむために不可欠である」との要望を頂いております。
     シナリオによっては空白時間を利用して色々な演出をしているのでセリフやメッセージを送るスクロールホイールが
     勢い余って空白時間の演出もそいでしまう、という可能性などは確かにありそうです。

  31. k4nagatsuki reporter

    確かにそれらの機能は意図的にオミットしています。理由としては「こんなもの誰が使うんだ?」というような大雑把な判断によるものなので、必要としている人がいるならばもちろん実装するべきですね。

    とりあえず内容が多岐に渡るので、個別にIssueを立ててきます。

  32. k4nagatsuki reporter
    • Issue #229: 追加案: CWのオプション「拡大・縮小カードの画像補正を行う」
    • Issue #230: 追加案: CWのオプション「パーティのオートロード」
    • Issue #231: 追加案: CWのオプション「背景クリックによるイベント間のジャンプ」
    • Issue #232: 追加案: CWのオプション「背景クリックによるキャンセル」
    • Issue #233: 追加案: CWのオプション「レベルを最大値に維持」
    • Issue #234: 追加案: CWのオプション「張り紙のキャプションにパスを表示しない」
    • Issue #235: 追加案: CWのオプション「所持金変更時の視覚効果」

    個別のIssueを立てました。漏れがあったらお知らせください。

    空白時間の件は、必要としている方がいらっしゃいますので、0.12.3までにどうにかします。

  33. 暗黒 騎士

    こんばんは。やっとpy形式で起動することができたので、 スキルアップがてらなにか変更してビルドに挑戦してみたいと思います。 そこで、ひとつ質問してもよろしいでしょうか? 荷物袋から使用の特殊カード。 とても便利なのですが、先頭に置かれるとどうも異物感があるので、所持カードの末尾に置くようにしたい(あるいはオプションで変えられるようにしたい)と思っているのですが、難しいでしょうか。 実装時のpullリクエストを見た感じ、cardcontrol.pyを数行いじればいけるかなという認識なのですが。

    それと健康なPCに回復やその他無効な状態異常解除をしようとすると無効化音が鳴るのですが、 Pyは素通ししているようです。実害はないと思いますが、一応報告しておきます。

  34. k4nagatsuki reporter

    コードに手を入れていただけるとなるととてもありがたいです。ご質問の件ですが、確かにその変更自体は簡単だと思います。

    具体的にはカードリストに荷物袋を追加している箇所を変更すればすぐ動くようになるのではないでしょうか。

    ただ、やはりこれは設定できた方がよいですね。現状、設定を追加するのは少し面倒です。

    • cw/setting.pyに設定・設定の初期化・設定の読み込み処理を追加
    • cw/xmlcreater.pyに設定の保存処理を追加
    • cw/dialog/setting.pyに設定を変更するUIを追加(チェックボックス・初期値化処理・変更した設定の反映処理)

    これだけの作業が必要になります。しかし、ぜひ挑戦してみていただきたいです。単純なOn/Off型のオプションなので、同様の単純なオプションに似た形で書けるはずです。また、何か疑問があったらお答えできると思います。


    それと健康なPCに回復やその他無効な状態異常解除をしようとすると無効化音が鳴るのですが、 Pyは素通ししているようです。実害はないと思いますが、一応報告しておきます。

    ありがとうございます。これは鳴るようにしたつもりだったのですが確かに鳴ってないですね……一応、後で合わせておきます。

  35. k4nagatsuki reporter

    pull request #892で鳴るようにしました。

    ところで、CWと異なる点として、回避属性の効果コンテントの回避成功時に無効音ではなく回避音が鳴るのですが(CWでは無効音)、これは今のところ仕様です(私が開発を引き継ぐ以前に仕様として組み込まれた経緯を見ています)。数百本のシナリオをプレイした結果まったく問題がなさそうに思えているので、今のところそのままになっています。

  36. 暗黒 騎士

    ありがとうございます&修正お疲れ様です。 レスを書いているあいだに修正されているとは…。

    まさに欲しているヒントでした。一朝一夕ではいかないと思いますが、頑張って挑戦してみたいと思います!

  37. 暗黒 騎士

    うーん…どちらかは自分で直してみようと思いましたが、まだ手に負えないっぽいので報告させてください。

    1)ウインドウ拡大中に設定ダイアログで拡大設定を変更してOKを押すとリサイズしようとしている最中に高頻度で強制終了。 倍率1.3→1.2の時になりやすいが、一度F4し直すと数回は大丈夫な時がある。

    2)宿帳で老人冒険者を成長させて永眠させるとCWでは所持カードはカード置き場にすべて置かれるがpyでは消滅する? またPCを削除した場合、1枚目はカード置き場に置かれるが、2枚目以降なくなっている場合がある。

    例:一枚目に癒身の法、二枚目に氷柱の槍を持たせておくと氷柱の槍がない。

    この処理はselect.pyの「#手札カードを移動させる」あたりだと思うのですが、なんでそうなるのかさっぱり…。

    今更ですが、Pyの拡大機能はサブウインドウも拡大してくれるので高解像度モニタにはありがたいですね(CWの画面が小さくなってしまうので)。 もう1.50には戻れないかも。

  38. k4nagatsuki reporter

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

    1)は今手許で何度か試してみたのですが再現しません。リサイズする内容によるのでしょうか? 例えばタイトルアニメ中、タイトル画面、カードが表示されているなどなど。また、拡大中に設定を変更した場合のみ発生する現象でしょうか。

    2)は今から調べてみます。私はこうした現象の調査をするのにIDEのステップ実行機能を使っていますね。使わずともデバッグはできるのですが便利なものは便利なので。以前はEclipse+PyDevという環境でしたが、いまはPyCharmというIDEが重宝しています(有償ソフトですがCommunity版は無償です……ただし英語に限る)。

    サブウィンドウの拡大は、やっぱり対応しようとするとものすごく面倒なんですよね。拡大されないのも気持ちは分かります。

  39. k4nagatsuki reporter

    2)をpull request #897で修正。PCの持札は配列で管理されているのですが、この配列の状態はカードを移動すると当然変わります。そしてPythonのfor文では、配列のループ中に配列の内容が変わるとループが中止されるようになっています(たぶん。もしかしたら未定義動作かも)。そのため、「持札を全て移動するために持札の配列でループ」→「持札を1枚手放す」→「持札配列の状態が変わってループ中止」ということになって、1枚だけ移動ということになっていたようです。これはループの前に配列のスライスを取れば解決でき、今回は実際にそうしています。

    永眠については単純に処理が抜けていました……。

  40. k4nagatsuki reporter

    そういえばそちらはXP環境だったでしょうか。ちょっとこちらもXP環境で1)を試してみます。

  41. k4nagatsuki reporter

    そういえば拡大→拡大とやると黒地の部分が見えるんですが普通→拡大の時は見えないですね。自分で作った部分のはずだけどどういう処理の違いがあるんだっけ。

    ちょっとその線から違いを調べてみます。

  42. k4nagatsuki reporter

    単に処理速度の問題のようです。そしてXP環境でも再現しません。かなり細かい環境依存なのでしょうか?

    申し訳ないのですが、試していただきたい事があります。

    拡大設定変更時に呼び出されるcw.cwpy.set_expanded()cw.cwpy.update_scale()の中にprint文やsys.stderr.write("")などを数行起きに仕込んで減少を起こし、実際にはどこまで処理が進んで落ちたか確認していただきたいのです。例えば処理が進む毎に123……とprintされるようにしておけば、「6までは出ているが7が出ていない。67の間に問題の処理がある」と判断できます。

    また、関数内の処理を半分削ってみて、現象が再現しなくなるかどうか確認するという手段もあります。再現しなくなるならば、たぶん削除した半分の中に問題があるのです。

    こちらの方でも引き続き調べてみますが、できれば調査にご協力いただけないでしょうか。

  43. 暗黒 騎士

    削除&引退で所持カードが正常にカード置き場に配布されているのを確認しました。

    >配列のスライス

    あぁ~やっぱりそのへんでしたか。 丁度そのサイトなどで勉強してたんですが、 1枚だけではなく、たとえば7枚持っていると5,6,7枚目などの後方のカードは配布されているようでしたので、 逆にスライスというのが、今回のような変則的な配布を定義する文だと思い、その文型ではないのになぜ?と余計に混乱していました。

    IDEというのは総合開発環境というやつでしょうか、ううむ、PyCharmというのも後で調べてみますね。

    追記:上記了解です。こちらでも試してみます。

  44. k4nagatsuki reporter

    ありがとうございます。

    確認なのですが、描画サイズは1倍以外でしょうか。1倍だと、updatedrawsizeFalseになっており、self._init_resources()は実行されないはずです。その場合はelse以下に行くと思います。

    しかし確率的に落ちるというのが気になりますね。試しにthread.pyの372行目にあるcw.cwpy.frame.exec_func(cw.cwpy.frame.SetClientSize, cw.wins(cw.SIZE_GAME))をコメントアウトすると落ちなくなったりしないでしょうか。

    これはウィンドウのサイズを変更するための処理です。もしかするとこれの処理タイミング次第で問題が起きるのかもしれません。

    なお、これをコメントアウトすると拡大時にステータスバーが描画されない状態が発生すると思うのですが、設定ダイアログはF2キーで出すことが可能です。

  45. 暗黒 騎士

    ビンゴのようです!372行目をコメントアウトしたところ、いくら変えてもブラウザを開いていても落ちなくなりました。 デフォ設定は現在1.3倍になってます。そこから1.2、1.5にすると高頻度で落ちていました。

    ただ、すいません。確認不足でめっちゃ申し訳ないのですが、 どうもこのレスを書いているFireFoxのブラウザが干渉している可能性も出てきました。 閉じると(皆無ではありませんが)クラッシュ頻度が減るようです。 そちらの環境では再現できないということですし、ここまで限定環境下の現象であれば下手に変えない方がいいのかもしれません。

  46. k4nagatsuki reporter

    ありがとうございます。ご存知と思いますが、CWPyはpygameとwxPythonという2つのライブラリを使っています。そしてこれらは同一のスレッドで動かすことはできないので、別個のスレッドに分けて各々が処理を行っているのですが、別々に動いているのでタイミング次第で変な現象が起こる場合があります。たぶんこれもそのくちでしょう。wx側のSetClientSize()のタイミングをずらすとなんとかなるかもしれません。

    そしてFirefoxは結構重い(登場当初は軽さが売りだったんだけど……)Webブラウザなので、たぶんそのために処理の遅れが発生しやすい→まずいタイミングが発生しやすい、というようなことかもしれません。

  47. 暗黒 騎士

    おお、FireFoxを開き直した影響で軽くなったのか現行バージョンは6回に一回ぐらいの頻度で落ちているのが、 テスト版は70回ほど連続で激しく変えても一度も落ちなくなりました!!

  48. k4nagatsuki reporter

    ご確認ありがとうございます。上手くいってよかった……。

    上の修正をpull request #898でマージしました。環境依存のバグは恐いので解決できてよかったです。

  49. 暗黒 騎士

    お疲れ様です。 自分の環境では、今回の他には、スキンを変えた後Windows側の×を押したとき落ちたのが2回ほど.exe.log出力されたぐらいで、 安定動作しており、仕様違いもかなり無くなってきたように思うので、もはや自信をもって勧められそうな感じです。 12.3正式版とても楽しみです…!

  50. k4nagatsuki reporter

    おっと、他にエラーが出ているのですね。エラーフリーが基本なので、それも直しておかないといけないです。

    よろしければ、どんなエラーが出たか教えていただけないでしょうか。

    12.3正式版とても楽しみです…!

    ありがとうございます。もうそろそろRC版へ進みたいところですね。

    あと0.12.3に入れるものがあるとしたら#236の戦闘時設定でしょうか。必要としている方がいそうですので……。

  51. 暗黒 騎士

    画像以外を添付する方法が、ちょとわからないので自分のところに上げてみました。

    https://bitbucket.org/akkw/cardwirthpy-reboot/downloads/CardWirthPy.exe.log

    さきほど再現するか試していたところ、一度だけ設定ダイアログでスキンを変えてOKしたタイミングで強制終了しました。 昨日の件と同じタイミングが悪かった系かと思いますが、どちらにしろ低頻度すぎて意図的に再現できないのでお役に立てなそうです。

    それと最新版changelogで「。」つけてもらって感謝です。 あれだけでコミットするのも憚られたので、次なにか変更するときこっそり直そうと思ってました(笑)。

  52. k4nagatsuki reporter

    ありがとうございます。MenuCardalphaパラメータが無いと言っていますが、そのパラメータが無いなんてことがあるんだろうか……? たぶんタイミングによってはあるようですね。調べてみます。

    それと最新版changelogで「。」つけてもらって感謝です。 あれだけでコミットするのも憚られたので、次なにか変更するときこっそり直そうと思ってました(笑)。

    文化にもよりますがlinux開発なんかではリファクタリングとかコメントの修正みたいなプルリクエストが結構来るようで、Linus氏が「お前ら次のコミットメッセージに「cleanup.」なんて書きやがったらぶち殺すぞ(大意)」みたいなことを言ってたりしましたね。

    CWPyはlinuxより圧倒的に暇なので大丈夫。気になるところがあったら修正リクエストを出してくださいませ(でもxmlcreaterなんか今更直すのは厳しいよなぁ……)。

  53. k4nagatsuki reporter

    Fnキー操作によってダイアログを開きかけている時にさらに他の操作ができてしまうため、内部状態がおかしくなっている事があるようです(アクセス違反でメモリが破壊されていることもありえます)。今まで見逃していましたが、F2等を高速連打してみると一目瞭然でおかしな事になると思います。MenuCard#alphaが存在しないというエラーがどうも発生し得ないようなのですが(CWPyCardのコンストラクタ冒頭でalphaパラメータを作っている)、これもメモリが破壊されたせいかもしれません(何か見落としている可能性もある)。

    とりあえずそうした事が起こらないように修正しました。

  54. 暗黒 騎士

    CWでは対象消去されたPCの持っていたプレミアカードは荷物袋に置かれますが、 どうやらpyにはその処理がないようなので実装しようと試みています。

                # プレミアカードを荷物袋へ移動する
                for pocket in self.cardpocket:
                    for card in pocket[:]:
                        cw.cwpy.trade("BACKPACK", header=card, from_event=True, sort=False)
    

    これをcw/character.py のdef set_vanish内に挿入することで全カードを移動させられるようにはなったんですが、 プレミアカードだけを絞りこんで送る方法がわかりません。 なにかとお手数お掛けしっぱなしで心苦しいですが、ヒントをいただけないでしょうか…

    それと設定ダイアログで「デバッグモードでプレイする」のチェックを外してOKを押した直後は 背景を左クリックで設定ダイアログが開く、右クリックが効かない状態になるようです。 カードをクリックすると正常に動くので特に実害はなさそうですが。

  55. k4nagatsuki reporter

    card.premium == "Premium"のカードだけ移動させるようにしてください。

    とだけ書いてしまうと話は簡単なのですが、たぶんデータの扱いについて説明した方がいいと思います。ここでのcardの型は、cw/header.pyに定義されているCardHeaderです。CWPyではデータ構造としてXMLを使用しており、それはプログラム内の取り回しでも同様なのですが、XML形式だとデータ量が多く高速な処理が難しいため、一部のデータを取り出して簡素に扱えるようにした*Headerというオブジェクトを用意しています。例えば冒険者データはAdventurerHeaderとして取り回します。キャラクタが所持可能な各種カードは全てCardHeaderです。

    プログラム中に出てくるdatacarddataという名前のオブジェクトは、大抵はXMLデータ本体を示しており、headerという名前のオブジェクトはHeaderを指しています。もちろん例外もあって、キャストカードのHeaderだからccardだとかプレイヤーカードだからpcardみたいな名前で定義されているものもあります。

    この構造を扱う上で注意するべきこととしては、Headerが持つフィールドを変更したからといって、XMLデータ本体が変更されるわけではないということです。例えば使用回数をHeaderから読み取って表示する分には何も問題はありません。しかし、使用回数を減らすという処理を行う時は、Headerを通じてXML本体にアクセスし、その中にある使用回数のデータを操作した上、ファイルに書き込まなくてはなりません。

    長々と書きましたが、今回のケースではCardHeaderpremiumというメンバにプレミアに関する情報が入っているので、単にそれを参照すればOKです。

    それにしても、プレミアカードという区分は今ではすっかり意味を失ってしまった感がありますね……。


    それと設定ダイアログで「デバッグモードでプレイする」のチェックを外してOKを押した直後は 背景を左クリックで設定ダイアログが開く、右クリックが効かない状態になるようです。 カードをクリックすると正常に動くので特に実害はなさそうですが。

    ダイアログを多重に開かないようにするための処理が誤爆してるっぽい感じがしますね。ありがとうございます。調査して修正します。

  56. k4nagatsuki reporter

    ダイアログを多重に開かないようにするための処理が誤爆

    全然違いました……。pull request #905で修正。

  57. 暗黒 騎士

    修正お疲れ様です。

    >例えば冒険者データはAdventurerHeaderとして取り回します。キャラクタが所持可能な各種カードは全てCardHeaderです。

    ああ、なるほど!! 関数?だけはソースとコミット検索から辿るしかないもので数日このheaderという単語の抽象性に悩み続けていました。 とても分かりやすい説明ありがとうございました。

    1.20の頃は質に入れられましたし、赤いPの文字が格好良かった気がしますが、 今は背景と一体化していてデザインが崩れますし、呪いのアイテムぐらいにしかならないですからね…。 そう考えると無意味な実装のような気もしてきましたが(笑)作業してきます。

  58. 暗黒 騎士

    うーん…いただいたヒントを元に色々と試行錯誤してみたのですが、 'card'のattributeErrorやglobalまたはLocal NameErrorというのが出まくって動きません…。 card.premium=="PREMIUM"のような文はxxx.yyy"zzz"形式で、xxxがCWの状態変数でいうフォルダ、 yyyが変数名、zzzがフラグの状態というような理解は間違っていますか? やはりまだ荷が重かったかもしれません。

    重箱の隅を楊枝で穿るような違いですが、ないよりはした方がいいと思うので気づいたことを報告します(既知の仕様等でしたらスルーして下さい)。

    1)CWでは戦闘中に混乱やその他ペナルティカードが選ばれた際、 CHECK_FIXED(ナイフが刺さったようなアイコン)がカード上方に表示されるが(手動で選んだ際には付かない)、Pyでは表示されていない。

    2)戦闘中に選択しているカードの描写優先順位が少し異なっている。 たとえば、ゴブリンの洞窟最終戦で言うと、CWのデバグ宿や賢者の瞳で手札可視状態にしたゴブリンの選択しているカードは手前のホブゴブやコボルトのキャストカードより優先されて表示されているが、Pyでは手前のキャストカードより上には表示しない。

  59. k4nagatsuki reporter

    CardHeaderpremiumがないというのは不可解ですね。どこで誤っているのか。とりあえず、cardの正確な型を知らないと属性やメンバがないと言われても対処のしようがないので、print cardをしてcardの型を確認してみてはいかがでしょう。


    1)CWでは戦闘中に混乱やその他ペナルティカードが選ばれた際、 CHECK_FIXED(ナイフが刺さったようなアイコン)がカード上方に表示されるが(手動で選んだ際には付かない)、Pyでは表示されていない。

    この仕様の存在に気づいていませんでした。選択不可の時は表示するようにしてみます。

    2)戦闘中に選択しているカードの描写優先順位が少し異なっている。

    たしか使用する時は他のカードの後ろに隠れていたはずなので、おそらく(1)可視状態にして(2)そのキャストを選択した時に限り、最前面に出てくる感じですね。対応できるか調べています。

  60. k4nagatsuki reporter

    それぞれ対応しました。後者の選択カードはPCよりも手前に表示されるようですね。

  61. 暗黒 騎士

    え、一瞬で修正ですか(絶望

    対象消去されたタイミングでprint cardしても NameError: global name 'card' is not definedで止まってしまいますね…。 self.cardだとAttributeError: 'PlayerCard' object has no attribute 'card'になります。

  62. k4nagatsuki reporter

    うーん、何が起きているか分からないですね……cardという変数自体が存在しないと言われているので、何か根本的に間違っているような気がします。

    少なくとも

            # プレミアカードを荷物袋へ移動する
            for pocket in self.cardpocket:
                for card in pocket[:]:
                    cw.cwpy.trade("BACKPACK", header=card, from_event=True, sort=False)
    

    このような処理であれば、内側のforループの中にはcardが存在しているはずです。

    ちょっと問題の箇所の周辺一帯のコードを見せていただけないでしょうか。

  63. 暗黒 騎士

    上記の通り、cw/character.py のdef set_vanish内に

        def set_vanish(self, battlespeed=False):
            """
            対象消去を行う。
            """
            if cw.cwpy.ydata:
                cw.cwpy.ydata.changed()
            if isinstance(self, cw.character.Friend):
                # 1.50までは同行NPCに対象消去は効かない
                return
            if not self.is_vanished():
    

    ここでprint cardなどcardやpremiumを含むコードを書くと止まり、しかし上記の# プレミアカードを荷物袋へ移動するを挿入すると上手く実行されるので、謎なのです。

  64. k4nagatsuki reporter

    # プレミアカードを荷物袋へ移動するの処理の中で初めてcard変数が出現するので、上の2重ループ処理が存在する事は大前提ですよ。例えば次のようになるはずです。

        if not self.is_vanished():
            # プレミアカードを荷物袋へ移動する
            for pocket in self.cardpocket:
                for card in pocket[:]:
                    if card.premium == "Premium":
                        cw.cwpy.trade("BACKPACK", header=card, from_event=True, sort=False)
    
  65. 暗黒 騎士

    あれ…その型も試したつもりになっていたのですが、どうも字下げエラーなどと混同していたのか、 何百回とErrorが出ていたのが嘘のように上手くいきました! 大変、お手数おかけしました。

  66. k4nagatsuki reporter

    お役に立てたようで何よりです。pull requestを楽しみに待たせていただきますね。

  67. 暗黒 騎士

    この前のエラーの再現方法がわかりました。

    タイトル画面で設定>自動生成>中止>OKで設定ダイアログを閉じ、 更にPyを閉じると高確率でError occurredが出てLogが保存されるようです。

  68. k4nagatsuki reporter

    ありがとうございます。再現を確認しました。

    どうもどこかでwxオブジェクトの取り扱いを間違っているっぽいですね……調査して修正します。

  69. k4nagatsuki reporter

    pull request #912で修正。同じようにグリッドのセルのエディタを使いまわしている処理が他にもあるのですが、小数点以下の数値エディタだけの問題かもしれません。

  70. 暗黒 騎士

    更新お疲れ様です&マージありです! 設定ダイアログの開閉を一通り確認してみましたが、エラー0になっていました。

    あらかた片付いた感じでしょうか。 新たなバグや仕様違いを見つけないかぎり、基本ROMってることになりそうですが、 なにか文章作業やデバッグなどで手伝えそうなことがあれば気軽に声かけてください。

  71. k4nagatsuki reporter

    ありがとうございました。いつもとても助かっています。

    とりあえず今はエラーフリーで(BASSとSDL_mixerの問題とか一部を除いて)0.12.4がリリースできるように祈るだけですね。また何かあったらぜひお知らせください。

  72. Former user Account Deleted

    初めまして。isurugiと申します。ライフゲージの表示とバックログに関して気になる点があったので報告させて頂きます。

    体力100%時以外の状況において、ライフゲージの現在値の表示が1.50及びNextと比べると1dotだけ右にずれているようです。(左記2バージョンよりも表示上多く見えます。0.12.3β4の方で確認。0.12.2はこちらの環境ではうまく起動しないので未確認です)

    また、バックログ表示中にF9による緊急避難を行うと、宿に戻ってもバックログが表示されたままになることがある模様です。(こちらも0.12.3β4です。ログをかなり戻してからの方がなりやすい…かもしれません)

    あと、こちらは要望になりますが、戦闘不能時のライフゲージ表示の有無を選べるとありがたいです。

    以上、拙い文ですが報告させて頂きました。

  73. k4nagatsuki reporter

    はじめまして。ご報告・ご要望ありがとうございます。

    確認したところ、確かにライフゲージは1ドットずれています。割合の計算等ではなく単純に描画位置が違うようです。CWに合わせて変更させていただきます。

    バックログの方も調査して修正させていただきます。

    あと、こちらは要望になりますが、戦闘不能時のライフゲージ表示の有無を選べるとありがたいです。

    たしかに意識不明であれば表示されていても意味は無いですね。機能としては特に問題なく、難度も低いので実装自体はすぐにできると思うのですが、よろしければなぜ非表示にしたいか教えていただけないでしょうか(単にその方が見た目がすっきりするから、等の理由でも構いません)。

  74. 暗黒 騎士

    自分も今確認して気づいたのですが、 どうやらCWでは戦闘不能時にゲージが非表示になる仕様のようです。 たしかにそのまま合わせるよりオプションで表示されていた方が嬉しいかもしれません。

  75. k4nagatsuki reporter

    あ!? 本当ですね。10何年プレイしていて全然気づいていませんでした。これはむしろオプション等ではなく完全に合わせてしまうほうが筋かもしれません(あまりオプション項目を増やしたくのもあります……)。

    標準を非表示にして、むしろライフゲージがあった方がいい、という方がいらっしゃったらオプション化する方針にしたいところです。

  76. k4nagatsuki reporter

    ライフゲージは単純に1ドットずれていたわけではありませんでした。気楽に構えていたら散々な目に遭いましたがなんとか完全に一致したと思います。

    また、意識不明時の表示は、とりあえず消しました。「表示されたほうがいい!」というご意見をいただいた場合はオプションで復活させます。

  77. Former user Account Deleted

    予想以上に早いお返事ありがとうございます。

    「設定のフォントのどの項を変更するとどこのフォントが変更されるのか」を掴みきれていないため上記の報告からは外しましたが、「役割別フォント」の「メッセージ」及び「選択肢」の項でフォントを変更しても反映されていないような気がします。(勘違いかもしれないです)

    >戦闘不能時のライフゲージ非表示

    やや特殊なタイプの自作ゲージを使用していて、上記の1dotのズレとの関係で戦闘不能時の表示がみっともない状況になってしまったのが理由です。(標準的なライフゲージを使う分には)CWPy独自の仕様としてこれはこれでありかな、とも思いましたが…

  78. k4nagatsuki reporter

    メッセージのフォントの設定は少し特殊で、実はスキンの方に「メッセージでクラシックなフォントを使用する」というオプションがついています。これはメッセージのフォントを強制的にCWに合わせるためのオプションです。設定ダイアログの「一般」→「スキン」→「編集」で出てくるダイアログの下方の当該項目のチェックを外すと、初めてメッセージのフォント設定が変更されます。

    これはCWとのフォントの食い違いを吸収するために、かなり以前に仕込んだ仕様なのですが、今ではフォントのカスタマイズができるので却って分かりづらい形になっていますね。いずれどうにかした方がいいかもしれません。

  79. 暗黒 騎士

    RC1で教会の妖姫の、バルドゥア戦3ラウンド目でフリーズしたのでご報告します。 症状としては音楽は鳴りっぱなしで、閉じる以外のキーが効かなくなり、閉じようとするときに出る確認ダイアログのみ正常に動作している感じでした。 また閉じた時にLog出力されました。

    これといって特殊なことをしていない戦闘ですし、アルフレートが鷲嘴剣を使おうとして失敗したのか?ぐらいしか思い浮かばなかったので、鷲嘴剣の所有数を増やして数戦してみましたが、再現はしませんでした。 ログを見る限り同行NPC関係ぽいですが…

    それと1.28世代のシナリオで、おそらくMIDIリセット用のreset.midが呼ばれたタイミングに強制終了することがありました。 こちらはlog出力されませんでしたし、再現もしません。ただ、この時は再生形式が自動選択設定になっているXeditorを同時に開いていたのでそっちと競合したのか微妙なところです。

  80. k4nagatsuki reporter

    ご報告ありがとうございます。ご迷惑をお掛けして申し訳ありません。

    戦闘行動中に? 選択メンバ交代→行動が表示される(?)→表示対象に同行NPCが入っている(!?)→NPCは画面上にいないため行動を表示しようとするとエラー

    という流れのようなのですが、そもそもマウスやキーボードによる選択以外でも行動が表示されるというのがおかしいですし、その対象に同行NPCが入っているというのはさらにおかしいです。NPCが所持するカードが選択状態に(例えばカード移動時のように)なっていればそういうことも発生するかもしれませんが、そもそのNPCの所持カードは選択できません。どういう流れでそうなったのか調べているのですが今のところ見当もついていません。しばらくお待ちください。

    最悪の場合は行動表示時の判定を増やしてケースごと潰してしまうこともできますがどうにも気持ち悪いので原因をはっきりさせたいところです。

    それと1.28世代のシナリオで、おそらくMIDIリセット用のreset.midが呼ばれたタイミングに強制終了することがありました。

    サウンドフォントは使用されているでしょうか? CWPy(というかpygame)はSDL_mixerを使用すると音源リセットで時々不具合が発生することがわかっています。サウンドフォントを一つも設定していない場合はSDL_mixerが使用されるため、その不具合が顕在化してしまいます。そうでない場合は他アプリケーションとの競合などでしょうか。そうなると対処が難しくなりそうです。

  81. k4nagatsuki reporter

    おっと、選択メンバ交代ではないですね。change_selection()はマウス下などのカードを反転してクリック可能な状態にする処理です。本来戦闘行動中には絶対呼び出されないはずなのですが、呼び出されたとしたらそれ自体が不可解ですね。

    カードの選択が戦闘行動中にできてしまうような隙があるのかもしれません。

  82. k4nagatsuki reporter

    カードの選択処理がメインループから呼び出されていて、戦闘行動中に処理がメインループまで戻る事はないのでラウンド終了時が怪しいですね。怪しい箇所を潰してみます。

    音声の方は、BASS Audioが使用されているようですね……一度サウンドフォントが壊れていたせいでSDL_mixerが使われてエラーになるという事例を見たことがあるのですが、複数のサウンドフォントを設定しているのであればそういうことも無さそうです。

    Windowsのアプリケーションログにエラーが残っていないでしょうか? XPであれば、たしか マイコンピュータを右クリック→管理→イベントビューア→アプリケーション で見られると思います。

  83. k4nagatsuki reporter

    見当をつけて手を入れましたが、問題が再現しないので未確認です。また問題が出たらお知らせください。

  84. 暗黒 騎士

    エラー発生アプリケーション cardwirthpy.exe、バージョン 0.12.3.0、エラー発生モジュール unknown、バージョン 0.0.0.0、エラー発生アドレス 0x0325821dとありました。

    お疲れ様です。では、最新版でプレイを続行してみますね。 まあ新パーティを育てがてらなので気長に(笑)。

  85. k4nagatsuki reporter

    エンジン本体ではなく外部モジュールっぽいですね……そうするとやはり音周りでしょうか。

    ご迷惑をお掛けしますが、それもまた発生した時に状況を教えていただけないでしょうか。

  86. 暗黒 騎士

    こんばんは。上記と別件ですいませんが、以前の症状の再発というか、気づいてなかっただけかもしれませんが、今日は宿画面で1.5倍から1.0倍に戻す際に強制終了することがありました。例によってログは出力されませんでした。

    AppName: cardwirthpy.exe AppVer: 0.12.3.0 ModName: unknown ModVer: 0.0.0.0 Offset: 1e07cec9

    今のところ二回です。ただ、以前のような明らかな高頻度ではないので気をつけていれば大丈夫だと思います。

    それと好みの領域の仕様かもしれませんが、CWでは移動モードのカードダイアログでSkill・Item・Beastボタンは選択中のものは押せなくなるのですが、Pyだと押し放題なようです。またNEXTでも押せるようですが、NEXTは効果音が鳴りません。

  87. k4nagatsuki reporter

    強制終了となるとどこかでメモリが破壊されていると思うのですが、やはりwx側とpygame側の兼ね合いの問題でしょうか。私のところでは全く発生したことが無いので、問題を見つけづらいです。

    ある程度の頻度で発生するようでしたら、以前と同様self.frame.SetClientSizeを呼び出している箇所をコメントアウトして発生しなくなるかどうか見ていただけないでしょうか。

    それと好みの領域の仕様かもしれませんが、CWでは移動モードのカードダイアログでSkill・Item・Beastボタンは選択中のものは押せなくなるのですが、Pyだと押し放題なようです。またNEXTでも押せるようですが、NEXTは効果音が鳴りません。

    その辺りはもう無害ではないかなぁと思います。1ページ目で上へ行くと最終ページに上がる仕様やテーブルモードでテーブルボタンを押すとキャンプモードに切り替わる仕様など、インタフェースには細かな違いがあります。問題になるようなら、修正しましょう。

  88. 暗黒 騎士

    1.5→1.0→1.5→F4→1,0を繰り返したところ大体二回に一回で再現するのでやってみます。

    pull request #898

            def func()
                #self.frame.exec_func(self.frame.SetClientSize, cw.wins(cw.SIZE_GAME))
            self.exec_func(func)
    

    こんな感じでいいのでしょうか。とりあえずこれで起動してF2F4操作で数回やってみたところ、強制終了するのは確認しました。今回はこれではなさそうです?

    うーん、自分の好み的には1.50以前の方がしっくり来るのですが、実害はないですし、問題とは言えないですね。 荷物袋のループ仕様は実用性としてはPyのが便利だと思いますが、 やはりCWに慣れていると途惑うので、オプションもあった方がいいかなとは思います。

    実用性と言えば、Pyでは済み印のついた張り紙に入れるバグが修正されていますが、 有用なバグなので挙動を合わせたり、または、たとえば、特定キーを押しながらだと入れるというような「ウラワザ」を組み込むなどは駄目でしょうか。 具体的には銃コンビニ倶楽部 というシナリオがこのバグを前提にしており、Pyだとデバグモードでないと使えなくなっているので、やや不便を感じています。 デバグモード利用とバグ利用の何が違うのかと言われると説明に困りますが…。

  89. k4nagatsuki reporter

    ご迷惑をお掛けして申し訳ありません。画面サイズ変更の問題について、長引きそうなのでIssue #240を立てました。お手数をおかけしますがこちらでよろしくお願いします。


    細かい部分の挙動の違いですが、これらはよほど戸惑うものでない限りはオプションを設けたくない、というのが本音です。というより、オプション自体を増やしたくありません(すでに増えすぎています)。設定できる項目が多いのはよいことのようですが、実際にはソフトウェアとしては複雑になりすぎ、ユーザの目から見ても戸惑いの種になってしまうからです。

    ただ、「よほど戸惑うもの」かどうかを決める基準は今のところ私の独断になっているので、そこにプレイヤーの意見を容れる仕組みが必要だと思います。

    貼紙の裏技については以前も可能にならないかと言われたことがありまして、その時は「デバッグモードをご利用ください」と回答しました。よほど不便なのであれば、いっそ隠し設定で常に済印を無視するようなモードを設けた方がいいのでしょうか……。

  90. 暗黒 騎士

    では、そちらに書かせて頂きますね。

    なるほど。オプションを多用すると処理が重くなると言うようなデメリットもあるのでしょうか。 Pyは前身Verや各バリアントとの互換性を強調していますし、互換を高めるということは細かな差異に対応するということで、小さい需要に応えられるように、むしろ、オプションを増やしていくべきなのではないかと思っていましたが…。

    「常に」だと味気ないんですよね…仕様の穴をつくあの操作が、隠し技っぽくていいというか(笑)。 まあ思い入れの部分なので仕様ですと言われたら食い下がるほどではないです。

  91. k4nagatsuki reporter

    互換を高めるということは細かな差異に対応するということで、小さい需要に応えられるように、むしろ、オプションを増やしていくべきなのではないかと思っていましたが…。

    処理の重さよりも複雑さの方が問題ですね。これには内面の複雑さも外面の複雑さも含みます。仰ることはまったくその通りで、理想的にはそうなのですが、現在の設定画面ですらすでにチェックボックスが多すぎて望みのオプションを見つける事が難しい状態です。Firefoxのabout:configのような手を使うのもいいかもしれませんが……。

    「常に」だと味気ないんですよね…仕様の穴をつくあの操作が、隠し技っぽくていいというか(笑)。 まあ思い入れの部分なので仕様ですと言われたら食い下がるほどではないです。

    済印をつけた状態で入れるという挙動は、それを前提にしたシナリオでは仕様ですが、他のシナリオではバグになってしまうので難しいところです。対象消去バグやゴシップF9バグと同様、互換性DBの出番なのかもしれません。

  92. 暗黒 騎士

    個人的な感想としては、流石にタブが3行に突入しているソフトは乱雑な感じがしますが、 Pyはまだタブがダイアログの半分ぐらいしかないので、今の倍はあっても大丈夫ではないかなーという印象です。 普段Firefoxやサクラエディタなどのカスタマイズ性の強いソフトを使っているせいもあるかもしれませんが。

    まだ互換性DBについては把握していなかったので、過去ログを読んできました。 ついでにData/Compatibility.xmlに格納されているという情報がわかりにくかったので「互換性情報の生成のしかた」のページに追記しておきました。

    藤野亭にある、新エンジンで不都合の出るシナリオのリストはご存じだったでしょうか。 いくつか登録されていないシナリオが見受けられます。 自分も昔のシナリオは結構保存してあるのでよければハッシュ値の生成含めお役に立てると思いますが、 これはなんというか、声が掛かるまではそっとしておきたい部分なのか、積極的に編集した方が助かる類の作業でしょうか。後者であればお手伝いしたいと思いますが…

    ただ、銃コンビニ倶楽部はタイトル名等が頻繁に変わっているはずなので、現状の娘のリソースなどのように、 そういうタイプのVer違いも網羅的にハッシュ値対応していくとなると、あまり合理的ではないという懸念はありますね。

  93. k4nagatsuki reporter

    エディタ系統とエンジン系統では性質が異なるので、カスタマイズの自由度について一概には言えないと思います。私が基準にしているのはCardWirthで、その設定内容と比較して複雑すぎると考えています。

    設定ダイアログを簡略表示→任意で複雑化とできるようにすればよいかもしれないとも考えていますが、今のところ手を付けていません。それが実現すれば少しオプション追加のハードルが下がると思います。


    互換性DBについて。追記とリストの紹介ありがとうございます。手持ちのシナリオがいくつかあるようなので再確認してみます。また、互換性情報は積極的に集めていきたいので、互換モードの方が上手く動くシナリオがあれば(あるいはこんな互換動作が足りないなども)どんどん情報提供なりpull requestなりしていただければと思います。

    ただ、銃コンビニ倶楽部はタイトル名等が頻繁に変わっているはずなので、現状の娘のリソースなどのように、 そういうタイプのVer違いも網羅的にハッシュ値対応していくとなると、あまり合理的ではないという懸念はありますね。

    「更新がかかるようなシナリオは新しいエンジンにも対応するだろう」という想定で今の仕組みになっていますが、タイトルまで変えられるとマッチングの面で手のつけようがありませんね……。

  94. k4nagatsuki reporter

    ちょっと事情がありまして明日・明後日と連絡が取れない状態になるかもしれません。ご報告やpull requestなどに即応できなくなってしまいますが、その後戻ってくるはずなので数日お待ちください。

    また、私以外で動ける方が対応していただけるととても助かります。

  95. k4nagatsuki reporter

    ここに書くのが遅れましたが昨日戻りました。今後は元通りに対応できると思います。

  96. 暗黒 騎士

    お疲れ様です。バグっぽい挙動を見つけたのでご報告します。 PC情報ダイアログの「デザインを変更する」からショートカット先の画像に変更しようとした場合に反映しない(しなくなることがある?)ようです。 ついでに要望なのですが、ショートカット先の絶対パスはドライブ直下に置かないとほとんど表示しきれないため、ショートカット名を表示した方がフォルダわけが捗るような気がしますが、難しいでしょうか。

  97. k4nagatsuki reporter

    ありがとうございます。問題を確認してpull request #931で修正しました。

    デザインダイアログで顔画像が変更されたか判断する時に、「選択された画像はYadoフォルダ下でなくData/Faceフォルダ下か?」という基準を用いていたために、ショートカット先(絶対パス)は「Faceフォルダ下じゃないから画像は変更されていない」と判断してしまっていました。

    そしてデバッガのキャラクター編集にも似たようなバグがあるかと思って調べると案の定おかしかったので修正しました。

    要望の方はIssue #243を作成しました。実装は0.12.3リリース後になると思うのですが、お待ちくださいませ。

  98. k4nagatsuki reporter

    このIssueも非常に長くなってしまっているので(100コメント超えてる……)、そろそろ次のIssueを立ててきます。

  99. 暗黒 騎士

    修正確認しました。 自作キャスト絵を台紙と合成した時の見栄えを見つつ修正を入れるのに作業フォルダに直接ショートカットつけたら便利なんじゃないかと思っていじってたんですが、実際かなり作業効率上がりました。ありがとうございます!

  100. Log in to comment