Développement d'un nouveau logiciel libre "mulot 3 ?"
Par Eric SEIGNE, mardi 26 septembre 2006 à 14:37 :: Le Sommet au jour le jour :: #15 :: rss
Comme l'a expliqué Michaël, je suis plongé depuis hier dans le moteur d'un jeux utilisant PyGame. Je suis tombé sur le jeux toba-pyweek et je le décortique pour pouvoir utiliser le moteur et mettre nos propres ressources (images, histoires etc.).
Dans cet article je soulève le capôt du logiciel et vous fais part de mes commentaires et des choses à savoir.
Introduction: logiciel libre ... donc réutilisable
Hé oui, voilà un des avantages du logiciel libre: j'ai peu de temps pour faire un logiciel et je vous avoue même n'avoir jamais fait de programmation en python ... ce n'est pas vraiment grave: j'ai trouvé un logiciel qui propose à peu près les outils techniques dont j'ai besoins, comme c'est libre, je télécharge le code source et je peux le modifier pour en faire un autre ... qui sera également libre et disponible pour de nouvelles modifications :)
C'est sympa cette histoire de mutualisation du code source hein !
La structure du programme de base
L'arborescence du logiciel est la suivante:
- data
- arcade
- cards
- default
- eye
- lair
- mainst
- player
- swamp
- title
- bar
- codes
- ending
- inv
- magic
- music
- sfx
- teen.ttf
- pgu
- rooms
Les fichiers de ressource
Pour chaque "tableau" du jeux, il y a un fichier python + un répertoire qui contient les fichiers correspondants. Si vous voulez modifier un tableau (par exemple "bar" qui est le tableau utilisé lorsqu'on pénètre dans le bar) c'est assez simple: modifiez les fichiers qui se trouvent dans data/bar:
- bkgr.jpg: le fichier jpeg d'arrière plan;
- hotspots.png: fichier transparent dont les zones non transparentes déterminent les zones "sensibles";
- hotspots.txt: fichier qui permet de faire l'association entre les zones colorées du fichier hotspots.png et des mots clés d'action. Le contenu du fichier txt utilise les codes couleurs "webs" sur trois lettres;
- layers.png: fichier transparent qui permet de gérer les différents calques du tableau, c'est sur ces calques qu'on pourra ajouter des images supplémentaires (personnages, animations etc.);
- layers.txt: fichier texte qui permet d'associer un code couleur à un calque;
Les formats des fichiers
Pour le fichier layers.txt, on trouve une ligne comme ceci par exemple:
#000 0 0 100 100 0,0,906;1,0,906;2,0,906;3,0,906;4,0,906;5,0,906; couleur x y larg haut rle
Et le paquet RLE se décompose comme ceci
y,x,largeur
Oui ce n'est pas logique, d'un seul coup on a x et y d'inversés entre le début du paquet et le paquet RLE ... et en plus pour l'instant j'ai beaucoup de mal à comprendre à quoi sert exactement le RLE ... alors je vous donne juste les astuces / idées que j'ai:
- je créé un fichier avec juste ceci (si vous avez bien suivi c'est le paquet complet sans le RLE):
#000 0 0 1 1
- ensuite, pour compléter le fichier, j'utilise un petit script qui me génère automatiquement la ligne RLE
#la largeur du fichier de fond du tableau
LARG_BG=2000
#la hauteur du fichier
HAUT_BG=400
for i in `seq 0 ${HAUT_BG}`; do echo -n ${i}",0,${LARG_BG};" >> /tmp/fic; done
- et enfin, je colle cette ligne à la fin dans mon fichier layers.txt, à noter que gedit n'est pas un bon copain pour cette mission, il n'arrive pas à gérer une seule ligne de cette taille !
Avec cette ligne #000 ça me permet d'afficher l'image d'arrière plan du tableau au complet.
L'éditeur
L'éditeur proposé permet de placer précisément les objets du niveau. Par contre je n'ai pas encore réussi à lui faire faire le fichier de layers.txt !
Pour utiliser l'éditeur, j'ai du télécharger le PGU, le décompresser qqpart sur le disque dur, ensuite modifier le fichier edit.py de toba pour mettre le bon chemin sur la ligne suivante:
import sys; sys.path.insert(0, "/home/erics/python/pgu/pgu-0.10.5")
Vous pouvez ensuite lancer la commande suivante pour modifier le tableau "arcade" (par exemple)
python edit.py arcade
ATTENTION: BILLET NON TERMINÉ
en fait je me dis que je n'aurais peut-être pas le temps de continuer mon travail sur ce code python cette semaine si on a beaucoup de monde sur le stand demain et vendredi, je valide donc ce billet mais attention, j'y ajouterais des infos dès que ...
Téléchargement et infos finales
Le paquet complet est disponible en téléchargement ici. Décompressez le fichier qqpart chez vous, modifiez ensuite le fichier edit.py pour écrire en dur le chemin d'accès à votre répertoire et tout devrait marcher.
Le code modifié permet donc d'avoir:
- l'écran de bienvenue;
- et l'accrochage direct sur le niveau "arcade";
Il reste donc à modifier ce qui suit:
- les images qui se trouvent dans le dossier ryxeo_python_games/mulot3ryxeo/data/arcade/ pour mettre:
- le bon background (arrière plan);
- le fichier walkable qui est tout simplement le chemin qui est autorisé par le player sur la carte;
- les fichiers hotspots(png et txt);
- les fichiers layers(png et txt);
- le fichier objs.txt qui détermine les emplacements des différents objets du tableau;
- les images qui se trouvent dans le dossier ryxeo_python_games/mulot3ryxeo/data/player/ pour mettre:
- les bon fichiers png de description du joueur;
- modifier le fichier texte ani.ini qui permet d'associer une ou plusieurs images png (séquence) aux différentes situations;
- modifier éventuellement le fichier shape.png qui est le masque correspondant à la forme (maximale) du joueur;
- les musiques qui se trouvent dans le dossier ryxeo_python_games/mulot3ryxeo/data/music/
- les fichiers qui se trouvent dans ryxeo_python_games/mulot3ryxeo/data/title/ qui composent l'écran d'accueil;
- ... c'est à peu près tout;
- le fichier ryxeo_python_games/mulot3ryxeo/rooms/arcade.py qui contient tout le code "important" pour le tableau "arcade", c'est dans ce fichier qu'on va pouvoir coder les actions (glisser-dépôser un bout de fromage sur une zone déterminée dans un layer ou hotspots, je n'ai pas encore réussi à comprendre les diffs entre ces deux fichiers, c'est à creuser);
Pour info, j'ai laissé le code complet du jeux de base (toba) il faudra donc penser à "nettoyer" le code source pour virer tout ce dont on n'a pas besoin mais ce n'était pas vraiment possible à bucarest.
Ça serait bien de documenter tout ce que vous faites sur le code pour qu'on puisse suivre les étapes et modifications.
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.