要望/提案:3倍描写倍率の追加に関して

Issue #1099 resolved
K_8 created an issue

はじめまして。いつもCardWirthPyを楽しくプレイさせて頂いております。
類似の課題がありましたが、issueの根本が違うと思いましたので別件で立てさせて頂きます。

題名の通り、描写倍率3倍の設定を追加することはできますでしょうか。

この度、ノートパソコンを新調し、CardWirthPyのプレイ環境(ノートパソコンのディスプレイ解像度)が2K相当のWQXGA(2560×1600)になりました。
この解像度ですと、表示/描写倍率2倍設定でもゲーム画面がかなり小さい為プレイに支障が出る状況にあります。
ディスプレイ設定から画面を150%や200%へ拡大して表示するとPyの画面も拡大されますので折角2倍で作成した.x2.pngのキャラクターアイコンも引き延ばされてしまいます。
CardWirthPy.exeのプロパティから、"互換性->高DPI設定の変更->高DPIスケール設定の上書き->高いDPIスケールの動作を上書きします"を設定し、どのディスプレイ拡大倍率でも等倍表示されるようにしましたが、結局ゲーム画面の大きさ事態は変わりませんので、"視認性/操作性と画質の両立”という根本的な解決には至りませんでした。
ディスプレイの解像度を落としてみましたが、ネイティブ解像度であるWQXGA(2560×1600)以下ですとピクセルが潰れてしまいディスプレイ全体の画質が劣化します。

色々と試した結果、ゲームサイズ(表示倍率)3倍が最も適切なバランスであると感じました。
しかし現状、キャラクターアイコンに係る描写倍率が2倍しか選べず(4倍の選択肢は私が4K環境でないため選択できない)、3倍の描写倍率が選択できないため、.x3.pngのキャラクターアイコンを作成しても適用されません。

PCディスプレイを取り巻く環境はどんどん高解像度環境へ変化しています。
過去の課題ポストから開発サイドの状況が不活発であるとのこと承知しておりますが、こちらも(キャラクターアイコンの解像度に目をつむらいない限りですが)プレイに支障が出ている状態なので自身で対処できることであれば対処したいです。

試しにSettings.xmlから <ExpandDrawing>3</ExpandDrawing>へ変更してみましたが、変化は見られませんでした。
Pythonソースコードに3倍描写自体を追加しないと適用されないと思い至り、課題立てに至った次第でございます。

現環境
OS: Windows11 Home 64bit
CPU: AMD Ryzen9 7940HS
RAM:32GB
ディスプレイ(ノートパソコン画面):WQXGA(2560×1600),拡大倍率150-180%で調整中。
外部モニター無し。
ご連絡お待ちしております。

敬 具

K_8

