Dofus pod PLD Linux

…czyli walki z Adobe AIR.

Przeglądając The Linux Game Tome natrafiłem na opis gry Dofus. MMORPG, z ładną grafiką, ale bez zbytnich wymagań do sprzętu (grafika 2D) – wyglądało zachęcająco, postanowiłem więc spróbować.

Ściągnąłem instalator, uruchomiłem… i nic, okazuje się że RPMowych dystrybucji nie obsługuje. Jak to tak?! Odpaliłem z opcją ‚–keep’, żeby zobaczyć co jest w środku i ewentualnie zainstalować ręcznie. W środku trochę plików, skrypt instalacyjny, deinstalacyjny i jakaś binarka „UpLauncher”. Spróbowałem odpalić binarkę, brakowało starej wersji libjpeg. W PLDowych CVS na szczęście jest spec, to dobudowałem, doinstalowałem i coś ruszyło. Ruszyło, „uaktualniło grę”, ale odpalić już się nie dało. Okazało się, że czegoś brakuje…

Znalazłem logi (po francusku) i rzeczywiście jakby jakiś plików brakuje. Zajrzałem do skryptu instalacyjnego (komentarze częściowo po francusku) i zrozumiałem, że to miało sobie jeszcze Adobe AIR zainstalować, potem tym Adobe AIR zainstalować grę z plików *.air, a dopiero to ostatecznie jest uruchamiane…

Udałem się więc do Adobe po to całe AIR. Do wyboru paczki ‚deb’, ‚yum’, ‚rpm’ i ‚bin’. Wybrałem ostatnie, nie licząc na kompatybilność tego RPMa z PLD. Okazało się jednak, że to ‚bin’ to niby samo-rozpakowujące-się-archiwum, ale potem i tak próbuje budować i instalować RPM. Budować w PLD tym bardziej nie umie, więc nic z tego nie wyszło. Wziąłem więc paczkę rpm (albo jednak z tego ‚bin’ coś wykopałem, nie pamiętam)… coś się zainstalowało.

Zainstalowanym „Adobe AIR Application Installer” próbowałem zainstalować „Dofus.air” i „Reg.air” jak to miał robić skrypt instalacyjny Dofusa. Nie udało się. Okazało się, że ten cały „application installer” też próbuje jakieś RPMy budować, co mu nie wychodzi. Czemu nie można jak np. z javowymi aplikacjami „java -jar cośtam.jar”? Ja rozumiem, że developerzy postawili sobie za cel zrobić tak, że user dwa razy kliknie w paczkę i mu się zainstaluje jak każda inna aplikacje, ale żeby to osiągnąć strasznie przekombinowali jednocześnie zapewniając sobie kompatybilność tylko z kilkoma konkretnymi dystrybucjami, właściwie uniemożliwiając użycie tego w innych…

W końcu, jakoś strasznie hackując udało mi się to jednak opanować i grę zainstalować tak, że zadziałała. Właściwie zadziałało wszystko poza dźwiękami i urwanymi tekstami NPC już w samej grze (ten drugi problem najwyraźniej doskwiera też innym linuksowym użytkownikom Dofusa). Skoro zadziałało, to sobie trochę pograłem. I spodobało mi się. Prawie że noce nad tym zarywam, jak kiedyś nad Crossfire ;-)

Wciąż jednak nie dawało mi spokoju pytanie: „czy na prawdę nie dałoby się prościej”. I dzisiaj wygooglałem coś takiego: Adobe® AIR on Gentoo Linux. Artykuł ten mówi jak można uruchamiać aplikacje AIR używają ichniejszego SDK. Bez żadnych śmiesznych „instalatorów” próbujących budować paczki. Sprawdziłem, rzeczywiście działa. Przygotowałem też „uproszczoną procedurę” instalacji Dofusa pod prawie każdym Linuksem (poniżej). Co więcej, tym razem udało mi się uzyskać także dźwięk! :-)

