Przejdź do głównej zawartości

Instalacja TorchCrafta

· 3 min aby przeczytać

Ten post jest o rozwijanym przeze mnie bocie do Starcrafta wykorzystującym uczenie maszynowe. Projekt jest rozwijany w ramach konkursu "Daj Się Poznać 2017".


Przez cały ten tydzień zastanawiałem się jaką obrać drogę dla mojego projektu bota. Chciałem użyć Deeplearning4j, ale ta biblioteka gryzie się z BWMirrorem, który wymaga Javy 32-Bit. Alternatywą jest przepisanie całego projektu z BWMirrora na JNIBWAPI. Drugą alternatywą jest przepisanie projektu do C++, co mnie średnio interesuje, bo nie czuję się dobrze w tym języku. Znaczy, w Javie też nie, ale pisanie w Javie łatwiej ogarnąć. Postanowiłem jednak wziąć się w końcu za TorchCrafta. Tracę oczywiście możliwość udziału w SSCAIT, ale myślę, że lepiej będzie coś w końcu zrobić związanego z reinforcement learningiem z pomocą gotowego środowiska. Gdybym miał to samo robić w Javie zeszłoby mi z tym naprawdę dużo czasu.

Instalacja na Linuksie

Trochę mi zeszło z instalacją Torcha, Lua i TorchCrafta. Jak to bywa, korzystając z instrukcji na stronie projektu coś nie działało. Po dość długim kombinowaniu co zrobić by wszystko postawić doszedłem do tego, że najlepiej zainstalować Torcha używając instrukcji z tej strony.

Wracając do opisu instalacji TorchCrafta zamiast:

git clone git@github.com:torchcraft/torchcraft.git --recursive

Trzeba sklonować:

git clone https://github.com/TorchCraft/TorchCraft.git --recursive

Instalacja na Windowsie

Tutaj było już w miarę prosto, bo całość ograniczyła się do kopiowania plików. Skorzystałem z BVEnv.exe z instrukcji.

Spięcie wszystkiego w całość

Poinstalowałem wszystko. Czas to uruchomić. Na wirtualce Linuksa trzeba odpalić w konsoli:

th simple_exe.lua -t $server_ip

Zamiast $server_ip trzeba podstawić IP hosta. Do tego trzeba użyć w Windowsie komendy ipconfig i podstawić jeden z adresów, które wyskoczą. Więcej chyba nic nie trzeba robić w Linuksie.

Na Windowsie jest gorzej. Uruchomiłem BVEnv.exe i jednej rzeczy nie mogę rozgryźć, a mianowicie po odpaleniu tego pliku wyświetla się coś takiego:

Welcome to the Brood War TorchCraft Environment.
Compiled on Mar 18 2017, 07:48:54.
<Config Info>
loaded: 1
current path: C:/StarCraft/bwapi-data/torchcraft.ini
general
port = 0
log_path = C:/tc_data/torchcraft_log_cpp_port_
display_log = 0
img_mode = raw
window_mode = windows
window_mode_custom =
img_save_path = C:/tc_data/output_
starcraft
assume_on = 0
launcher = injectory
custom_launcher =

C:/StarCraft//TorchCraft/\BWEnv\bin\injectory.x86.exe --launch C:/StarCraft/\StarCraft.exe --inject C:/StarCraft/\bwapi-data\BWAPI.dll
While running command:
00996F98
CreateProcess failed: 2
Connecting...

Ścieżka do Starcrafta jest nieprawidłowa, znajduje się on w zupełnie innym miejscu. Nie mogłem dokopać się czy można do tego BWEnv.exe przekazać jakieś argumenty. Z kodu wynika, że czegoś takiego nie ma, więc będę musiał zmienić i przekompilować ten projekt.

Podsumowanie

Nie udało mi się wiele zrobić w tym tygodniu. Takie życie, zawsze mnie muszą zatrzymać jakieś głupie problemy techniczne. Postaram się jakoś to spiąć w całość w najbliższym czasie. Żeby było śmieszniej to przy javowym projekcie bota też coś się zepsuło, a nic nie zmieniałem w kodzie. Przy próbie kompilacji bota wyskakuje mi jakieś: Exception in thread "main" java.lang.UnsatisfiedLinkError: \{path\}\bwapi_bridge2_5.dll: Can't find dependent libraries, mimo że wszystkie DLL-ki są tam gdzie były i wcześniej działało. Jak żyć?

Na pocieszenie muszę powiedzieć, że mój bot mimo prostoty sobie nieźle radzi na ladderze SSCAIT. Osiągnąłem 60% winratio (39 wygranych, 42 przegranych), co jest moim zdaniem dobrym wynikiem jak na takiego banalnego bota.