Comments (8)

  1. k4nagatsuki repo owner

    結論から言うと、その環境においては描画倍率を2倍にしてx2を表示し、それを表示倍率3倍で拡大するか、設定ファイルの編集で描画倍率を無理矢理4倍にしてx4のイメージを表示し、それを表示倍率3倍で縮小するのがよいと思われます。その場合はExpandDrawingを4にしてください。

    ただし4倍は結構描画に負荷がかかるのでゲームが遅くなるかもしれません(今時のマシンは大丈夫なんでしょうか)。

    以下はなぜ描画倍率に3倍が無い(追加できない)のかの理由です。


    以前はそうではなかったと思うのですが、現在は描画倍率は2の乗数になっています。そうでなければ画像の拡大率と描画の拡大率に端数の出るケースがあるためです。

    • x1の画像を2倍で描画→2倍
    • x1の画像を3倍で描画→3倍
    • x1の画像を4倍で描画→4倍
    • x2の画像を2倍で描画→1倍
    • x2の画像を3倍で描画→1.5倍
    • x2の画像を4倍で描画→2倍
    • x3の画像を2倍で描画→0.666666...倍
    • x3の画像を3倍で描画→1倍
    • x3の画像を4倍で描画→1.333333...倍

    端数が出るとまずい事が起こります。CWの画面は大部分シナリオ側で配置したカードと背景セルで構成されているのですが、これらはしばしば(というよりほとんどの場合)精密にピクセル単位で配置されています。端数が出ると、右端と下端の位置がピクセル単位でずれます。そのため、敷きつめていたはずのカードや背景セルに隙間ができたり、重なったりといった問題が生じてしまいます。正しい画面が構築できなくなるのです。

    これが描画サイズやxNに2の乗数以外の数字を指定できない理由です。

    対して表示倍率は、構築済みの画面全体にかかる倍率です。従って上記のようなパーツ毎のずれの問題は発生せず、小数点以下も指定可能となっています。

  2. K_8 reporter

    k4nagatsuki様

    迅速かつ詳細なご返答、ありがとうございました。
    ご提案いただいた手法”設定ファイルの編集で描画倍率を無理矢理4倍にしてx4のイメージを表示し、それを表示倍率3倍で縮小するのがよいと思われます。その場合はExpandDrawingを4にしてください。”により、キャラクターアイコンの表示がうまくいきました。
    (一つ目の手法は、描画倍率2倍のx2キャラクターアイコンのピクセルが、表示倍率3倍に連動して引き延ばされてしまうためうまくいきませんでした。)

    また、描画に負荷がかかる可能性についてのご懸念に関しても、私のマシンでは問題なく動作しました。
    テスト環境:
    背景の切り替え方式、カード描画速度:最大または最大から-1/-2
    メッセージ表示速度:最大
    テストシナリオ:ゴブリンの洞窟、エフェクトブースターとフラグの反転によるカード反転など画面演出を多用するシナリオ

    x4のキャラクター画像は用意がなかったので急作りで一つ作成し、iGPUとdGPUどちらでも試しましたが、
    CPU使用率は一瞬だけ最大で11%になる程度、ゲーム速度の遅延はiGPUだとカード描画速度:最大から-1/-2で、若干の遅延(カード反転など描画フレームレートの低下)が見られる程度で、
    特別プレイに影響が出るほどではありませんでした。(特にマウスホイールのスクロールを用いるとほぼ遅延は感じませんでした。)

    別件ですが”intel CPUと違い、AMD RyzenだとCWは1スレッドしか使わず特定のシナリオで動作がカクつく”というSNSでの報告が気になっていましたが、戦闘中の召喚獣(付帯能力)表示(描画)時に一瞬固まる事以外、特に問題となる遅延は今のところ見られていません。

    現在の所、深刻な問題は見られませんので引き続き、テストを兼ねて色々シナリオをプレイしてみます。
    丁寧に対応していただき、心より感謝しております。

    どうぞ今後ともよろしくお願い申し上げます。

    敬 具

    K_8

  3. k4nagatsuki repo owner

    問題無く動いているようであればよかったです。

    召喚獣表示時のウェイトは仕様上のものかもしれません。カード表示後、なにが表示されたのか示すためにウェイトをかけています(CWからの仕様)。拡大率を下げても同じように固まるのであればそれで間違いないと思われます。

    `詳細設定→詳細→スキップと空白時間→カードの使用前に空白時間を入れる`のチェックを外すことでそのウェイトは減らす事ができます(ただし全てのカード使用が高速化してしまいます)。

  4. K_8 reporter

    k4nagatsuki様

    ご連絡ありがとうございます。

    おっしゃられる様に”詳細設定→詳細→スキップと空白時間→カードの使用前に空白時間を入れるのチェックを外す”を実行し、毎ラウンド表示される付帯能力(召喚獣)付きで模擬戦闘を10ラウンド回して見たところ、ほぼカクつきは見られなくなりました。カード使用の高速化もカード描画速度:最大から-2の状態で丁度良い速さと主観ながら感じております。

    この現象は旧デスクトップPC環境(OS: Windows10 Home, CPU: Intel i7 6700K, RAM: 16GB)では発生しておらず、現在のラップトップCPU環境に移行後のいずれの倍率/拡大率でも発生している為、Windows11もしくはRyzenへの最適化の問題かと考えております。

    あれからx4キャラクターアイコンを6人分揃え、新規宿で長編を除くシナリオを20本ほど回してみましたが、気になった点は複数のシナリオでBGM音量がランダムな間隔でアップダウンしている程度でした。

    このままプレイを継続しますが、これ以上の問題や気になる現象は特に見当たらないと感じております。
    次回バージョンアップへのフィードバックに活かしていただければ幸いです。

    いずれにせよ、当初の課題である描写倍率の問題は解決し、快適にプレイできております。

    改めて感謝申し上げます。

    ありがとうございます。

    敬 具

    K_8

  5. Log in to comment