[XBTF] Rozwiązanie problemu niedziałającej przepustnicy w XP

Forum do dyskusji o x-grach i problemach technicznych

Moderators: Alan Phipps, Moderatorzy polskiego forum

OSH
Posts: 18
Joined: Sat, 27. Apr 13, 23:04

[XBTF] Rozwiązanie problemu niedziałającej przepustnicy w XP

Post by OSH » Fri, 17. May 13, 23:41

Witam wszystkich gwiezdnych pilotów!
Gram w X – Beyond the Frontier już jakiś czas (z przerwami ok. 2 lat). Ostatnio dość intensywnie, czego efektem jest niezła sumka na koncie i 3 fabryki. Ale w zasadzie to mało istotne.

Kiedy zacząłem grać w XBTF, zastanowiło mnie, że uruchomienie SETA powoduje maksymalne przyspieszenie statku. Niby to zgodne z założeniami samej koncepcji, ale w pewnym momencie zaczęło mi to przeszkadzać i zacząłem tęsknić do znanej z Frontiera kompresji czasu – tam można było przyspieszyć czas bez uruchamiania silników. W XBTF okazuje się to kluczowe, w przypadku, gdy czeka się, aż fabryka wyprodukuje odpowiednią ilość towaru. Normalne użycie SETA powoduje, że leci się daleeeko poza granice sektora, a potem trzeba wracać, co trwa dokładnie tyle samo czasu – jak się poleciało przy włączonym SETA pół godziny, to się będzie pół godziny wracać do cywilizacji. Nie jest to zbyt atrakcyjna perspektywa.

Grzebiąc po archiwalnym forum niemieckim dotyczącym gry natknąłem się na informację, że istnieje możliwość uruchomienia SETA przy zerowej prędkości – sztuczka ta działa w przypadku joysticków wyposażonych w przepustnicę. Cały szczęśliwy postanowiłem to wypróbować. I tu moje szczęście się skończyło. Gra nie reagowała na przesuwanie przepustnicy. Ki diabeł? Przecież miałem w opcjach włączone, żeby reagowała na ruch przepustnicy. Coś musi być nie tak.

Okazało się, że faktycznie coś było nie tak. Poczytałem sobie forum EGOSOFTU i tam znalazłem informację, że z jakichś dziwnych powodów, pod Windows XP gra nie reaguje na ruchy przepustnicą. Jeden z użytkowników napisał, że może gra źle interpretuje osie joysticka, a w oficjalnym FAQ jest tylko sucha informacja, że to problem z biblioteką DLL DirectX. Innymi słowy – najlepiej zapomnieć o takich mrzonkach jak używanie przepustnicy pod XBTF.
Ja jednak jestem osobą, która nie uznaje tłumaczenia „nie da się, bo się nie da”. Zacząłem więc kombinować i...

Na początek standardowa formułka. Nie lubię tego, ale wiecie sami, jak to jest...no więc:

Nie biorę żadnej odpowiedzialności za ewentualne uszkodzenie sprzętu lub utratę danych spowodowane zastosowaniem instrukcji podanych poniżej. Z wszystkich informacji podanych w tym poście korzystasz na własne ryzyko i nie gwarantuję, że akurat u Ciebie to zadziała! Zostałeś ostrzeżony(a)!

1. Zasada działania.
Cały bajer polega na tym, żeby przemapować osie joysticka rzeczywistego do wirtualnego, ponieważ rzeczywiście gra źle rozpoznaje osie joysticka. Oczywiście w systemie nie ma takich rzeczy, ale znaleźli się ludzie, którzy ruszyli głową i rozwiązali ten problem. Byli to twórca sterownika do obsługi wirtualnego joysticka – vJoy – Shaul Eizikovich oraz facet o nicku evilC z forum Mechwarriora Online, który stworzył remaper – Universal Joystick Remapper. Oba te programy będą nam potrzebne do tego, by niemożliwe stało się możliwym.

