Zaloguj się

Jog Jajcusia

xmpp:jajcus@jajcus.net

Mój jest ten kawałek Internetu…

…złe emocje i brudne buty proszę więc zostawić przed drzwiami.

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 komentarze do wpisu „Dofus pod PLD Linux”