Shadowgrounds et Shadowgrounds Survivor sous GNU/Linux

Shadowgrounds est une série de jeux indépendants développés par Frozenbyte que j’ai pu découvrir grâce aux excellents Trine et Trine 2 ; plus anciens que la série Trine, ces épisodes sont néanmoins d’excellente facture (et donnent le ton des perles que Frozenbyte a sorti depuis) tout en redonnant du lustre aux jeux de tir vus du dessus.

En effet, les deux opus vous font endosser le rôle de multiples personnages au travers d'une invasion alien (oui, encore une), chaque personnage ayant ses spécificités, sa "classe" en quelques sortes, soit un classique du jeu vidéo.

Parce que j'ai eu quelques menus problèmes à l'installation de ces deux jeux, voici une petite marche à suivre qui, je l'espère, pourra servir à d'autres joueurs sous GNU/Linux.

Installation sous Arch Linux

Il y a dans AUR deux scripts permettant une installation facile :

Il suffit bien évidemment de les installer avec yaourt, de copier le fichier d’installation dans le dossier tel qu’indiqué par le script, et roule jeunesse !

Mise à jour

Il semblerait que tout soit fonctionnel maintenant dès l’installation depuis AUR, la marche à suivre suivant ne concerne donc plus une installation de la sorte. Néanmoins je la maintiens pour quiconque voudrait installer à la main, insistant sur les dépendances : libglade, libvorbis, libxmu, mesa, openal, sdl_image, sdl_sound, sdl_ttf, ou tout paquet équivalent pour votre distribution.

Shadowgrounds Launcher

Les premiers ennuis se rencontrent avec shadowgrounds-launcher, cette petite boîte de lancement permettant de changer les options graphiques du jeu dans une interface claire et complète :

./lib32/libxml2.so.2: no version information available (required by /usr/lib32/libglade-2.0.so.0)
symbol lookup error: /usr/lib32/libXrandr.so.2: undefined symbol: _XGetRequest

Comprenant grâce à la FAQ de Frozenbyte dédiée à leurs jeux sous GNU/Linux que je risque de faire face à un paquet conséquent d’erreurs liées aux librairies du jeu, j’ai d’abord essayé de mettre ces éléments dans un répertoire de sauvegarde :

libvorbis.so.0
libstdc++.so.6
libGLEW.so.1
libm.so.6
libz.so.1
libxml2.so.2

Hélas, cette manipulation ne fut pas suffisante ; il m’était possible de lancer le jeu lui-même, mais pas d’en changer les propriétés via le launcher. J’ai donc procédé à l’envers : enlever toutes les librairies pour, remplissant au fur et à mesure chaque dépendance, obtenir un résultat sain.

Pour commencer, j’ai donc créé un dossier lib32bak dans le répertoire du jeu :

sudo mkdir /opt/Shadowgrounds/lib32bak

Ensuite j'y ai déplacé les librairies qui sont dans le dossier lib32. Après une multitude de lancements et d’emmerdes, je peux fournir cette commande qui va bien :

sudo mv /opt/Shadowgrounds/lib32/{libX*,libasound*,libopenal*,libm.so.6,libstdc++.so.6,libvorbis*,libxcb*,libxml2.so.2,libz.so.1} /opt/Shadowgrounds/lib32bak/

Pour arriver à ce résultat, il suffisait d’être patient et méthodique, en remplissant chaque dépendance en fonction des erreurs soulevées à chaque lancement de shadowgrounds-launcher ou de shadowground.

Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path : « murrine »

Il suffit d’installer la version 32bits de Murrine, soit lib32-gtk-engine-murrine, si cette erreur vous gêne. Le launcher est enfin fonctionnel !

Si un problème quelconque persiste, il ne faut pas non plus oublier que ce peut être un problème déjà référencé dans la FAQ. Pour shadowgrounds-survivor, la marche à suivre est exactement la même, donc je ne vais pas en retranscrire toutes les étapes.

En résumé

Voici la structure des deux dossiers telle que je l’obtiens au final – à vous d’y voir un exemple -, que je pourrais résumer par un simple mais complet :

sudo mv /opt/Shadowgrounds/lib32/{libX*,libasound*,libopenal*,libm.so.6,libstdc++.so.6,libvorbis*,libxcb*,libxml2.so.2,libz.so.1} /opt/Shadowgrounds/lib32bak/

Et la structure des dossiers :

lib32bak/
|-- libX11.so.6
|-- libX11.so.6.bak
|-- libXau.so.6
|-- libXcomposite.so.1
|-- libXcursor.so.1
|-- libXdamage.so.1
|-- libXdmcp.so.6
|-- libXext.so.6
|-- libXfixes.so.3
|-- libXi.so.6
|-- libXinerama.so.1
|-- libXmu.so.6
|-- libXrender.so.1
|-- libXt.so.6
|-- libasound.so.2
|-- libasound_module_pcm_pulse.so
|-- libm.so.6
|-- libopenal.so.1
|-- libstdc++.so.6
|-- libvorbis.so.0
|-- libvorbisfile.so.3
|-- libxcb-render-util.so.0
|-- libxcb-render.so.0
|-- libxcb-xlib.so.0
|-- libxcb.so.1
|-- libxcb.so.1.bak
|-- libxml2.so.2
`-- libz.so.1

De même que :

lib32/
|-- libFLAC.so.8
|-- libGLEW.so.1.5
|-- libICE.so.6
|-- libNxCharacter.so
|-- libNxCooking.so
|-- libPhysXCore.so
|-- libPhysXLoader.so.1
|-- libSDL-1.2.so.0
|-- libSDL_image-1.2.so.0
|-- libSDL_sound-1.0.so.1
|-- libSDL_ttf-2.0.so.0
|-- libSM.so.6
|-- libavcodec.so.51
|-- libavformat.so.52
|-- libavutil.so.49
|-- libboost_filesystem.so.1.35.0
|-- libboost_regex.so.1.35.0
|-- libboost_system.so.1.35.0
|-- libboost_thread-mt.so.1.35.0
|-- libdirect-1.0.so.0
|-- libdirectfb-1.0.so.0
|-- libexpat.so.1
|-- libfusion-1.0.so.0
|-- libgcc_s.so.1
|-- libgdbm.so.3
|-- libgmodule-2.0.so.0
|-- libgomp.so.1
|-- libicudata.so.38
|-- libicui18n.so.38
|-- libicuuc.so.38
|-- libjpeg.so.62
|-- libmikmod.so.2
|-- libogg.so.0
|-- libpcre.so.3
|-- libpng12.so.0
|-- librt.so.1
|-- libselinux.so.1
|-- libsmpeg-0.4.so.0
|-- libspeex.so.1
|-- libtiff.so.4
|-- libvga.so.1
`-- libx86.so.1

En espérant sincèrement que cela puisse vous servir : bon jeu !