OpenJK, czyli Star Wars Jedi Knight: Jedi Academy natywnie

Gry, które działają natywnie na Linuksie.
Awatar użytkownika
makson
Redaktor
Redaktor
Posty: 1542
Rejestracja: 23 mar 2009, 07:10
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: Xfce
Architektura: x86_64

OpenJK, czyli Star Wars Jedi Knight: Jedi Academy natywnie

Post autor: makson » 15 lut 2015, 01:22

Witam,
z okazji najnowszego StarWars Humble Bundle tworzę ten poradnik. Żadne z gier w tej wyprzedaży nie są na Steamie dostępne na Linuksa, ale dzięki temu, że swego czasu uwolniono kod Jedi Academy, to możemy dzisiaj korzystając z projektu OpenJK (nie mylić z OpenJDK) sami skompilować sobie grę i nie dość, że będziemy ją mieli natywnie, to jeszcze dodatkowo ze wszystkimi bajerami, które nie są dostępne dla użytkowników Windowsa.

Uwaga! Ten poradnik jest raczej dla Linuksowych zapaleńców. Zwykłym graczom będzie zapewne najłatwiej uruchomić grę przez wine. W tym poradniku proponuję zainstalować wszystko do katalogu Publiczny, ale jak wolicie inny to zastąpcie go dowolnym. Zastępujcie też USER swoją nazwą użytkownika.

Na początku nie ma wyjścia. Uruchamiamy windowsowego Steama przez wine i pobieramy Jedi Knight Academy (jakieś 1,2 GB).
Jak proces się skończy, to wyłączamy Steama (i zapominamy o wine) i kopiujemy potrzebne nam pliki gry (katalog GameData) do katalogu docelowego:

Kod: Zaznacz cały

cd ~/Publicznny
mkdir JediAcademy
cp -R ~/.wine/drive_c/Program Files\ \(x86\)/Steam/SteamApps/common/Jedi\ Academy/GameData JediAcademy
Następnie instalujemy wymagania (zależności) dla OpenJK:

Kod: Zaznacz cały

sudo apt-get install build-essential cmake git libopenal-dev libpng12-dev libjpeg8-dev zlib1g-dev
Ponadto OpenJK wymaga SDL 2.0.3. W Ubuntu jest na razie jedynie SDL 2.0.2, więc tym lepiej dla nas - sami sobie skompilujemy najnowsze SDL.
Instalujemy zależności dla SDL:

Kod: Zaznacz cały

sudo apt-get install build-essential mercurial make cmake autoconf automake libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libibus-1.0-dev
Uwaga! Jeżeli używamy Ubuntu 14.04.2 lub w jakiś inny sposób zaktualizowaliśmy stos graficzny do tej wersji punktowej Ubuntu to zamiast powyższej komendy użyjmy:

Kod: Zaznacz cały

sudo apt-get install build-essential mercurial make cmake autoconf automake libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev libgl1-mesa-dev-lts-utopic libesd0-dev libdbus-1-dev libudev-dev libgles1-mesa-dev-lts-utopic libgles2-mesa-dev-lts-utopic libegl1-mesa-dev-lts-utopic libibus-1.0-dev
W Ubuntu 14.04.3 odpowiednio zamiast "utopic" piszemy "vivid", itd.

OK. Teraz przechodzimy do prawdziwej zabawy. Zacznijmy od optymalizacji kompilatora (niech gra działa najwydajniej, jak to możliwe!).
P.S. Poniższe opcje będą działać jedynie dla okna terminalu, w którym zostały użyte. Dla każdego innego okna trzeba je powtórzyć.

Kod: Zaznacz cały

export CFLAGS="-march=native -O2"
export CXXFLAGS="${CFLAGS}"
I kompilujemy SDL:

Kod: Zaznacz cały

cd ~/Publiczny
hg clone https://hg.libsdl.org/SDL SDL
cd SDL
mkdir build_dir
cd build_dir
../configure --prefix=/home/USER/Publiczny/SDL/build_libs
make
make install
teraz możemy skompilować OpenJK:

Kod: Zaznacz cały

cd ~/Publiczny
git clone https://github.com/JACoders/OpenJK.git
cd OpenJK
mkdir build_dir
cd build_dir
cmake -DCMAKE_INSTALL_PREFIX=/home/USER/Publiczny/JediAcademy/GameData/ -DCMAKE_INCLUDE_PATH=/home/USER/Publiczny/SDL/build_libs/include/SDL2/ -DCMAKE_LIBRARY_PATH=/home/USER/Publiczny/SDL/build_libs/lib/ ..
make openjk_sp.x86_64
make install
P.S. Powyższe komenda jest dla 64 bitowych systemów (chyba wszyscy już ich używają), ale gwoli poprawności politycznej dodam, że w 32 bitowych systemach zamiast openjk_sp.x86_64 piszemy openjk_sp.i386.

Jeszcze taki drobiazg:

Kod: Zaznacz cały

mkdir -p /home/USER/.local/share/openjk/base/
ln -s /home/USER/Publiczny/JediAcademy/GameData/OpenJK/* /home/USER/.local/share/openjk/base/
To wszystko. Grę uruchamiamy:

Kod: Zaznacz cały

cd ~/Publiczny/JediAcademy/GameData
LD_LIBRARY_PATH=/home/USER/Publiczny/SDL/build_libs/lib/ ./openjk_sp.x86_64
Dla wygody można stworzyć skrót na pulpicie:

Kod: Zaznacz cały

sudo apt-get install wget

Kod: Zaznacz cały

cd ~/Publiczny/JediAcademy/GameData
wget http://icons.iconarchive.com/icons/3xhumed/mega-games-pack-18/256/StarWars-Jedi-Knight-Academy-2-icon.png
echo "cd /home/USER/Publiczny/JediAcademy/GameData\nLD_LIBRARY_PATH=/home/derda/Publiczny/SDL/build_libs/lib/ ./openjk_sp.x86_64" > start.sh
chmod +x start.sh

Kod: Zaznacz cały

cd ~/Pulpit
echo "[Desktop Entry]/nName=OpenJK/nComment=Play Jedi Knights Academy/nExec=/home/USER/Publiczny/JediAcademy/GameData/start.sh/nIcon=/home/USER/Publiczny/JediAcademy/GameData/StarWars-Jedi-Knight-Academy-2-icon.png/nTerminal=false/nType=Application/nCategories=Game;" > openjk.dekstop
I teraz mamy podwójny fun :D

Obrazek

P.S. Poradnik napisałem trochę z pały, więc za wszelkie uwagi serdecznie dziękuję i je uwzględnię.
Pozdro.
Miałem Linuksa, zanim stało się to modne.
mat
Wytworny Kaczor
Wytworny Kaczor
Posty: 354
Rejestracja: 12 gru 2005, 20:10
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Blackbox

Re: OpenJK, czyli Star Wars Jedi Knight: Jedi Academy natywnie

Post autor: mat » 24 lut 2015, 21:29

Pamiętam, że naprawdę chciałem uniknąć korzystania z Wine oraz kupownia wersji dla Windows, a więc rok temu po prostu kupiłem wersję dla Mac OS X z Mac App Store. Co ciekawe można było wykorzystać dane z tych gier do uruchomienia obu gier na Linuksie w użyciem projektów open source.
ODPOWIEDZ

Wróć do „Linuksowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości