w0a zmienia ustawienia Windows — wartości rejestru, plany zasilania, wywołania sterowników. Nie zapisuje niczego na poziomie kernela, nie instaluje własnego sterownika, nie wstrzykuje kodu do gier i nie czyta pamięci gier. Każda zmiana w rejestrze i planach zasilania jest zapisywana razem z wcześniejszą wartością i cofa się jednym kliknięciem.
Trzy kroki
1. Uruchom. Nie ma instalatora: jeden plik wykonywalny, prawy przycisk, "Uruchom jako administrator". Uprawnienia administratora są potrzebne, bo zmieniane ustawienia dotyczą całej maszyny — proces działający na poziomie użytkownika nie może ich zapisać.
2. Najpierw zmierz. Otwórz Benchmark, pograj minutę lub dwie na tej samej mapie i zrób pomiar, zanim cokolwiek zmienisz. To krok, który ludzie pomijają — i właśnie dlatego tak duża część tej dziedziny to folklor.
3. Zastosuj i zmierz jeszcze raz. Włącz to, co chcesz — po jednym przełączniku naraz, jeśli chcesz wiedzieć, który co zrobił — i zrób drugi pomiar na tej samej scenie, z tymi samymi ustawieniami w grze.
Jak naprawdę działa cofanie
Zanim wartość zostanie zapisana, stara jest odczytywana i dopisywana do dziennika w %ProgramData%\w0a\backup.json — razem z kluczem, nazwą wartości, jej typem i informacją, czy w ogóle istniała. Zapisy są grupowane w punkty kontrolne, a powrót do punktu jest powrotem do tamtej chwili, a nie wybiórczym cofnięciem: każda zmiana wprowadzona po nim — łącznie z późniejszymi punktami kontrolnymi — zostaje cofnięta razem z nim, i dokładnie to mówi okno potwierdzenia, zanim ruszy.
Dziennik leży w %ProgramData%, a nie w profilu użytkownika, bo cofanie działa z uprawnieniami administratora i instrukcje bierze z tego pliku. Z tego samego powodu plik nie jest dowolnym skryptem: cofnąć da się tylko ścieżki z allow-listy wkompilowanej w aplikację, więc spreparowany dziennik nie może posłużyć do zapisania czegoś tam, gdzie nie powinien.
Strona Fix to druga połowa i od dziennika nie zależy wcale. Prawie każda karta bezwarunkowo zapisuje z powrotem domyślną wartość Windows — więc maszynę da się naprawić, nawet jeśli w0a nigdy jej nie dotknął, dziennik został usunięty albo wartość zmieniło coś innego. Jedyny wyjątek to karta CS2: opcje uruchamiania i autoexec to twoje własne pliki, dla których nie ma domyślnej wartości Windows do przywrócenia, więc ta karta przywraca kopie .w0a.bak zrobione przez w0a, a jeśli ich nie ma, nie robi zupełnie nic. To także powód, dla którego strona Fix ma prawo usuwać wartości, których reszta aplikacji nie może zapisywać.
Pełna procedura cofania, krok po kroku
Czego odmawia i dlaczego
Żadnych wartości na poziomie kernela. Klucze na poziomie kernela — paging executive, large system cache, użycie pamięci NTFS, żądania rozdzielczości timera — są odrzucane z góry, a jeśli któryś kiedykolwiek zostanie dodany, test w buildzie nie przejdzie. Strona Fix zachowuje prawo, by usuwać trzy z nich — paging executive, użycie pamięci NTFS i żądania rozdzielczości timera — bo stara instalacja po jakimś innym narzędziu musi dać się naprawić. Large system cache jest odrzucany i na tym koniec: nigdy nie jest zapisywany ani usuwany.
Żadnych kluczy MPO ani TDR. Tryb testowy overlay, wyłączanie overlay, opóźnienie TDR i poziom TDR nie są zapisywane. Na prawdziwej maszynie zawieszały CS2, a strona rejestru ustawia TdrDelay z powrotem na domyślną wartość Windows, zamiast go podnosić.
Żadnego wstrzykiwania, żadnej pamięci gier. Nic nie jest ładowane do procesu gry i nic go nie czyta. Zapisywane są trzy pliki gry i żadne inne: config CS2 i opcje uruchamiania Steam, o które sam prosisz na stronie „Opcje uruchamiania”, oraz plik ustawień wideo CS2 na stronie „Ustawienia wideo”. Każdy z nich, zanim zostanie tknięty, jest kopiowany obok do pliku .w0a.bak. Wciąż nie możemy składać obietnic w imieniu żadnego producenta anti-cheatów — ale żadne z zachowań, których szukają, nie jest zachowaniem tego programu.
Żadnego własnego sterownika. Temperatura CPU i timingi RAM wymagają odczytów ring-0, których Windows nie udostępnia. Do nich — i tylko jeśli się zgodzisz — instalowany jest podpisany sterownik PawnIO: czyta i nigdy nie zapisuje. Odmów, a te dwa odczyty będą po prostu niedostępne.
Jak mierzy
Czasy klatek pochodzą z własnego strumienia zdarzeń Windows. Nie ma overlaya, hooka ani wstrzykiwanego DLL-a: konsumowane są te same zdarzenia, które system operacyjny i tak emituje, i zamieniane na średni FPS, 1% low i stuttery na minutę. Liczy się 1% low — średnia potrafi rosnąć, gdy w grze czuć, że jest gorzej, i to jest dokładnie ten przypadek, który pojedyncza średnia ukrywa.
Opóźnienie wejścia mierzone jest z prawdziwego ruchu myszy: odstęp raportów jest mierzony w miarę ich napływania, więc pokazywany polling rate to to, co urządzenie faktycznie dostarcza, a nie to, co twierdzi jego pudełko. Obok próbkowany jest czas DPC i ISR każdego sterownika na maszynie — to właśnie pozwala wyśledzić stutter do sterownika, który go powoduje, zamiast zgadywać.
Przed i po chodzą parami. Wyniki są przechowywane jako pary, a porównanie pojawia się tylko wtedy, gdy istnieją oba pomiary. Liczba, z którą nie ma czego porównać, nie jest dowodem na nic.
Kolejność instalacji, która daje stabilny 1% low, i jak samodzielnie sprawdzić każdą jej liczbę
Dlaczego cichnie w trakcie meczu
Odczyt czujnika graficznego bierze blokadę wewnątrz jądra graficznego. Odpytywanie co dwie sekundy w trakcie działania gry dawało na prawdziwej maszynie widoczne szarpnięcie — narzędzie reklamujące płynniejsze klatki samo je zabierało. Pytanie nie brzmi więc, czy gra jest na wierzchu, tylko czy w ogóle działa: gra przełączona w tło nadal renderuje, a odczyt zrobiony, gdy siedzisz w przeglądarce, kosztuje ją tę samą blokadę karty, którą kosztowałby w środku walki. Odpytywanie sprzętu zatrzymuje się na cały czas działania gry i wraca, gdy gra się zamknie. Ta sama zasada obejmuje skanowanie magistral i przeglądanie procesów.
Wszystko startuje wyłączone
Na świeżej instalacji każdy silnik działający w tle jest wyłączony — podbijanie priorytetu, równoważenie tła, zarezerwowane rdzenie, wstrzymywanie indeksera, strażnik uśpienia. Każdy to twoja świadoma decyzja, na osobnym przełączniku, i każdy mówi, co zrobi, zanim to zrobi. Silnik, któremu nie uda się pięć przebiegów z rzędu, zatrzymuje się sam i mówi dlaczego, zamiast po cichu zawodzić do końca sesji.
Czego nie mierzy i czego nie obiecuje
Ile którakolwiek z tych rzeczy pomoże, zależy od maszyny, gry i trasy sieciowej — i w0a nie udaje, że jest inaczej. Nigdzie w produkcie nie ma obietnicy "10x FPS". Zmiany sieciowe nie poprawią trasy, która już jest zapchana; CPU siedzący na limicie mocy nie zacznie taktować wyżej dlatego, że zmienił się plan. To, co narzędzie gwarantuje, jest węższe i sprawdzalne: mówi, co zmieniło, nie zmieniło niczego innego i każdą z tych zmian umie odłożyć na miejsce.