Special K 「PC ゲームのスイス アーミー ナイフと愛情を込めて呼ばれる Special K は、あらゆる機能を備えています。グラフィックスの修正と強化、多くの詳細なパフォーマンス分析と修正 MOD、そして絶えず増加するツールのパレットで最もよく知られています。 PC ゲームに影響を与えるさまざまな問題を解決します。」
リポジトリの内容
このリポジトリには、Special K のコード インジェクション ペイロード (
SpecialK(32|64).dll
) のソース コードが含まれています。SKIF ( Special K Injection Frontend ) や現在非推奨となっている SKIM ( Special K I nstall Manger ) などのサポート ユーティリティは、別個のプロジェクトとして維持されます。さらに、Special K を使用して構築された一部の古い MOD はスタンドアロンのプラグイン DLL として存在します。プラグインと SKIM は現在は積極的にメンテナンスされていませんが、Kaldaien の GitHub プロファイル経由でアクセスできます。
依存関係を構築する23.5.7 以降のリポジトリを複製すると、Special K のビルド依存関係がすべて含まれます。古いバージョンには、2010 年 6 月の DirectX SDK への追加の依存関係があります。
古いコンパイラには言語機能がないため、Special K をコンパイルするには Visual C++ 2022 以降が必要です。
プラットフォームの依存関係Special K は Windows 8.1 より古いものではサポートされていませんが、(23.5.7 時点では) Windows 7 (プラットフォーム アップデート) 上でも引き続きビルドおよび実行されます (機能が大幅に削減されています)。
WINE で実行され、DXVK と互換性がありますが、Linux で動作するには、ゲームごとの INI ファイルで
UsingWINE=true
を設定する必要があります。
その他デバッグ ビルド構成を使用すると、プロジェクトが正しくコンパイルされない可能性が高くなります。Special K は、デバッグ可能なリリース ビルドを生成するように設計されています。
Special K の DLL は、次の 2 つの方法のいずれかでコードを挿入できます。
ローカルインジェクションプロキシ/ラッパーDLL
SpecialK(32|64).dll
名前を(dxgi|d3d11|d3d9|d3d8|ddraw|dinput8|OpenGL32).dll
に変更し、Static Imports またはLoadLibrary (...)
の呼び出しを介して利用します。グローバル インジェクションWin32 グローバル フックチェーン
これは推奨される手法であり、DLL は
RunDLL_InjectionManager (...)
を介して外部の支援なしでフックをブートストラップできます ( rundll32.exe は通常の Win32 UI プロセスとして DLL をホストします)。
DLL を挿入する方法は他にもたくさんありますが、上で概説した 2 つは追加のツールなしで使用できます。
CreateRemoteThread (...)
のようなものを使用して独自のツールを構築したい場合、Special K はすでに実行中のゲームに喜んで注入しますが、遅延注入により Special K の一部の機能 (特に D3D に関連する機能) が妨げられることに注意してください。オーバーライドとシェーダー/テクスチャ MOD) が機能しなくなります。
フックチェーンの順序により CBT フックが選択されました。 Windows 上のほとんどのグラフィック API は、重要な初期化を行う前にウィンドウを必要とするため、CBT フックにより、D3D9/11/12 スワップチェーンの作成前にアプリケーションに確実にアクセスできます。