Skocz do zawartości
Szukaj w
  • Więcej opcji...
Znajdź wyniki, które zawierają...
Szukaj wyników w...

sQn

Użytkownik
  • Liczba zawartości

    524
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    3

Posty dodane przez sQn


  1. W grze ruch celownika powinien być w 100% przewidywalny, bez przeskoków i zacięć, proporcjonalny do ruchu myszy na podkładce niezależnie od prędkości. Jeżeli kursor (celownik) przy szybkim ruchu myszy, przesuwa się na dalszą odległość niż przy wolnym ruchu, występuje akceleracja pozytywna (dodatnia). W odwrotnym przypadku występuje akceleracja negatywna (ujemna). Prędkość kursora w Windowsie na 6/11 gwarantuje ruch 1 piksel na 1 DPI myszy. Inne ustawienia spowodują, przeskakiwanie kursorem niektórych pikseli (suwak w prawo), lub programowe zmniejszenie DPI (suwak w lewo). Żeby nie mieć problemów z celowaniem trzeba spełnić dwa warunki:
    1. mieć dobrą mysz,
    2. nie zepsuć ustawień.
     
    Nie każdy zdaje sobie sprawę, że CS ma źle napisaną obsługę myszy, sama gra powoduje akcelerację negatywną. CS faworyzuje myszki z niskim DPI, żeby nie mieć problemów trzeba też mieć stałe, wysokie FPS. Co ciekawe efekt w mniejszym stopniu występuje na wysokich rozdzielczościach ale jak na ironię wymagają one wyższego DPI i koło się zamyka. Z tych powodów CS 1.6 niespecjalnie nadaje się do testowania akceleracji w myszkach.
     
    Sporo na temat obsługi myszy w grach przez Windows można dowiedzieć się tu:
     
    . Gry korzystające z WM_INPUT lub DirectInput nie potrzebują mousefixów. Z pozostałych część nie ma problemów po zwykłym odznaczeniu "Zwiększ precyzję wskaźnika". W CS wystarczy ustawić parametry startowe: -noforcemaccel -noforcemspd, żeby windowsowa akceleracja nie włączała się sama. A jeżeli już komuś potrzebny jest mousefix polecam ten:
     
    Z tego co wiem, mysz w CS działa tak:
    Ukryty kursor znajduje się na środku ekranu (w środku celownika). Przy ruchu wychyla się w którąś stronę na zasadach zwykłego kursora z pulpitu Windowsa (metoda WM_MOUSEMOVE). Powoduje to 2 problemy: akcelerację z poziomu Windowsa ("Zwiększ precyzję wskaźnika") oraz ograniczenie pola działania do rozdzielczości ekranu, a właściwie jej połowy w każdą ze stron. Co 1 FPS kursor jest zawracany znów do środka ekranu, inaczej po dojściu do krawędzi postać przestałaby się obracać ;) . Problem występuje wtedy, gdy w przeciągu 10 ms (dla 100 FPS) przesuniesz kursor "poza" granicę ekranu.
     
    Jak widać na ruch celownika mają w takim przypadku wpływ:
    - ustawienia sterownika myszy Windowsa,
    - DPI myszki,
    - rozdzielczość ekranu w grze,
    - FPS w grze,
    - ustawienia sensitivity, m_pitch i m_yaw (prędkość obracania się w grze).
     
    Dla przykładu weźmy:
    - w sterowniku 6/11 i precyzja off,
    - 800 DPI,
    - 800x600 pikseli,
    - 100 FPS,
    - te ustawienia nie wpływają na akcelerację negatywną ale przy niskich trzeba bardziej namachać się myszą, więc jest większe prawdopodobieństwo szybkich ruchów i wystąpienia problemu akceleracji negatywnej, można założyć sensitivity 1.0, m_pitch 0.022, m_yaw 0.022.
     
    Powyższa wartość to odległość w cm, jaką trzeba pokonać na podkładce, żeby dojechać do krawędzi ekranu kursorem. Jeżeli zrobisz w przeciągu 1/100 s więcej, to gra zignoruje różnicę, bo kursor osiągnął maksymalne położenie na ekranie (krawędź) i nie da się go przesunąć dalej.
     
    1,27 m/s to dość wolno, bez problemu da się osiągnąć takie prędkości na niskim i średnim sensitivity.
     
    Rzecz jasna maksymalna prędkość pionowa jest mniejsza, bo kursor ma tam tylko 0,5 * 600 = 300 pikseli do pokonania. Nie ma to dużego znaczenia, bo w grze nie wykonuje się długich i szybkich ruchów góra-dół.
     
    Próbowałem różnych ustawień i efekty zdają się potwierdzać teorię. Wystarczy ustawić 640x480, fps_max 50 i DPI 1600 lub więcej, a od razu widać ogromną akcelerację negatywną już przy niezbyt szybkich ruchach (ze wzoru wychodzi prędkość_max_poz = 0,25 m/s). Stosowanie w CS myszy z wysokim DPI, do tego przy niskich rozdzielczościach, jest chybionym pomysłem. Muszę przyznać, że sam tak kiedyś grałem na starej myszce (X-718F) z tą różnicą, że wtedy miałem większe sensitivity, 100 FPS i wysoką rozdzielczość 1680x1050, w takich warunkach akceleracja negatywna nie dawała się aż tak we znaki.
     
    Jeżeli chodzi o Hz USB, lepiej mieć ustawioną wielokrotność ilości klatek: 500 lub 1000Hz dla 100FPS, bo przy 125 lub 250Hz i 100FPS nie ma synchronizacji. Skoro USB raportuje co 8ms, a gra generuje klatkę co 10ms, to w co piątym raporcie czyli co czwartej klatce będzie dokładne położenie kursora. W pozostałych przypadkach położenie będzie trochę przeterminowane:
     
    Jak widać w drugim przypadku jest dokładne położenie, w pierwszym często zdarza się już trochę nieaktualne (najbardziej w przypadku czwartej klatki: 30ms ale raport z 24ms czyli dodatkowe 6ms opóźnienia. Z powyższego przykładu można wyciągnąć wniosek, że pomiędzy 500 i 1000 Hz nie ma różnicy. 

×
×
  • Dodaj nową pozycję...