Traductions possibles :
  • English
  • Français (French)

Ceci est une ancienne révision du document !


Makeobj

makeobj est le logiciel qui sert à compiler les fichiers .dat et les images .png. Il est très simple de s'en servir.

1.Présentation

Si on lance makeobj directement, rien ne se passe. Makeobj est un programme en console, si on veut y voir quelque chose il faut le lancer depuis la ligne de commande de l'OS … on se passera de ça. Pour l'utiliser correctement il faudra le lancer depuis la ligne de commande avec un mot clé en majuscule derrière qui lancerait la bonne commande de makeobj. Il y a deux façons de le faire : le plus confortable est d'utiliser une interface graphique de makeobj comme pakhelper, le plus rapide est de faire des fichiers de commande. Les deux méthodes seront détaillées ici.

Makeobj crée un fichier .pak par objet mais il est possible de fusionner plusieurs .pak en un seul pour plus de facilité.

2.Pakhelper

Une fois téléchargée, décompressez-le, vous avez alors un dossier “pakhelper”. Pakhelper n'étant qu'une interface, il nécéssite makeobj pour fonctionner, celui-ci est à l'intérieur du dossier. Remplacez-le par la dernière version de makeobj que vous avez. Ensuite lancez pakhelper, voila ce qu'on trouve :

Réglez la taille du pak pour lequel vous créez (pak64, pak128, ou un autre pak dont vous devez indiquer la taille), ensuite sélectionnez le fichier .dat avec le bouton “open” et indiquez un nom pour le .pak final qui regroupera tous les .pak créés à partir du fichier .dat.

Le problème de pakhelper est de ne pouvoir compiler qu'un seul fichier .dat à la fois.

Vous trouverez dans l'onglet “Extract” un outil permettant de séparant un fichier .pak multiple en fichiers .pak simples, l'onglet “Merge” vous permettra de faire l'inverse (fusionner plusieurs .pak en un seul).

3.Les fichiers de commande

Un moyen plus rapide et plus efficace de compiler ses fichiers .dat est d'utiliser des fichiers de commande qui lancent makeobj directement.

On a vu plus haut que makeobj se lançait par la ligne de commande avec une indication pour dire à makeobj quelle fonction éxécuter. Les fichiers de commande que nous allons créer reviennent au même mais il suffira de lancer un de ses fichiers pour éxécuter makeobj avec la bonne fonction.

Voici une liste des commandes intéréssantes de makeobj

Makeobj PAK128 : crée des fichiers .pak pour pak128 (on peut faire de même avec pak64 ou autre) à partir des fichiers .dat.

Makeobj MERGE : fusionne les fichiers .pak en un seul.

Makeobj EXTRACT : divise un fichier .pak multiple en plusieurs .pak simples.

Windows

Mettez makeobj où vous voulez sur votre ordinateur. Ensuite ouvrez bloc-note, écrivez les fichiers suivants que vous enregistrerez au format .bat (format des fichiers de commande). Copiez le chemin d'accès de makeobj, par exemple pour moi ça donne :

C:\Users\Gauthier\Documents\Simutrans\makeobj\makeobj

Ce chemin d'accès doit aboutir à l'éxécutable (makeobj.exe) et non pas au dossier où il se trouve.

Vous pouvez à la place d'écrire le chemin d'accès mettre simplement “makeobj” mais il faudra que vous ayez un exemplaire de makeobj dans le dossier où se trouve le fichier de commande.