2. Potrzebne składniki
Jak pisałem, potrzebne są 2 programy – vJoy oraz UJR (Universal Joystick Remapper). Oprócz tego potrzebny będzie program o nazwie AutoHotKey. Programy są darmowe i ściągamy je stąd: http://l.autohotkey.net/AutoHotkey_L_Install.exe, http://evilc.com/files/ahk/vjoy/ujr.zip i http://vjoystick.sourceforge.net/site/i ... 2-download.

Po ściągnięciu należy je oczywiście zainstalować. AutoHotkey i vJoy mają installery, UJR jest w postaci archiwum ZIP, które wystarczy rozpakować i wrzucić do jakiegoś katalogu. W przypadku instalacji vJoya koniecznie trzeba zaznaczyć, by zainstalował „vJoy Configuration Application”.

3. Konfiguracja.
Teraz zaczyna się najtrudniejszy etap. Po zainstalowaniu wszystkiego otwieramy Panel Sterowania -> Kontrolery gier i sprawdzamy, czy oprócz naszego rzeczywistego joysticka jest drugi o nazwie vJoy. Powinien być, a jeśli go nie ma to źle. Ale zasadniczo będzie zawsze.

Następnie uruchamiamy program o nazwie Configure vJoy – po zainstalowaniu vJoya tworzy się w Menu Start/Programy odpowiednia grupa. Ewentualnie wchodzimy do katalogu z zainstalowanym vJoyem i uruchamiamy plik vJoyConf.exe.

Po uruchomieniu pokazuje się coś takiego:
[ external image ]

Musimy zaznaczyć osie X, Y, Z, oraz R/Rz/Rudder. Poza tym polu „POV Hat Switch” zaznaczamy „Continuous” i wybieramy 1. W polu number of Buttons wybieramy, ile przycisków ma mieć nasz wirtualny joystick (polecam co najmniej 16, jeśli Twój joystick tyle ma). W polu Action zaznaczamy Configure, a Target Device ustawiamy na 1 (tak to działa u mnie, ale być może ten numer trzeba będzie zmienić u Ciebie – nie wiem). Następnie klikamy na „Apply” i tyle.
Potem otwieramy konfigurację joysticka w Panelu Sterowania i patrzymy, jak wygląda joystick vJoy. Powinien wyglądać tak:
[ external image ]

Teraz wchodzimy do katalogu z UJR i uruchamiamy plik ujr.ahk. Po chwili widzimy okno programu:
[ external image ]

I tu się zaczynają kolejne schody. Najpierw musimy sprawdzić, czy nasz wirtualny joystick działa. W tym celu w kolumnie „Virtual Axis” wybieramy 1, następnie zaznaczamy u dołu pole „Manual Control”, a potem przesuwamy pierwszy suwak w kolumnie „State” maksymalnie w lewo lub w prawo. Potem w Panelu Sterowania wywołujemy konfigurację joysticka i klikamy dwukrotnie na „vJoy Device”. Pojawia się okno właściwości joysticka. Jeżeli krzyżyk w oknie jest przesunięty w lewo lub w prawo, zgodnie z naszym wcześniejszym wyborem, to znaczy, że system rozpoznaje prawidłowo nasz wirtualny joystick. Jeśli tak nie jest, trzeba w Panelu Sterowania wybrać „System”, a następnie w Menedżerze Urządzeń sprawdzić, czy w gałęzi „Urządzeniach interfejsu HID” jest „vJoy Device”. Jeśli nie, to ewentualnie można ponowić instalację vJoya.

Teraz musimy uzyskać ID naszego fizycznego joysticka, a następnie sprawdzić, jakie osie są wykrywane. W tym celu klikamy przycisk „Detect Axis” a następnie ruszamy joystickiem wzdłuż danej osi. Po wykonaniu ruchu powinien się pojawić komunikat w stylu „You appeared to move Joystick X, axis Y”, gdzie X to poszukiwany ID fizycznego joysticka, a Y to oczywiście numer danej osi. Obie informacje są potrzebne.

