====== III.Les fichiers sources ======
Dernières mises à jour : Simutrans 120.0.1
===== 1.Comment ça marche ? =====
Un objet pour Simutrans est composé (la plupart du temps) d'images pour l'affichage et de données pour les données techniques. Les données s'écrivent tout simplement dans un fichier texte simple (.txt) mais que l'on enregistre avec l'extension .dat. Pour se faire c'est très simple : au moment d'enregistrer votre fichier, remplacez l'extension .txt qui se met automatiquement par .dat. Par la suite pour rouvrir vos fichiers .dat il faudra configurer votre système pour qu'il ouvre ce type de fichiers avec votre éditeur de texte (bloc-notes sous windows). Voila un exemple sous windows :
{{ fr:tuto:dat:fichiersource01.png }}A l'intérieur du texte on peut écrire les paramètres les uns à la suite des autres mais il est préférable pour plus de lisibilité de les mettre les uns en dessous des autres. On peut mettre plusieurs objets dans un .dat à condition de les séparer par des tirets.
par exemple :
paramètres de l'objet 1
—
paramètres de l'objet 2
Pour les images il y a d'autres contraintes selon le pak pour lequel vous créez. L'image doit être enregistrée au format .png 24 bits (photofiltre enregistre par défaut en 24 bits), makeobj ne lire que les .png 24 bits. S'il est en 32 bits (avec un filtre de transparence) alors vous aurez un bug graphique assez gênant dans le jeu. D'autre part les dimensions de vos images doivent être multiples de la taille du pak pour lequel vous créez. Si c'est du pak128 on aura par exemple des images de 1024%%*%%256 ou 768%%*%%512. Si vous faites du pak64 alors on aura des images de 128%%*%%64 ou 192%%*%%384, et ainsi de suite pour chaque pak. Si la taille n'est pas bonne makeobj plantera.
Mais Il faut aussi connaitre le fonctionnement des images sources.
Ce qui va suivre est adapté au pak128, pour les autres paks il faudra modifier les tailles.
L'image est découpée en carrés de 128%%*%%128 pixels (d'où l'obligation d'avoir des dimensions multiples de 128). Voici un exemple d'une partie d'image source (ici source de l'AMT) :{{ fr:tuto:dat:fichiersource02.png }}Bien entendu on ne met pas de cadres rouges sur l'image-source, je l'ai fait ici pour vous montrer les carrés.
Il faudra ensuite indiquer dans le .dat les carrés à utiliser. On utilise alors des coordonnées, la première pour les lignes et la seconde pour les colonnes. Voyez ici sur notre même image :
{{ fr:tuto:dat:fichiersource03.png }}Mieux vaut s'entraîner à repérer maintenant les carrés par leur coordonnées, les confusion sont fréquentes pour un débutant.
Pour la suite les paramètres à indiquer dans un .dat et les images correspondantes diffèrent mais peuvent devenir très répétitifs si on crée souvent la même chose, pour la suite je fournirais donc des trames en images et en texte pour faire vos fichiers plus facilement, nous verrons cela objet par objet.
Une image s'indique dans un .dat de la façon suivante :
id_interne_de_l'image=nom_de_l'image_sans_extension.ligne.colonne
exemple : imageUp[3]=AMT.3.3
Ici l'image utilisée pour imageUp[3] est le carré de la 4ème ligne et de la 4ème colonne de AMT.png.
Les trames graphiques fournies ici sont faites pour le pak128 standard, il peut y avoir besoin de certains décalages pour les autres pak128 et d'un changement de taille pour les autres paks. Ces trames graphiques sont faites pour être utilisées avec les trames de .dat fournies, soyez vigilents si vous modifiez la position des objets…
Dans les dats, tous les paramètres s'écrivent comme ceci :
paramètre=valeur
tous les nombres sont des entiers. Le texte respecte les majuscules.
Pour écrire un commentaire dans un fichier dat, c'est à dire une ligne qui ne sera pas compilée par makeobj, il suffit de commencer cette ligne par #
===== 2.Offset =====
L'offset permet de décaler l'image dans certains cas si besoin. Cette technique est à utiliser uniquement en cas de nécéssité, elle ne doit pas remplacer le décalage des graphismes directement sur une image.
Voici comment on utilise l'offset :
id_image=nom_image.ligne.colonne,x,y
x est le nombre de pixels vers la droite, y le nombre de pixels vers le bas.
Dans l'exemple suivant, l'image est décalée de 16 pixels vers le haut.
cursor=SNFOSstationsmodern.1.7,0,-16
Les icones et l'image [-] des voies ne supportent pas l'offset.
===== 3.Inclinaison des pentes =====
Depuis Simutrans 120, il existe deux hauteurs de pente. Certains paks utilisent des pentes pleines et des demi-pentes, d'autres paks utilisent des pentes pleines et des double pentes.
Le pak128 utilise des demi-pentes. Dans ce pak, la plupart des voies ne peuvent pas être construites sur des pentes fortes, c'est le cas des rails et des autoroutes par exemple.
Dans le pak128, la hauteur d'une pente douce est de 16 pixels tandis que la hauteur d'une pente dure est de 32 pixels.
===== 4.Icones (boutons) =====
Les objets nécessitant des icones ont, sur leur trame graphique, quelque chose de cette forme:
{{ fr:tuto:dat:icon.png }}
L'image d'une icone ne doit contenir que le petit carré de 16 pixels de coté situé en haut à gauche, tout le reste doit être supprimé avant la compilation de l'objet sans quoi il y aura des bugs d'affichage dans le jeu.
Les élements donnés autour de l'icone proprement dite sont des élements spécifiques au pak128 qui entrent dans la composition des icones de ce pak.
===== 5.Curseurs =====
Sur les trames graphiques des objets nécessitant un curseur, le tile servant à placer le curseur est surélevé de quelques pixels par rapport au bas du carré le contenant. Ceci est parfaitement volontaire et sert à compenser un décalage vers le bas du curseur dans le jeu.
===== 6.Exemples de fichiers source =====
Vous trouverez des exemples de fichiers source de tout type d'objet dans les sources des différents paks.
[[http://svn.code.sf.net/p/simutrans/code/pak128/|Sources du pak128]]
===== 7.Utiliser votre éditeur de texte =====
==== 1.Windows ====
Sous windows on utilise bloc-note, notepad++ ou tout autre éditeur de texte pur, c'est à dire sans traitement de texte. On n'utilise donc surtout pas wordpad, Word, Writer, etc... Bloc-note est accessible dans le menu démarrer%%\%%programes%%\%%accessoires%%\%%bloc-notes. Les outils utiles de bloc-note sont la fonction rechercher et remplacer que vous trouvez dans le menu edition.
Ces outils sont accessibles via les raccourcis clavier ctrl+f et ctrl+h
Soyez vigilents en utilisant l'outil “remplacer” si vous utilisez le bouton “remplacer tout”, il se peut que des bribes de texte n'ayant pas à être remplacées le soient.
Enfin pour sauvegarder un fichier source pour simutrans, on remplace l'extension par défaut ”.txt” par l'extension ”.dat”.
==== 2.Linux ====
Sous linux, de nombreux éditeurs de texte existent. Bien souvent, ceux-ci sont en fonction de la distribution, voire même du gestionnaire de bureau installé. En faire le détail complet serait trop long, ainsi le mieux est de voir celui que vous possédez et de regarder la documentation fournie avec celui-ci pour en connaitre les différents raccourcis clavier.
Quelques exemples : Gedit, Kate, Leafpad…
Je parle d'éditeur de texte, pas de logiciel de traitement de texte. OpenOffice Writer n'est pas du tout adapté à cette usage.
Pour enregistrer un fichier source pour simutrans, la manipulation est la même que sous windows, il suffit de mettre l'extension ”.dat” au fichier.//\\ //
Attention, si vous travaillez sur linux et windows, les caractères de retour à la ligne ne sont pas les mêmes sur les deux systèmes. Un fichier créé sur l'un peut s'afficher bizarrement sur l'autre//.// Il est donc conseillé de travailler sur un seul système si on ne connait pas les commande de conversion.
===== 8.Objets =====
[[fr:tutovehicle|véhicules]]
[[fr:tutocitycar|voitures]]
[[fr:tutopedestrian|piétons]]
[[fr:tutoway|voies]]
[[fr:tutowayobject|objets pour voie]]
[[fr:tutobridge|ponts]]
[[fr:tutotunnel|tunnels]]
[[fr:tutosignal|signalisations]]
[[fr:tutostation|stations]]
[[fr:tutostationextension|extensions de stations]]
[[fr:tutodepot|dépôts]]
[[fr:tutobuilding|bâtiments de ville, monuments, attractions touristiques, etc ...]]
[[fr:tutoindustry|industries]]
[[fr:tutogood|biens]]
[[fr:tutocrossing|croisements (passages à niveaux, etc ...)]]
[[fr:tutotree|arbres]]
[[fr:tutosmoke2|fumées]]
===== 9.Pages annexes =====
graphismes des bâtiments : [[fr:tutobuilding2|Graphismes d'un bâtiment]]
waytype : [[fr:tutowaytype|Types de voies possibles]]
engine_type : [[fr:tutoenginetype|Energies des véhicules]]
freight / goods : [[fr:tutogoods|Biens du pak128]]
smoke : [[fr:tutosmoke|Fumées du pak128]]
sound : [[fr:tutosound|Sons du pak128]]
system_type : [[fr:tutosystemtype|Paramètres spéciaux possibles]]
climates : [[fr:tutoclimates|Les climats dans Simutrans]]
tuto suivant : [[fr:tutomakeobj|Chapitre IV : compilation avec makeobj]].