Voici les fichiers à créer (remplacez “makeobj” par son chemin d'accès).

create.bat

makeobj pak128 2>err.txt

merge.bat

makeobj MERGE name.pak *.pak

(remplacez “name” par le nom que vous désirez pour le .pak final)

extract.bat

makeobj EXTRACT

Si vous avez précisé les chemin d'accès, vous n'aurez qu'à copier vos fichiers de commande, de plus il sera facile de mettre à jour makeobj puisque vous n'aurez qu'un fichier à remplacer. L'éxecution de chacun de ses fichiers ne s'appliquera qu'aux fichiers qui se trouve dans le même dossier. Vous pouvez ainsi facilement vous organiser en créant un dossier par projet par exemple. Pour create les erreurs éventuelles seront marquées dans le fichier err.txt créé lors de la compilation.

Linux

Sous linux on utilise des scripts shell, qui reviennent sensiblement à la même chose que les fichiers de commande sous windows. Par définition un script shell possède l'extension ”.sh”.

Mettez makeobj dans le dossier de votre choix puis ouvrez une console dans ce dossier. Mettez la commande “pwd” qui nous donneras le chemin complet du dossier où est makeobj sur l'ordinateur. Chez moi par exemple :

/home/fefe/simutrans_travail

donc makeobj est situé ici :

/home/fefe/simutrans_travail/makeobj

Vous avez le chemin de makeobj? On passe à la suite alors. Ouvrez un éditeur de texte puis tapez cette ligne :

#!/bin/sh

Cette ligne permet d'indiquer où est l'interpreteur shell. Elle doit être au début de chacun de vos scripts.

Voici les fichiers à créer (remplacez “makeobj” par son chemin d'accès et ne pas oublier la petite ligne du dessus).

create.sh

makeobj pak128 2>err.txt

merge.sh

makeobj MERGE name.pak *.pak

(remplacez “name” par le nom que vous désirez pour le .pak final)

extract.sh

makeobj EXTRACT

Voila la grosse différence avec windows : Linux n'autorise pas l'execution de logiciel ou script comme ça. Pour cela il va falloir modifier les droits d'execution de nos scripts créés précédemment. Pour cela, dans une console il faut utiliser la commande chmod :

chmod u+x nom_du_script.sh

Et pour lancer le script, a partir d'une console :

./nom_du_script.sh
Pour ceux qui connaissent bien le système linux, vous pouvez simplifier l'appel de makeobj en utilisant un lien symbolique
Pour ceux qui utilise les distributions debian, ubuntu et dérivé, il existe dans les depôts un paquet qui se charge d'installer makeobj proprement sur votre système. Ainsi la procédure reste identique mais il suffit de mettre makeobj dans le script au lieu du chemin complet

4.Erreurs graphiques possibles

Les objets ressemblent à des sapins de Noël en mode nuit

Votre image source contient pas mal de special colors à des endroits où il ne devrait pas y en avoir. Vous pouvez les enlever avec l'outil “remplacer les couleurs” de photofiltre par exemple.

Barres blanches

Votre image source est enregistrée en .png 32 bits, ce qui peut arriver si vous utiliser paint sous windows 7 par exemple. Enregistrez votre image avec un autre éditeur d'image comme photofiltre.

5.Autres erreurs sans message d'erreur de err.txt

L'objet n'apparait pas dans le jeu

Il y a deux causes possibles à ce problème : soit votre objet porte le même nom qu'un autre, dans ce cas il aura été remplacé par l'autre, soit le problème vient de l'image qui n'a pas les bonnes dimensions : les dimensions ne sont pas multiples du pak pour lequel vous créez (1025 au lieu de 1024 pixels par exemple) ou alors il manque certaines images (l'icone d'un bâtiment par exemple).

6.Messages d'erreur de err.txt

Voici les différents messages d'erreur qu'on peut trouver dans err.txt, certaines erreurs peuvent s'accompagner d'un crash de makeobj … pas de panique.

Error:: No such file or directory
ERROR IN CLASS image_writer_t: cannot open ./image.png

Le fichier “image.png” n'est pas trouvé, vérifiez qu'il se trouve dans le dossier, vérifiez qu'il n'y a pas d'erreur dans le nom.

FATAL ERROR: get_waytype()
invalid waytype ””

Il manque un paramètre indispensable dans le .dat, ici c'est le paramètre “waytype”.

Voila les problèmes les plus courants, dans tous les cas si il manque des données à vos véhicules, vérifiez TOUJOURS la bonne orthographe des paramètres (par exemple un très courrant c'est “lenght” au lieu de “length”), certains paramètres ont une mauvaise orthographe mais ils doivent s'écrire comme ils sont donnés dans le tuto précédent. Si vous avez des véhicules qui ne s'attachent pas correctement, vérifiez que les noms sont bien orthographiés dans les constraints, au pire copiez collez les noms dans les constraints pour être sûr, pour les bugs graphiques, l'erreur se trouve toujours dans l'image ou dans l'offset si vous l'utilisez. Si vos images sont décalées, prenez une capture d'écran et mesurez le nombre de pixels de décalage, décalez l'image en conséquence sur le fichier source.

En cas de problème insoluble, créez un sujet pour une demande d'aide ici.