
Linuxでゲームをプレイしていて、ビデオゲームの考古学に興味があるなら、 D7VK 1.4 は、きっとあなたにとって、ますます馴染みのある音になり始めるでしょう。この小型ながらも強力な変換レイヤーは、WineやProtonをベースにVulkan経由でDirect3D 5、6、7のクラシックタイトルを楽しむための重要なコンポーネントとなっています。さらに、DXVKもバージョン1.4へと進化し、DirectXからVulkanへの変換エコシステム全体を強化しています。
以下では、 D7VK 1.4 の最も重要な新機能と、それが DXVK/Wine エコシステムにどのように適合するか本稿では、DXVK 1.4 の旧ゲームとの互換性とパフォーマンス、制限事項、そして Linux システム(Windows でも、二次利用であれば)での使用開始方法について解説します。また、DXVK 1.4 の多くのアイデアやコンセプトは DXVK 1.4 と共通し、相互に補完し合っているため、DXVK 1.4 の主要機能についても簡単に触れます。
D7VK とは何ですか? また、どのような問題を解決しますか?
D7VKは 従来の 3D アプリケーションやゲームを実行するために設計された Vulkan ベースの変換レイヤー Linux上でWine経由でDirect3D 7、6、5を使用するアプリケーションです。D7VKは、Direct3DとDirectDrawのスタック全体をゼロから実装するのではなく、DXVKのD3D9バックエンドとWineのDDraw実装(あるいはWindowsネイティブのDDraw実装)を利用して、両者間の最小限のプロキシとして機能します。
簡単に言えば、 D7VK は、古い Direct3D 5/6/7 ゲームと DXVK 間の「インタープリター」として機能します。これにより、すべてがVulkanに変換されます。これにより、多くのクラシックタイトルは、開発者がコードを1行も変更することなく、Vulkanの利点(オーバーヘッドの削減、CPU使用率の向上、リソース管理の改善)を活用できるようになります。
それを理解することは重要です D7VKの主な目標は、D3D7との適切な互換性を提供することです。DirectX の歴史を遡れば遡るほど、API が「呪われた」ものとなり、DDraw や GDI とのやり取りが少なくなるため、D3D6 と D3D5 に「実験的な」サポートを追加します。
D7VKのアーキテクチャとスコープ
D7VK のアーキテクチャは非常に実用的なアプローチに基づいています。 これは DXVK (特に D3D9 バックエンド) と Wine の DDraw に依存します。 D3D7/6/5 から必要なものだけを実装した薄いレイヤーを構築します。DirectDraw と D3D8 以前のすべての API を書き直すのではなく、ゲームが DXVK と正しく通信できるように、必要最低限の機能だけを統合します。
つまり、 DDrawの最も暗い部分をすべてカバーすることを意図したものではありませんこれは特に、D3DをGDIや異なるバージョンのDirectXと臆面もなく混在させるアプリケーションに当てはまります。このような場合、D7VKの作者自身もWineD3Dの使用を心から推奨しています。WineD3Dはパフォーマンス面では若干劣るものの、事実上すべての機能を実装し、こうした「呪われた」相互作用をはるかにうまく処理します。
D3D9にDXVKを利用することで、 D3D9のすべてのDXVK構成オプションはD7VKにも適用可能FPS制限、VSync制御、パフォーマンス統計情報を表示するHUD、内部動作調整などのパラメータが含まれます。D7VKは、DXVKが長年にわたって獲得してきた成熟度とパフォーマンスの多くを継承しています。
D7VK 1.4の主な新機能
D7VKバージョン1.4では、 特定のゲームとの互換性とグラフィックス動作の細部の洗練を目的とした一連の重要な改善アーキテクチャに根本的な変化はありませんが、一連の進歩が加わることで、多くの「問題のある」タイトルが完全にプレイ可能になります。
キーの透明色のサポート
D7VK 1.4の大きなハイライトの一つは、 Direct3Dの初期に広く使用されていた技術であるカラーキーの透明度のサポート アルファテストの安価な代替手段として。アルファチャンネルの代わりに、透明なピクセルを特定の色でマークしましたが、不完全な変換により、透明であるべき場所に不透明な色のブロックが生成されてしまいました。
コミュニティの活動、特に @CkNoSFeRaTU、D7VKはキーカラーの透明度を正しく処理できるようになりましたこれにより、Arx Fatalis、Messiah、Darkstone、Divine Divinity、Mortal Kombat 4 などのタイトルや、当時このグラフィック トリックを使用していた他の多数のゲームで発生した単色のアーティファクトが修正されます。
DDraw および「ビッグヘッド」ゲームとの相互運用性の向上
大きな進歩が見られたもう一つの分野は、 DDraw とサポートされているさまざまなバージョンの D3D 間の相互運用性の統合古い DirectDraw と Direct3D API は非常に非正統的な方法で混在しており、ゲームでは今日の観点からは意味をなさない動作が行われることがよくありました。
D7VK 1.4では、かなりの作業が費やされ、 DDrawとD3D7/6/5間の相互作用の管理方法を統一し強化するこれは、Plants vs Zombies や同時代の PopCap タイトルなどのゲームが不安定になったりプレイできなくなったりしていた状態から、正常に動作する状態になったことを意味します。
コミュニティからの貢献のおかげで、これらの問題も修正されました。 IClassFactory 経由の DDraw インスタンス化に関連するバグこの欠陥により、「Re-Volt」や「Sea Dogs」などのゲームが動作しなくなっていました。現在これらのタイトルはプレイ可能であり、D7VKで問題なく動作できるクラシックゲームのライブラリがさらに拡大しました。
特定のゲームの深度の改善、クリーニング、修正
協力者から提供された手がかりを活用して、 @Trass3r、D7VK 1.4ではDDrawから開始される深度クリアのサポートが追加されましたかなり特殊な機能のように聞こえるかもしれませんが、一部のゲームでは深度バッファを適切に管理し、Z ファイティングの不具合や描画不良の要素を表示しないようにするために重要です。
さらに、 深度書き戻しの予備サポート。現在はD16形式に重点を置いています。この改善により、「Star Wars Episode I: Racer」などのゲームで、以前はライトが非現実的な動作をしたり、隠れるべきときに隠れなかったりしていた光源の遮蔽の問題が修正されました。
D7VK 1.4の変更ログには以下も含まれています V-Rally 2 エキスパートエディションの起動時に発生するクラッシュを修正また、古いD3DまたはDDrawタイトルでクラッシュ、フリーズ、その他の異常な動作を引き起こす可能性のある「コーナーケース」に対する修正もいくつか行われました。この修正の恩恵を受けたゲームには、Revenant、Powerslide、Slave Zeroなどがあり、GTA 2でメインメニューに戻る際に発生する可能性のあるクラッシュに対する具体的な回避策も追加されました。
D7VKの基本的なインストールと使用方法
D7VK を Wine プレフィックスで起動して実行するのは比較的簡単です。 ファイルをコピーするだけです ddraw.dll ゲームまたはアプリケーションの実行ファイルの横 次に、その DLL をプライマリ コマンドとして使用するように Wine で適切なオーバーライドを構成します。
具体的には、 winecfgはライブラリのオーバーライド「native, builtin」を追加する必要がある ddraw 「ライブラリ」タブで、正しい順序を指定してください。DDrawとその旧D3D対応製品は常に32ビットのみに対応していたため、アーキテクチャを気にする必要はありません。
もあります GTA 2、StarLancer、Midtown Madness 2などの特定の特別なゲームに必要な代替展開パスその場合は名前を変更する必要があります。 ddraw.dll ワインシステムから ddraw_.dll をコピーします ddraw.dll D7VKからディレクトリへ system32 o syswow64 プレフィックス内のビット数に応じて、D7VKはまずロードを試みます。 ddraw_.dll 現在の道から抜け出す前に ddraw.dll システムの両方の部分が共存できるようになります。
D7VKはWindowsでも使用できますが、 開発やテストの対象となる主要なプラットフォームではないその場合は、単にコピーするだけです ddraw.dll ゲーム実行ファイルと一緒に配置されますが、DDraw の実際の実装が必要であり、インストールに重大な損傷が発生する可能性があるため、Windows システム ディレクトリに配置することは強く推奨されません。
DXVK 1.4: D7VK とのコンテキストと相乗効果
D7VKの歴史は、 Direct3D → Vulkan 変換の主要バックボーンである DXVK プロジェクト自体の進化 より現代的なゲーム(特にDirect3D 10および11)向け。DXVKバージョン1.4は大きな飛躍を遂げ、D7VKやD8VKなどのレイヤーの統合方法にも影響を与えました。
DXVK 1.4 アップデート Windows 10 (ビルド 1903) に含まれるバージョン 11.4 までの Direct3D 11 インターフェイスこれにより、「Plants vs. Zombies: Battle for Neighborville」のようなゲームにおける特定の問題が解決されました。D3D11.4で導入された新しいAPIは部分的にしか実装されておらず、既存のVulkan機能内で意味のある機能に重点が置かれています。
その DXGIインターフェースバージョン1.5(HDRサポートの確認機能を含む) (ただし、ネイティブHDR出力はまだありません)。さらに、DXGI-GDIインタラクションメソッドが追加され、Wine内で特定のDirect2D修正が行われている限り、Rockstar Game Launcherなどのクライアントの起動が容易になりました。
DXVK 1.4 のパフォーマンスと内部の改善
パフォーマンスの面では、DXVK 1.4はいくつかの興味深い最適化をもたらしました。 これらは多くの Direct3D 11 ゲームに影響を及ぼし、流動性を向上させ、CPU 負荷を軽減します。最も注目すべき点の1つは、オプションのデフォルトの有効化です。 d3d11.allowMapFlagNoWaitこれにより、マップされた特定のリソースをより効率的に管理できるようになり、特定のタイトルのパフォーマンスが向上します。
それらは解決された ウィッチャー3が正常に起動できなかった問題同期動作は、オリジナルのD3D11コントローラーに近づくように調整されました。さらに、『Dark Souls III』や『SEKIRO: SHADOWS DIE TWICE』など、遅延コンテキストを多用するゲームにおける潜在的なボトルネックも修正されました。
DXVK 1.4では、 内部リソースの追跡によりCPU消費がわずかに減少 バッファ、テクスチャ、その他のグラフィック要素を管理することで、これらの内部処理はすべてユーザーには見えませんが、D7VKのようなレイヤーとのよりスムーズな統合の基盤となります。D7VKは、可能な限り堅牢なD3D9/D3D11バックエンドを必要とします。
WineへのDXVK 1.4の実践的なインストール
WineでDXVKを直接使用したい場合の典型的なワークフローは次のようになります。 安定した DXVK パッケージをダウンロードして解凍し、必要な Wine プレフィックスを使用してインストール スクリプトを実行します。たとえば、バージョン 1.4 では次のことができます。
まず、次のようなツールを使用してファイルをダウンロードします。 wget 公式GitHubリンクから:
wget https://github.com/doitsujin/dxvk/releases/download/v1.4/dxvk-1.4.tar.gz
その後、パッケージは tarを実行して解凍されたフォルダにアクセスする:
tar -xzvf dxvk-1.4.tar.gz
cd dxvk-1.4
最後に、アクティブなWineプレフィックスに対してインストールスクリプトを実行します。 シンプルな sh setup-dxvk.sh install 適切な権限を持つ:
sudo sh setup-dxvk.sh install
このスクリプトでは、 DXVK の代わりに Wine の DXGI 実装を使用します。 Direct3D 12 ゲームに vkd3d を使用し、Direct3D 11 に DXVK を使用する場合は、次のコマンドを実行します。
setup-dxvk.sh install --without-dxgi
スクリプトが提案するもう一つの実用的な選択肢は DLLをシンボリックリンクとしてインストールする (オプションを使用して --symlink) により、複数の Wine プレフィックスの同時更新が大幅に簡素化され、DXVK の中央コピーを 1 つ更新するだけで済みます。
全体的に見ると、D7VK 1.4とDXVK 1.4 エコシステムを強化する その中で LinuxとWineは、Direct3D 5/6/7のクラシックと最新のD3D10/11タイトルの両方をプレイするための非常に本格的なプラットフォームとしての地位を確立しています。驚くほど Windows に近いパフォーマンスを提供し、何よりも、忘れ去られる運命にあった従来の API との互換性がますます広がっています。