Instalacja Dofusa pod ulubioną dystrybucją

  1. Ściągnijmy Adobe AIR SDK z http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk
  2. Zainstalujmy Adobe AIR SDK (tutaj do /opt, więc potrzebne prawa roota):
    mkdir -p /opt/AdobeAIRSDK
    cd /opt/AdobeAIRSDK
    tar xjvf AdobeAIRSDK.tbz2
    cat >/usr/local/bin/adl <<'EOF'
    #!/bin/sh
    
    exec /opt/AdobeAIRSDK/bin/adl "$@"
    EOF
    
  3. Ściągnij instalator Dofusa dla Linuksa ze strony gry i rozpakuj do tymczasowej lokalizacji. To (i wszystko następne) już z prawami zwykłego użytkownika.
    mkdir /tmp/dofus-inst
    cd /tmp
    wget http://dl.ak.ankama.com/games/dofus2/setup/DofusInstall.run
    chmod a+x DofusInstall.run
    ./DofusInstall.run --keep --noexec --target /tmp/dofus-inst
    
  4. Stwórz katalog dla gry (tutaj w $HOME/Gry/Dofus) i rozpakuj tam aplikacje AIR:
    mkdir -p ~/Gry/Dofus
    cd ~/Gry/Dofus
    mkdir -p share/reg
    cd share
    unzip /tmp/dofus-inst/Dofus.air 
    cd reg
    unzip /tmp/dofus-inst/Reg.air
    cd ../..
    
  5. Stwórz pliki wykonywalne dla tych aplikacji:
    mkdir -p bin share/reg/bin
    cat >bin/Dofus << 'EOF'
    #!/bin/sh
    
    exec /opt/AdobeAIRSDK/bin/adl -nodebug ~/Gry/Dofus/share/META-INF/AIR/application.xml ~/Gry/Dofus/share
    EOF
    chmod a+x bin/Dofus
    cat >share/reg/bin/Reg << 'EOF'
    #!/bin/sh
    
    exec /opt/AdobeAIRSDK/bin/adl -nodebug ~/Gry/Dofus/share/reg/META-INF/AIR/application.xml ~/Gry/Dofus/share/reg
    EOF
    chmod a+x share/reg/bin/Reg
    
  6. Oryginalny instalator robi jakieś dziwne symlinki. Więc i my je zróbmy:
    mkdir share/reg/share
    ln -s ../Reg.swf share/reg/share/Reg.swf
    ln -s ../content share/reg/share/content
    
  7. Teraz skopiujmy pliki z instalatora:
    cp /tmp/dofus-inst/UpLauncher share
    cp /tmp/dofus-inst/games.xml share
    chmod a+x share/UpLauncher
    
  8. I zróbmy skrypt do uruchamiania gry:
    cat > start-dofus << 'EOF'
    #!/bin/sh
    
    cd ~/Gry/Dofus/share
    exec ./UpLauncher
    EOF
    chmod a+x start-dofus
    
  9. Teraz można spróbować uruchomić grę:
    ./start-dofus
    

    To może się nie udać, jeśli w systemie brakuje odpowiednich bibliotek w odpowiednich wersjach. W PLD Th np. trzeba było zbudować i doinstalować libjpeg6.

    Po doinstalowaniu brakujących bibliotek powinien się Launcher uruchomić i zacząć „uaktualniać” grę. Gdy Launcher ściągnie najnowszą wersję Dofusa będzie go można uruchomić.

3 uwagi do wpisu “Dofus pod PLD Linux

  1. Adobe Air 1.x robi potworne rzeczy. W skrócie przychodzi z własnym rpmbuild, który ma wymuszoną nazwę wszystkich pakietów wyjściowych na package.deb w skutek czego próba budowania z włączonym debuginfo niszczy plik z pakietem. Poza tym jest tam coś nie tak z metodą uruchamiania sudo.

    Polubienie

  2. Ja walczyłem z Adobe AIR 2.0, wcale nie lepiej – naprawdę nieźle hackowałem, żeby z Adobe AIR z oryginalnego pakietu coś odpalić. Za to ten knif z SDK który opisałem powyżej to już całkiem normalne (można by i normalnego RPMa z tego zrobić)… tyle, że chyba nie do końca z licencją zgodnie – według licencji SDK jest tylko do rozwijania oprogramowania… więc chyba nie do uruchamiania już gotowego 😉

    Polubienie

Co o tym sądzisz?

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s