En sachant que les données de jeu doivent être situées dans le répertoire courant où est exécuté l'exécutable, on ne peut apparemment pas packager ZSDX actuellement sous Linux (Testé sous Arch, pas de solution)... Une solution à trouver donc ?
En plus de ne pas pouvoir packager, c'est aussi très gênant de devoir être dans le répertoire contenant les données lorsque l'on lance le jeu. Un peu dur de faire un raccourcis de lancement, ou de mettre zsdx dans le PATH.
Je ne sais pas comment faire pour installer les données dans un répertoire à part sans avoir besoin de recompiler le jeu pour spécifier le nom de ce répertoire dans le code source.
Et si je mets une option de la ligne de commande sur l'exécutable pour spécifier l'emplacement des fichiers de données ?
Ensuite le package installerait un /usr/bin/zsdx qui serait un script appelant le vrai exécutable avec l'argument adapté. Du genre
/usr/games/zsdx -datapath=/usr/share/games/zsdx/
Ce système a l'avantage de laisser plus de facilités à l'utilisateur pour modifier sa ligne de commande ; en effet certaines bibliothèques utilisées par ZSDX sont susceptible de reconnaître des arguments de la ligne de commande.
On peut aussi faire ça en utilisant une variable d'environnement au lieu de le mettre en paramètre de la ligne de commande. Qu'en pensent les spécialistes ? ^^
PS : Au fait dans les titres de topic, ce n'est pas la peine d'abuser de la notation entre crochets. Surtout sur ce forum où c'est réservé au numéro de version ou à la mention "Résolu".
La solution du script qui appelle le binaire est classique, et adaptée je pense.
Le plus propre c'est évidement un fichier de configuration avec un chemin par défaut pour ce dernier et la possibilité de passer en ligne de commande le chemin vers le fichier de config.
Justement j'aimerais bien connaître les manières classiques de procéder ^^
Pour le fichier de configuration : oui, mais où peut-on le placer ? Dans le home de l'utilisateur ? Je veux que le jeu soit accessible par tous les utilisateurs lorsqu'il est installé en root. Dans /etc/zsdx.conf ? Je ne veux pas non plus forcer l'utilisateur qui installe à installer en root :P. Bref, c'est un casse-tête pour moi.
De toute façon pour écrire dans /usr/share/games tu auras besoin des droits root.
En regardant quelques jeux libres (glob2, wesnoth) les deux sont directement des binaires présents dans /usr/games et leurs données sont dans /usr/share/games.
Wesnoth permet de paramétrer le répertoire de configuration de l'utilisateur en ligne de commande :
--config-dir <name> sets the path of the user config directory to
$HOME/<name> or My Documents\My Games\<name> for windows.
Je dirai que quand tu en seras à faire des packages pour différentes distrib (enfin si tu comptes le faire :P) ce sera de toute façon installé en root pour pouvoir être dans les répertoires idoines.
Pour parer aux problèmes des différentes distrib et pour permettre à un utilisateur de tout installer dans son home, il faut que tu permettes de préciser dans le configure les différents chemins à la convenance du gars qui compile. IE: bindir=~/bin datadir=~/games/zsdx
Ensuite si tu veux fournir une version compilée multidistrib tu peux par exemple obliger l'installation dans ~/zsdx. Si ça ne convient pas la personne n'a qu'a recompiler ou utiliser un package tout fait.
La version 1101 a une option de la ligne de commande pour spécifier le chemin d'accès aux données. Ce chemin est le nom d'un répertoire contenant le fichier de données data.zsdx. Exemple :
zsdx -datapath=/usr/share/games/zsdx