X-Wing Alliance Upgrade sous Debian Bullseye (+sid)🔗

Posted by Médéric Ribreux 🗓 In blog/ Debian/

#fun

Introduction

Adolescent, j'ai passé quelques heures heureuses à jouer à un des premiers simulateurs de combat spatial sur PC, le dénommé X-Wing. A l'époque c'était sur un 386SX20 avec 1MB de RAM et le jeu était limite sur cette plate-forme qui n'avait même pas de carte son. Mais ça faisait son petit effet.

X-Wing est le premier d'une série de jeu du même éditeur et dans la même veine qui a connu des titres comme Tie-Fighter, X-Wing VS Tie Fighter et le dernier en date: X-Wing Alliance, qui est le jeu qui va nous intéresser aujourd'hui.

Certes, il a été édité en 1999 ce qui lui donne à la date de la rédaction de cet article, un âge vénérable de 22 ans. Pourtant, un groupe de fans édite toujours des modifications du moteur de jeu originel et publie des graphismes mis à la page, sous le projet xwaupgrade.

Je vous propose d'installer cette version moderne sur une machine qui tourne sous Debian Bullseye, en 2021, avec l'aide de Wine.

L'installation et la configuration ont été vraiment très complexes et longues à mettre en oeuvre sur ma machine. Ça m'a pris plusieurs mois pour obtenir une formule acceptable. Globalement, j'ai réussi à obtenir un fonctionnement en suivant cette "recette" Lutris. Comme je n'utilise pas Lutris, je vous propose de faire l'installation manuellement sous Debian.

Attention, vous aurez besoin d'un joystick pour jouer à ce jeu (c'est un pré-requis indispensable sinon, le jeu ne se lancera pas).

Les fichiers dont vous aurez besoin

Il vous faut le jeu original. Vous allez me dire, comment récupérer un binaire d'installation d'un jeu de 22 ans. Heureusement, il est toujours disponible sur Steam ou Gog. Et heureusement aussi, vous pouvez, après une patiente recherche le retrouver sous forme piratée. J'ai récupéré la version de GOG qui prend la forme d'un gros fichier setup.exe de 500 Mo.

Vous aurez également besoin des fichiers d'update suivants (disponibles gratuitement):

Installation des paquets Debian requis

Vous aurez besoin de wine64 en version stable, de winetricks, de wine64-development (sur sid) et de dxvk.

wine64 sert à installer le préfixe et à utiliser correctement winetricks. Ce dernier a du mal à utiliser wine64-development (sans doute un problème dans la gestion des noms d'exécutables).

dxvk apporte l'accélération matérielle et wine64-development (en version 6.0 en ce moment) est la seule version de Wine packagée dans Debian qui arrive à faire tourner le jeu.

apt install wine64 dxvk winetricks wine64-development

Création d'un préfixe Wine

Pour ma part, je place toujours un seul jeu Wine dans son préfixe spécifique. Ça permet de ne pas mélanger les pinceaux et, on va le voir, la configuration de Wine pour X-Wing Alliance demande pas mal de customisation.

On créé tout ça avec la version stable de wine (5.0)

WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 wineboot

Installation de dotnet 4.6.1 et de directplay

Ça se fait avec winetricks. C'est un peu longuet mais c'est absolument indispensable. Notamment, l'installation de .Net 4.6.1 est pénible: il faut installer .Net 4.0 qui sert à installer .Net 4.5 qui sert à installer .Net 4.6 qui permet ensuite d'installer .Net 4.6.1 (rien que ça) !

Heureusement, tout se fait en une seule commande (enfin, il restera à confirmer les installations en cliquant sur Next, on est sous Windows hein!):

WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 wine setup.exe

Choisir d'installer dans le répertoire par défaut. A la fin, ne pas démarrer le jeu, on a besoin d'installer les updates:

WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 wine XWAU2020.exe
WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 wine XWAU2020update_v4.0.exe

Les écrans de configuration peuvent vaciller ou être intermittents, il y a des flash dans l'affichage. Les boutons peuvent également être intermittents. Mais après avoir réussi à cliquer aux bons endroits, ça finit par s'installer.

Conversion sous wine64-development

Une fois que le jeu est installé, on peut passer sous la version développement de Wine sous Debian. Elle est plus avancée en termes de version (6.0 vs 5.0 en stable) et surtout, c'est la seule sous Debian qui fasse marcher le jeu correctement.

Pour convertir le préfix, lancez la commande suivante:

WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 wine64-development regedit

Ça convertit le préfixe Wine et ça ouvre regedit à la fin. vous pouvez fermer regedit, on doit d'abord installer dxvk dans le préfixe avant de fignoler le bordel.

Installation de dxvk dans le préfixe

sous Debian, dxvk n'est installable que sur la version développement de Wine. Ça tombe bien, c'est ce qu'on vient de convertir. On peut maintenant déployer facilement dxvk dans le préfixe à l'aide de la commande suivante:

WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 dxvk-setup install -d

Modifier le registre et finitions

Avant de pouvoir lancer le jeu correctement, il reste à indiquer que certains programmes ne vont pas utiliser dxvk. Ça se fait en modifiant le registre.

Voici la liste des clefs de registre à ajouter. Vous pouvez le faire avec regedit manuellement en ajoutant une nouvelle valeur nommée d3d9 et contenant builtin pour les clefs suivantes:

Regedit
Regedit

Apparemment, il faut aussi renommer le fichier Hook_Joystick_Ff.dll en Hook_Joystick_Ff.dll.old, dans le répertoire du jeu, histoire qu'il ne soit pas utilisé.

Enfin, il faut convertir la version de Wine pour windows 10 et changer l'ordre d'utilisation de certaines dll. Ça se fait facilement dans winecfg:

WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 winecfg-development

Wine sous Windows 10
Wine sous Windows 10

Pendant que vous y êtes, ajoutez ddraw.dll en (native, builtin) ainsi que dinput.dll:

Wine sous Windows 10
Wine sous Windows 10

Fabriquer un programme lanceur

Quand j'ai besoin de lancer le jeu, j'utilise un script Bash qui lance l'application directement. Je le nomme ~/.local/bin/xwa, le rend exécutable et j'y fout le contenu qui suit:

#!/bin/bash

# Launch X-Wing Alliance Upgrade
WINEPREFIX=/media/data/gamez/archives/X-Wing/xwaupgrade WINEARCH=win64 \
 wine64-development start /wait /d "C:\\GOG Games\\Star Wars - X-Wing Alliance" \
 "C:\\GOG Games\\Star Wars - X-Wing Alliance\\Alliance.exe"

exit 0

Ensuite, un simple xwa dans wofi et le tour est joué.

Conclusion

J'en ai bavé, j'ai commencé en juillet avant de trouver un truc potable en novembre 2021. Depuis, ça marche, à mon grand étonnement. C'est ça Wine, des fois c'est compliqué à faire tourner. Parfois c'est ultra-simple: un jeu aussi compliqué que The Witcher 3 tourne nativement sous Wine64 stable, sans aucun artifice ni commande magique.

J'avais déjà un joystick (pour Flightgear) et j'ai pu essayer le jeu. C'est vraiment super, la musique est sans doute trop une musique d'action de Star Wars mais ça met bien dans l'ambiance. Les graphismes sont vraiment au dessus de tout ce que j'ai pu voir jusqu'à présent mais mon expérience de ce genre de jeu remonte à… …1993 et X-Wing alors ce n'est sans doute pas une référence. Quoique.