仕組み
アプリが PC に実際に何をするのか、何を拒否するのか、そして変更をどう元に戻すのか。何かが壊れた後ではなく、インストールする前に読んでいただくための説明です。
w0a が変更するのは Windows の設定です: レジストリの値、電源プラン、ドライバーの呼び出し。カーネル レベルには何も書き込まず、独自のドライバーもインストールせず、ゲームにコードを注入することも、ゲームのメモリを読み取ることもありません。レジストリと電源プランへの変更は、すべて変更前の値とともに記録され、ワンクリックで元に戻せます。
3 つのステップ
1. 起動する。インストーラーはありません: 実行ファイル 1 つを右クリックして、「管理者として実行」を選ぶだけです。変更する設定は PC 全体に及ぶため、管理者権限が必要です。ユーザーごとのプロセスでは書き込めません。
2. まず測定する。何かを変更する前に「ベンチマーク」を開き、同じマップを 1~2 分プレイしてキャプチャを取ります。多くの人が飛ばすステップで、それを飛ばすからこそ、この分野には言い伝えのような話が多いのです。
3. 適用して、もう一度測定する。必要なものをオンにします (どれが何をしたかを知りたい場合は、スイッチを 1 つずつ)。そして同じ場面、同じゲーム内設定で 2 回目のキャプチャを取ります。
元に戻す仕組みの実際
値を書き込む前に、元の値を読み取り、キー、値の名前、種類、そもそも値が存在していたかどうかとあわせて、%ProgramData%\w0a\backup.json のログに追記します。書き込みは w0a の復元ポイントにまとめられます。ポイントに戻すことは、変更を選んで取り消すことではなく、その時点に戻ることです: それ以降の変更は、後のポイントも含めてすべて一緒に元に戻ります。実行前の確認にも、まさにそう表示されます。
ログをユーザー プロファイルではなく %ProgramData% に置いているのは、元に戻す処理が管理者権限で実行され、その指示をこのファイルから受け取るためです。同じ理由で、このファイルは自由形式のスクリプトではありません: 元に戻せるのは、アプリに組み込まれた許可リストにあるパスだけです。そのため、改ざんされたログを使って、書き込んではいけない場所に書き込むことはできません。
もう半分を担うのが Fix ページで、こちらはログにまったく依存しません。ほぼすべてのカードが、無条件で Windows の既定値を書き戻します。そのため、w0a が一度も触れていない PC でも、ログが削除されていても、ほかの何かが値を変更していても修復できます。唯一の例外は CS2 のカードです: 起動オプションと autoexec はお客様自身のファイルで、戻すべき Windows の既定値がありません。そのため、このカードは w0a が作成した .w0a.bak のコピーを戻し、コピーがなければ何もしません。アプリのほかの部分が書き込めない値を「Fix」ページが削除できるのも、このためです。
拒否していることと、その理由
カーネル レベルの値は書き込みません。カーネル レベルのキー (ページング エグゼクティブ、大きなシステム キャッシュ、NTFS のメモリ使用量、タイマー分解能の要求) は最初から拒否しており、どれか 1 つでも追加されるとビルド内のテストが失敗します。「Fix」ページは、そのうち 3 つ (ページング エグゼクティブ、NTFS のメモリ使用量、タイマー分解能の要求) を削除する権限を残しています。ほかのツールが以前に入れた設定を修復できる必要があるためです。大きなシステム キャッシュは拒否したうえで、そのままにします: 書き込むことも、削除することもありません。
MPO と TDR のキーは書き込みません。オーバーレイのテスト モード、オーバーレイの無効化、TDR の遅延、TDR のレベルは書き込みません。実際の PC で CS2 がフリーズしたためです。「レジストリ調整」ページは TdrDelay を引き上げるのではなく、Windows の既定値に戻します。
注入なし、ゲームのメモリの読み取りなし。ゲームのプロセスには何も読み込まず、ゲームのプロセスを読み取るものもありません。書き込むゲームのファイルは 3 つだけです: 「起動オプション」ページで指定した CS2 の設定ファイルと Steam の起動オプション、そして「ビデオ設定」ページでの CS2 のビデオ設定ファイル。どのファイルも、手を付ける前に同じ場所へ .w0a.bak としてコピーします。オンにしたエンジンは、ドキュメント化された Windows の呼び出しを通じて、実行中のゲームの優先度、コア、GPU スケジューリングのクラス、メモリの下限を変更します。これをブロックするアンチチートもあります。また、センサー用の PawnIO ドライバー (任意) はカーネル ドライバーで、一部のアンチチートはこれを確認します。アンチチートの開発元に代わって何かを約束することはできません。
独自のドライバーはありません。CPU の温度、RAM のタイミング、RAM の温度には、Windows が公開していない ring-0 の読み取りが必要です。これらの読み取りのため、承認した場合に限り、署名済みの PawnIO ドライバーをインストールします。このドライバーは読み取るだけで、書き込むことはありません。拒否した場合、その 3 つの値が表示されないだけです。
測定の方法
フレーム タイムは、Windows 自身のイベント ストリームから取得します。オーバーレイもフックも、注入する DLL もありません: OS がすでに出しているイベントを受け取り、平均 FPS、1% Low、1 分あたりのカクつき回数に変換します。重要なのは 1% Low です: 平均が上がっても、ゲームの体感が悪くなることがあり、平均値だけではまさにその状況が見えなくなります。
入力遅延は、実際のマウスの動きから測定します: レポートが届くたびに間隔を計測するので、表示されるポーリング レートは、パッケージの記載ではなく、デバイスが実際に出している値です。あわせて、PC 上のすべてのドライバーの DPC と ISR の時間をサンプリングします。これにより、カクつきの原因を推測するのではなく、原因のドライバーまでたどれます。
変更前と変更後はペアで扱います。結果はペアとして保存され、比較は両方のキャプチャがそろったときにだけ表示されます。比べる相手のない数値は、何の証拠にもなりません。
安定した 1% Low を支えるインストール順序と、その中のすべての数値を確かめ直す方法
試合中に静かになる理由
グラフィックスのセンサーを読み取ると、グラフィックス カーネル内のロックを取得します。ゲームの実行中に 2 秒ごとに読み取っていたところ、実際の PC で目に見えるカクつきが起きました: フレームを滑らかにすると宣伝するツール自体が、フレームを犠牲にしていたのです。そのため、問題はゲームが前面にあるかどうかではなく、そもそも実行中かどうかです: Alt+Tab で切り替えたゲームも描画を続けており、ブラウザーを見ている間の読み取りでも、戦闘中と同じアダプターのロックがゲームの負担になります。ハードウェアの読み取りはゲームが起動している間ずっと止まり、ゲームを終了すると再開します。バスのスキャンとプロセスの走査にも同じルールが適用されます。
すべてオフの状態から始まる
新規インストール時は、バックグラウンド エンジンはすべてオフです: 優先度の引き上げ、バックグラウンドのバランス調整、予約コア、インデクサーの保留、スリープ防止。どれも専用のスイッチで、ご自身が意図して選ぶものであり、実行する前に何をするかを示します。5 回続けて失敗したエンジンは、そのセッションの間ずっと黙って失敗し続けるのではなく、自動的に停止して理由を伝えます。
測定していないことと、約束していないこと
どれだけ効果があるかは PC、ゲーム、ネットワークのルートによって異なり、w0a はそうでないふりをしません。製品のどこにも「FPS が 10 倍」といった主張はありません。ネットワークの変更で、すでに飽和しているルートが良くなることはありません。すでに電力制限に達している CPU は、プランを変えてもクロックが上がりません。このツールが保証するのは、もっと狭く、確かめられることです: 何を変更したかを示し、それ以外は何も変更しておらず、その変更をすべて元に戻せることです。