Następnie przystępujemy do właściwej konfiguracji URJ. Jest ona banalnie prosta: W kolumnie „Virtual Axis” wybieramy po osie 1, 2, 3, następnie opuszczamy kolejno 4 i 5 i dopiero w szóstym rzędzie wybieramy „6”. W kolumnie „Physical Stick” dla każdej z ustawionych osi wirtualnych wybieramy numer ID naszego fizycznego joysticka. Wreszcie w kolumnie „Physical Axis” wybieramy kolejno 1, 2, 3, potem opuszczamy dwie kolejne pozycje i następnie wybieramy „4”. Całość powinna wyglądać tak:
[ external image ]

Następnie poruszamy joystickiem w każdą stronę. Jeśli każdy suwak w polu „State” porusza się w czasie ruchu joystickiem to dobrze. Jeśli nie – to znaczy, że jest błąd konfiguracji (być może nieodpowiedni ID joysticka albo akurat u Ciebie są rozpoznawane inne osie – poeksperymentuj).

Na koniec przychodzi czas na przypisanie przycisków – przechodzimy na karty „Buttons 1-8” i „Buttons 9-16” (ewentualnie na kolejne, jeśli wirtualny joystick obsługuje więcej niż 16 przycisków i w kolumnie Stick ID ustawiamy ID naszego fizycznego joysticka, a w kolumnie „Button #” numery kolejnych przycisków. Potem naciskamy kolejno każdy z nich i sprawdzamy czy w kolumnie „State” czerwony napis „Off” zmienił się na zielony „On”. Jeśli tak, to świetnie! Zwijamy do paska URJ (nie wyłączamy!) i...

4. Test działania w XBTF
Odpalamy XBTF, klawiszem F8 wchodzimy do opcji i w ustawieniach wyboru joysticka wybieramy vJoy. Potem OK i testujemy, czy przepustnica wreszcie działa. Powinna działać!

To tyle z mojej strony. Na zakończenie dodam, że dzięki temu zadziała też sztuczka z włączeniem SETA i zachowaniem zerowej prędkości, aczkolwiek trzeba trochę pokombinować – najpierw włączamy SETA, a potem lekko cofamy przepustnicę. Wymaga to odrobiny treningu i wyczucia, ale w końcu udaje się osiągnąć to, że SETA działa, a my stoimy w miejscu.

Jeszcze słówko o tym, czemu mówiłem o ustawieniu dla wirtualnego joysticka co najmniej 16 przycisków. Po co, skoro XBTF oficjalnie rozpoznaje tylko 10? Oficjalnie tak, ale istnieje pewien sprytny programik, o nazwie JoyToKey, który pozwala na wmówienie dowolnemu programowi (nawet Wordowi), że naciśnięto klawisz, choć w rzeczywistości naciśnięto przycisk w joysticku. W ten sposób można sobie podpiąć pod joystick dużo więcej funkcji gry, niż to ustawa przewiduje. Programik dostępny tu:
http://www.electracode.com/4/joy2key/Jo ... ersion.htm

Pozwalam na kopiowanie i tłumaczenie tej instrukcji, ale proszę o podanie mojego nicka (OSH).

W razie pytań – proszę o PM. Postaram się pomóc.
Niech moc będzie...eee to nie ta bajka. Udanych interesów :D

User avatar
klarix
Moderator (Polski)
Moderator (Polski)
Posts: 672
Joined: Wed, 6. Nov 02, 20:31
x3tc

Post by klarix » Sat, 18. May 13, 17:54

Dziękuję za tą obszerną instrukcje. Na pewno się to komuś przyda, choć może to kilka(naście) lat za późno :wink:
Ja grałem w XBtF z joystickiem na XP i szybkość też nastawiałem przepustnicą. Nie miałem żadnych problemów nastawić szybkość statku na zero i włączyć SETA - stojąc w miejscu gdy czas przepływał szybciej.
Myślę wiec, że nie każdy miał/ma te problemy co Ty, bo zależne jest to widocznie od joysticka.

Pozdrawiam,
klarix [ external image ]

OSH
Posts: 18
Joined: Sat, 27. Apr 13, 23:04

Post by OSH » Sat, 18. May 13, 18:01

O ile dobrze pamiętam, to podobne problemy zgłaszają ludzie i w przypadku innych części X-a. U mnie ten problem był dotkliwy i nawet na FAQ EGOSOFTU jest to opisane, więc gdy wpadłem na pomysł, to się postanowiłem podzielić. Zdaję sobie sprawę, że to kilkanaście lat za późno, ale są jeszcze ludzie, którzy zaczynają swoja przygodę od XBTF i mogą mieć opisane powyżej problemy. Może więc komuś się to przyda :)

