FrameHub to rozwijany przeze mnie hobbystyczny program dla Windowsa, który łączy zarządzanie grami i aplikacjami z profilami procesów, ustawieniami CPU oraz narzędziami przeznaczonymi dla konkretnych gier.
Projekt wyrósł z wcześniejszego programu Process Core Optimizer, ale nie jest jedynie jego kolejną wersją. FrameHub powstał jako osobna aplikacja z nowym interfejsem, własną strukturą danych i znacznie szerszym zakresem działania.
Obecnie projekt skupia się przede wszystkim na zarządzaniu biblioteką gier i aplikacji, profilach CPU, kontroli procesów oraz konfiguracji Counter-Strike 2. Docelowo ma stać się jednym miejscem do obsługi bezpiecznych i odwracalnych ustawień związanych z wydajnością gier w Windows.

Od Process Core Optimizer do FrameHuba
Process Core Optimizer powstał jako narzędzie do zarządzania priorytetem procesów, CPU Affinity i Windows CPU Sets. Z czasem zacząłem dodawać do niego coraz więcej pomysłów związanych nie tylko z samymi procesami, ale też z grami, profilami i automatyzacją.
W pewnym momencie stało się jasne, że dalsze dokładanie funkcji do jednego wyspecjalizowanego programu nie będzie dobrym rozwiązaniem.
Chciałem stworzyć aplikację, która potrafi:
- prowadzić bibliotekę gier i programów,
- wykrywać pliki wykonywalne,
- zapisywać osobne profile dla konkretnych tytułów,
- automatycznie stosować ustawienia po uruchomieniu procesu,
- udostępniać narzędzia przygotowane dla wybranych gier,
- wykonywać zmiany w sposób przejrzysty i możliwy do cofnięcia.
Zamiast przebudowywać Process Core Optimizer w coraz większy kombajn, rozpocząłem osobny projekt. Tak powstał FrameHub.
Dlaczego osobny program?
FrameHub korzysta z doświadczeń zdobytych podczas rozwijania Process Core Optimizer, ale od początku miał być niezależną aplikacją.
Posiada własny:
- interfejs,
- katalog ustawień,
- system profili,
- moduł biblioteki,
- mechanizm skanowania gier i aplikacji,
- zestaw funkcji związanych z CS2,
- plan dalszego rozwoju.
Dane programu są przechowywane lokalnie w katalogu:
%APPDATA%\FrameHub
Znajdują się tam między innymi ustawienia użytkownika, profile oraz logi aplikacji.
Co potrafi FrameHub?
Aktualna wersja rozwija kilka głównych obszarów.
| Moduł | Zastosowanie |
|---|---|
| Biblioteka | Dodawanie gier i aplikacji oraz przypisywanie ich plików EXE |
| Skanowanie | Wykrywanie bibliotek Steam, manifestów Epic Games i wybranych folderów |
| Profile CPU | Zapisywanie CPU Sets, Affinity i priorytetu dla konkretnej gry lub aplikacji |
| Monitor profili | Automatyczne stosowanie zapisanych ustawień po uruchomieniu procesu |
| Core Control | Ręczne zarządzanie uruchomionymi procesami |
| Config dla CS2 | Edycja wybranych ustawień graficznych i pliku autoexec.cfg |
| Kopie zapasowe | Tworzenie backupu konfiguracji CS2 przed zmianami |
| Lokalizacja | Polski i angielski interfejs programu |
Nie wszystkie elementy widoczne w planie rozwoju są już aktywne. Część sekcji pełni obecnie rolę zapowiedzi dalszych modułów.
Biblioteka gier i aplikacji
Jednym z głównych założeń FrameHuba jest odejście od pracy wyłącznie na surowej liście procesów.
Użytkownik może budować własną bibliotekę gier i aplikacji, a następnie powiązać konkretną pozycję z plikiem wykonywalnym.
FrameHub potrafi korzystać z kilku metod wyszukiwania:
- ręcznego wskazania pliku
.exe, - skanowania biblioteki Steam,
- odczytywania manifestów Epic Games,
- skanowania wybranego folderu,
- wykrywania aktualnie uruchomionego procesu.
Takie podejście pozwala zarządzać ustawieniami z perspektywy konkretnej gry lub programu, a nie tylko nazwy procesu widocznej w Menedżerze zadań.
Profile optymalizacji
Dla dodanej gry albo aplikacji można utworzyć profil ustawień procesora.
Profil przechowuje między innymi:
- tryb CPU Sets albo CPU Affinity,
- wybrane procesory logiczne,
- priorytet procesu,
- stan automatycznego monitorowania.
FrameHub może obserwować uruchamiane procesy i zastosować zapisany profil po wykryciu właściwego pliku wykonywalnego.
Tak samo jak w Process Core Optimizer, celem nie jest obiecywanie automatycznego wzrostu FPS. Profil jest zestawem jawnych ustawień, które użytkownik może sprawdzić, zmienić albo całkowicie wyłączyć.
Co robi przycisk „Optimize”?
Ważnym założeniem było rozdzielenie zwykłego edytora profilu od przycisku Optimize.
Gdy gra nie ma jeszcze zapisanego profilu, edytor otwiera się w stanie neutralnym:
- tryb CPU Sets,
- priorytet Normal,
- zaznaczone wszystkie procesory logiczne.
Samo otwarcie edytora niczego nie zmienia. Ustawienia zostaną zastosowane dopiero po zapisaniu profilu albo świadomym użyciu odpowiedniej akcji.
Przycisk Optimize tworzy standardowy profil dopasowany do wykrytego układu procesora.
| Typ procesora | Standardowy profil FrameHuba |
|---|---|
| AMD z SMT | Pominięcie wątków SMT i głównego Core 0 |
| Starszy Intel bez podziału P/E | Pominięcie Core 0 oraz wątków HT, gdy są dostępne |
| Intel z P-core, E-core i HT | Pominięcie E-core oraz wątków HT |
| Intel z P-core i E-core bez HT | Pominięcie E-core |
| Nieznana topologia | Pozostawienie wszystkich procesorów logicznych |
Preset zawsze korzysta z CPU Sets i normalnego priorytetu. Jest to konserwatywny punkt wyjścia, a nie uniwersalnie najlepsza konfiguracja dla każdego komputera.
Każdy profil można później ręcznie zmodyfikować.
Core Control — ręczne zarządzanie procesami
Moduł Core Control rozwija funkcje znane z Process Core Optimizer.
Pozwala między innymi:
- wyświetlić uruchomione procesy,
- sprawdzić PID i liczbę instancji,
- podejrzeć wykorzystanie CPU i pamięci RAM,
- odczytać bieżące przypisanie procesora, gdy Windows na to pozwala,
- zastosować CPU Sets albo klasyczne Affinity,
- zmienić priorytet procesu,
- zapisać konfigurację jako profil.
Selektor CPU rozróżnia rdzenie fizyczne oraz dodatkowe wątki SMT lub Hyper-Threading. W obsługiwanych konfiguracjach może również uwzględniać podział na P-core i E-core.
FrameHub preferuje CPU Sets, gdy mechanizm jest dostępny, a w odpowiednich sytuacjach może korzystać z klasycznej maski Processor Affinity.
Profile i reguły
Zapisane profile są dostępne w osobnym module.
Można tam:
- zobaczyć wszystkie profile,
- włączyć albo wyłączyć monitorowanie,
- edytować tryb i wybrane rdzenie,
- zmienić priorytet,
- zastosować profil natychmiast,
- usunąć niepotrzebną konfigurację.
Monitor działający w tle może ponownie zastosować ustawienia po kolejnym uruchomieniu docelowego procesu.
Zależało mi na tym, żeby użytkownik zawsze widział, jakie ustawienia są przypisane do konkretnej gry i mógł je bez problemu wyłączyć.
Konfiguracja Counter-Strike 2
Pierwszą grą z osobnym, bardziej rozbudowanym modułem został Counter-Strike 2.
Strona Config pozwala pracować z wybranymi ustawieniami graficznymi oraz plikiem autoexec.cfg.
Aktualne funkcje obejmują:
- wykrywanie ścieżki konfiguracji CS2,
- edycję wybranych ustawień obrazu,
- preset nastawiony na rozgrywkę competitive,
- tworzenie backupu przed zmianami,
- porównanie z najnowszą kopią zapasową,
- wybór własnych wartości,
- pomoc w przygotowaniu
autoexec.cfg, - popularne i bezpieczne bindy oraz komendy,
- ostrzeżenie dotyczące Steam Cloud,
- wykrywanie działającego procesu
cs2.exe.
Preset competitive skupia się na wydajności i możliwie niskich opóźnieniach. Nie wymusza jednak rozdzielczości ani trybu wyświetlania, ponieważ traktuję je jako indywidualne preferencje użytkownika.
Program może pokazać rekomendowane wartości, ale nie powinien automatycznie nadpisywać ustawień, które są mocno zależne od monitora i przyzwyczajeń gracza.
Bezpieczna praca z konfiguracją CS2
FrameHub nie odczytuje ani nie zapisuje plików konfiguracyjnych CS2, gdy gra jest uruchomiona.
Gdy wykryty zostanie proces cs2.exe, operacje związane z konfiguracją są blokowane. Użytkownik musi najpierw zamknąć grę.
To celowe ograniczenie. Program ma pracować na zwykłych plikach tekstowych w sposób podobny do ręcznej edycji ustawień, a nie ingerować w działającą grę.
FrameHub nie:
- wstrzykuje bibliotek DLL,
- nie podpina się do procesu gry,
- nie modyfikuje pamięci,
- nie instaluje sterowników działających w jądrze systemu,
- nie omija zabezpieczeń anti-cheat,
- nie modyfikuje plików wykonywalnych gry,
- nie usuwa elementów rozgrywki ani zasobów gry.
Żadne zewnętrzne narzędzie nie może zagwarantować, jak każdy system anti-cheat oceni wszystkie możliwe działania. Dlatego FrameHub korzysta z konserwatywnych zasad i nie próbuje obchodzić zabezpieczeń.
Dlaczego nie chcę tworzyć „magicznego optymalizatora”?
Wokół optymalizacji Windowsa i gier istnieje wiele programów obiecujących natychmiastowy wzrost wydajności.
Część z nich uruchamia skrypty, wyłącza usługi, zmienia rejestr i modyfikuje ustawienia zasilania bez jasnego pokazania, co dokładnie zostało zmienione.
W FrameHubie chcę rozwijać inne podejście:
- każda funkcja powinna mieć jasno określone działanie,
- zmiany powinny być możliwe do cofnięcia,
- program nie powinien wprowadzać dziesiątek ukrytych modyfikacji,
- agresywne ustawienia nie powinny być domyślne,
- użytkownik powinien rozumieć zastosowany profil.
Nie oznacza to, że każda funkcja jest całkowicie pozbawiona ryzyka. Zmiana priorytetu, Affinity albo CPU Sets może w określonych przypadkach pogorszyć działanie aplikacji. FrameHub ma ułatwiać testowanie ustawień, a nie zastępować pomiary i zdrowy rozsądek.
Polski i angielski interfejs
FrameHub od początku powstaje z polskim i angielskim interfejsem.
Teksty są obsługiwane przez warstwę lokalizacji zamiast umieszczania wszystkich komunikatów bezpośrednio w widokach programu. Ułatwia to rozwijanie dwóch wersji językowych i porządkowanie kolejnych ekranów.
To również jedna z różnic względem pierwszych etapów Process Core Optimizer, w którym część rozwiązań była dokładana stopniowo wraz z rozwojem projektu.
Czego uczę się przy tym projekcie?
FrameHub jest dla mnie kolejnym etapem nauki tworzenia większych aplikacji desktopowych.
Podczas jego rozwijania pracuję między innymi nad:
- architekturą aplikacji WPF,
- podziałem programu na moduły i serwisy,
- komunikacją z API systemu Windows,
- skanowaniem bibliotek gier,
- odczytywaniem manifestów Steam i Epic Games,
- zarządzaniem plikami konfiguracyjnymi,
- tworzeniem bezpiecznych kopii zapasowych,
- lokalizacją interfejsu,
- zapisywaniem ustawień użytkownika,
- logowaniem i obsługą błędów,
- projektowaniem spójnego interfejsu,
- przygotowywaniem instalatora i wydań.
Największym wyzwaniem nie jest samo dodanie kolejnej opcji. Trudniejsze jest połączenie wielu funkcji w taki sposób, żeby program nadal pozostawał czytelny i nie wykonywał w tle rzeczy, których użytkownik się nie spodziewa.
Obecny stan projektu
FrameHub jest nadal aktywnie rozwijany.
Aktualna wersja skupia się na czterech podstawowych obszarach:
- bibliotece gier i aplikacji,
- profilach CPU i monitorowaniu procesów,
- ręcznym module Core Control,
- konfiguracji Counter-Strike 2.
Dalszy kierunek zakłada rozwijanie kolejnych modułów związanych z grami, profilami, benchmarkami i bezpiecznymi ustawieniami Windowsa.
Nie chcę jednak aktywować wielu niedokończonych funkcji tylko po to, żeby wydłużyć listę możliwości programu. Kolejne elementy powinny być dodawane wtedy, gdy ich działanie jest wystarczająco przewidywalne i możliwe do sensownego opisania użytkownikowi.
Instalacja i kod źródłowy
FrameHub jest projektem open source udostępnionym na licencji MIT.
Program jest przeznaczony dla systemów Windows 10 i Windows 11.
Po instalacji warto:
- uruchomić FrameHub normalnie,
- dodać albo wyszukać gry w bibliotece,
- powiązać właściwe pliki wykonywalne,
- utworzyć profile dopiero po zapoznaniu się z ich działaniem,
- zamknąć CS2 przed użyciem modułu Config,
- korzystać z uprawnień administratora tylko wtedy, gdy Windows wymaga ich do zmiany ustawień procesu.