Sauron11
Posts: 6193
Joined: Wed, 6. Nov 02, 20:31
x3tc

Post by Sauron11 » Sun, 19. May 13, 16:00

Zaiste, godne podziwu!
Że Ci się chciało to wszystko opisać, ustawiać i że chcesz nadal grać w XBTF.
I w swoim wypracowaniu nie popełniłeś chyba żadnego błędu :).
Słowem... szacun, ale szkoda że wpadłeś po 10 latach...
I used to be a moderator like you, until I took an arrow to the knee.
Core i5-3570_3,4 GHz, 8GB 1600MHz, Asus GTX660TiOC 2GB, Audigy, Iiyama B2776HDS.

OSH
Posts: 18
Joined: Sat, 27. Apr 13, 23:04

Post by OSH » Sun, 19. May 13, 16:52

Sauronie, powiem Ci tak: o X słyszałem już dawno temu, nawet próbowałem grać, ale przełom nastąpił dopiero wtedy, gdy kupiłem sobie w Niemczech X-Superboksa i wtedy zacząłem na serio, choć z przerwami. Kocham space-simy, do dziś męczę X-Winga, w ELITE na C-64 mam już status Dangerous i poluję aktualnie na Deadly, Tłukę też w Wing Commandera SM2, kupiłem Evochrona Alliance na eBayu...no to zdecydowanie jest mój ulubiony gatunek. A że dziesięć lat za późno - no cóż, w 2003 roku to jeszcze walczyłem w X-Wingu na A1200 pod Shapeshifterem. :)
Ale główny powód jest taki, że programik, który to umożliwia - Universal Joystick Remapper - powstał dopiero na początku tego roku. :) Swoją drogą, czego to ludzie nie wymyślą - mapować joystick fizyczny do wirtualnego - ale potrzeba matką wynalazków, a ja się niejednokrotnie przekonałem, że zwykli użytkownicy potrafią tworzyć prawdziwe cuda. Dziś np. znalazłem kolejny przydatny programik - do zmiany ID joysticka - bo niektóre gry nie rozpoznają prawidłowo joysticków podłączonych na USB, gdy mają nieodpowiedni ID.
Co do tego braku błędów - ja jestem germanistą z wykształcenia, więc siłą rzeczy muszę dbać o to, jak piszę. :)

A w XBTF jestem już dość daleko i właśnie teraz najbardziej mi się przydaje możliwość włączenia SETA przy zerowej prędkości. Aktualnie pracuję nad tym, żeby dało się to zrobić pod VMWare - włączyć sobie w grze SETA, a potem przełączyć się na system fizyczny i pracować, a w tle gra będzie sobie chodzić na przyspieszonym czasie, ponieważ gdy się gra w normalny sposób, to przejście na system za pomocą ALT-TAB powoduje spauzowanie gry, a nie o to mi chodzi. :)

Return to “Polskie / Polish X-Forum”