Fichiers et identifiants du mod
Chaque mod est un dossier contenant mod.json. Ajoute uniquement les autres fichiers dont ton mod a besoin.
my_mod/
mod.json
data.json
lang/*.lang.txt
maps/
models/*.glb
main.gd
Voici un mod.json complet. Seul id est obligatoire. Choisis un identifiant unique et garde-le lors des mises à jour, car les sauvegardes l’utilisent pour reconnaître le mod.
{
"id": "north_line_mail",
"name": "North Line Mail",
"version": "1.0",
"author": "Your name",
"description": "A diesel for overnight mail trains."
}
Ouvre Mods sur l’écran titre et choisis Ouvrir le dossier des mods. Place le dossier ou le ZIP à cet endroit, clique sur Rechercher à nouveau et coche le mod. Pendant les modifications, travaille dans le dossier décompressé pour pouvoir enregistrer et relancer la recherche. Les changements s’appliquent à la prochaine partie lancée ou chargée.
Véhicules
Dans data.json, ajoute chaque véhicule sous vehicles avec un identifiant unique. Par exemple, north_line_mail_diesel ajoute une locomotive qui reprend l’apparence du diesel du jeu de base.
{
"vehicles": {
"north_line_mail_diesel": {
"name": "North Line Mail Diesel",
"kind": "rail",
"look": "diesel",
"cargos": ["mail", "pax"],
"max_wagons": 6,
"speed": 6.2,
"cost": 88000,
"run": 7600,
"year": 1962,
"desc": "A fast diesel for overnight mail."
}
}
}
| Champ | Valeur |
|---|---|
name, desc | Nom affiché et description facultative dans la boutique. |
kind | rail, road, water ou air. |
look ou model | Réutilise un modèle du même type ou indique le chemin vers ton propre modèle. Exemples d’identifiants du jeu de base : steam, diesel, bus, truck, ferry, freighter, prop et jet. |
cargos | Liste contenant au moins un identifiant de cargaison existante. Par exemple, pax, mail, coal, wood, goods et food. |
max_wagons ou cap | Le champ max_wagons est obligatoire pour les locomotives. Pour les autres véhicules, cap indique la capacité. |
speed | Cases par jour de jeu. Multiplie par 30 pour obtenir la vitesse en km/h affichée dans la boutique. |
cost, run | Prix d’achat et coût annuel d’exploitation, en dollars entiers. Les wagons s’ajoutent au prix du train. |
year | Première année de disponibilité en boutique. Omet ce champ pour rendre le véhicule disponible dès le début. |
rel | Fiabilité initiale facultative, entre 0 et 1. La valeur par défaut dépend de l’année du véhicule. |
electric | Indique true si la locomotive a besoin d’une caténaire. |
Les mods ajoutent de nouveaux identifiants de véhicule. Si Fourways signale un doublon, choisis un identifiant propre à ton mod.
Modèles 3D personnalisés
Exporte ton modèle au format glTF binaire (.glb) et place-le dans models/. Dans la définition du véhicule, utilise "model": "models/mail.glb" à la place de look et indique dans length la longueur de la caisse en cases.
- Compte une unité par case. Un bus mesure environ 0,46 unité et un bateau, environ 0,9.
- Centre le modèle à l’origine, place sa base à Y = 0 et oriente-le vers −Z.
- Les modèles personnalisés conservent les matériaux exportés. Les modèles réutilisés avec
lookprennent les couleurs de la compagnie. - Le modèle de locomotive couvre uniquement la motrice. Fourways fournit les wagons.
Tarifs des cargaisons et noms
Ajoute l’une de ces sections à data.json avec tes définitions de véhicules ou utilise-la seule.
{
"cargo": {
"mail": {"rate": 52, "days": 10}
},
"town_names": {
"prefixes": ["Vila", "Sant", "Mont"],
"suffixes": ["nova", "bella", "serrat"],
"replace": false
},
"company_names": ["Ferrocarrils del Nord", "Costa Brava Lines"]
}
- Dans
cargo, utilise les identifiants des cargaisons existantes.ratefixe le tarif d’une unité sur 25 cases etdaysindique le nombre de jours où le plein tarif s’applique. Les deux valeurs doivent être positives. Appuie sur Y pour voir le résultat dans Tarifs des cargaisons. town_namescombine un préfixe et un suffixe pour générer des noms de villes. Utilisereplace: truepour remplacer les listes du jeu par les tiennes.company_namesfournit des noms pour les compagnies rivales. Le jeu les utilise avant de puiser dans sa propre liste.
Cartes de hauteur et préréglages
Place un PNG ou JPEG en niveaux de gris dans maps/. Le noir indique les points les plus bas, généralement la mer, et le blanc les plus hauts. Fourways adapte l’image à la taille du monde et la propose sous Carte dans Nouvelle partie.
Ajoute un fichier great_valley.json à côté de great_valley.png pour définir son nom, sa description et ses options de départ.
{
"name": "Great Valley",
"description": "A wide valley between two ranges.",
"settings": {"w": 512, "h": 256, "towns": 1, "industries": 2, "year": 1970}
}
- La largeur et la hauteur peuvent chacune être de 64, 128, 256, 512 ou 1024 cases.
- La densité des villes et des industries va de 0 (peu) à 3 (très dense).
- Les années de départ sont 1950, 1960, 1970, 1980, 1990 et 2000. Les joueurs peuvent modifier les préréglages avant de commencer.
Traductions et nouvelles langues
Place des fichiers texte se terminant par .lang.txt dans lang/. Commence chaque bloc par > , suivi du texte anglais exact. Ajoute une ligne par code de langue. Cela fonctionne pour les textes du jeu comme pour les noms et descriptions des véhicules du mod.
> Cost %s
es: Coste %s
ca: Cost %s
fr: Coût %s
- Garde les marqueurs comme
%set%ddans le même ordre. Utilise\npour les sauts de ligne et des guillemets doubles si le texte commence ou finit par un espace. - Pour ajouter une langue, saisis les traductions sous son code et traduis la clé
Englishpour que la langue apparaisse sous son propre nom dans les Paramètres. Par exemple, metsnl: Nederlandssous> English. - Dans les scripts, place le texte dans
L.t("English text")pour que les joueurs puissent le traduire avec les mêmes fichiers.
Scripts de jeu
Crée main.gd dans le dossier du mod et commence par extends Mod. Redéfinis les fonctions dont tu as besoin. Cet exemple verse 500 $ au joueur chaque mois et publie une actualité.
extends Mod
func _on_month(sim: Sim) -> void:
sim.company.earn(500)
news(sim, L.t("Monthly transport grant"), "good")
| Fonction | Quand Fourways l’appelle |
|---|---|
_on_load() | À l’application des mods actifs, y compris quand tu relances la recherche depuis l’écran des mods. Aucune partie n’est active à ce moment-là. |
_on_new_game(sim)_on_game_loaded(sim) | Quand un monde est créé ou qu’une sauvegarde a fini de se charger. |
_on_day(sim)_on_month(sim)_on_year(sim, year) | Chaque jour, en fin de mois et au changement d’année. year désigne l’année qui vient de se terminer. |
_on_delivery(sim, vehicle, station, amount) | Après le déchargement d’un véhicule et le paiement du transport. |
_on_vehicle_bought(sim, vehicle)_on_station_built(sim, station) | Après un achat, ou après la construction ou l’agrandissement d’une gare. |
_on_news(sim, item) → bool | Avant la publication d’une actualité. Le dictionnaire contient text, kind, pos et day. Renvoie false pour la masquer ou true pour autoriser sa publication. |
_save(sim) → Dictionary_load(sim, data) | Renvoie un dictionnaire de données simples depuis _save. Si la sauvegarde contient des données pour ce mod, Fourways les transmet à _load avant d’appeler _on_game_loaded. |
L’objet sim donne accès aux compagnies, véhicules, villes, industries et gares. Utilise sim.rng pour des événements aléatoires reproductibles et des méthodes comme sim.build_station() ou sim.buy_vehicle() pour effectuer des actions du joueur. La classe Mod fournit news() pour publier une actualité, note() pour écrire dans le journal et path() pour trouver des fichiers dans le dossier du mod.
Fonctions utilitaires des mods
news(sim, text, kind = "info", at = Vector2(-1, -1))publie une actualité. Utilisegood,info,warnoubadpourkind. Indique une case dansatpour y centrer la vue au clic sur l’actualité.note(text)écrit une entrée dans le journal avec l’identifiant du mod. Tu peux l’appeler depuis_on_load().path(file)renvoie le chemin d’un fichier à partir du dossier du mod. Utiliseinfopour consulter des métadonnées commeid,nameetversion.
Actions courantes de la simulation
Tu peux appeler ces méthodes depuis une fonction qui reçoit sim. Si tu omets who, l’action utilise la compagnie du joueur. Si l’appel renvoie un dictionnaire, vérifie ok avant d’utiliser le résultat. En cas d’échec, consulte reason.
sim.build_line(kind, pts, who = null)construit une route (road) ou une voie ferrée (rail) sur des cases adjacentes successives. Passe unArray[Vector2i]typé.sim.build_station(kind, pts, axis, who = null)construit ou agrandit une gare de typeroad,rail,dockouair. Passe les cases dans unArray[Vector2i]et indique l’axe du quai pour la route ou le rail. En cas de réussite, le résultat contientstation.sim.buy_vehicle(model_id, cargo, wagons, stops, full_load_first, who = null, consist = [], transfer_at = [])achète un véhicule à partir d’un identifiant de modèle existant et d’un tableau de gares.consistpermet de remplacer la cargaison et le nombre de wagons d’un train mixte.transfer_atindique les indices des arrêts où la cargaison est laissée pour un autre véhicule. En cas de réussite, le résultat contientvehicle.sim.town_action(town, action, who = null)exécuteadvertise,treesoufundet renvoie le coût de l’action danscost.sim.company.earn(amount)crédite la compagnie du joueur.sim.company.spend(cost, category)enregistre une dépense et renvoiefalsesi la compagnie ne peut pas la payer. Parmi les catégories possibles figurentconstructionetvehicles.town.rating(company_id)lit l’avis du conseil municipal.town.change_rating(company_id, delta, why = "", day = -1)l’ajuste entre 0 et 100. Indique un motif etsim.day_intpour enregistrer la modification dans la fenêtre de la ville.
Toutes les fonctions définies par Mod sont répertoriées ici. Les scripts peuvent aussi appeler d’autres méthodes du jeu et de Godot. Elles figurent dans le code du jeu et du moteur.
Les mods avec scripts s’exécutent avec les permissions du jeu. Active uniquement des scripts provenant d’auteurs de confiance.
Sauvegardes et partage
Pour partager un mod, compresse son dossier en ZIP. Fourways accepte aussi les ZIP contenant mod.json à la racine. Garde les mêmes identifiants de mod et de véhicules d’une version à l’autre pour que les sauvegardes puissent les retrouver.
La sauvegarde enregistre les mods actifs et peut conserver les données des scripts. Si un mod manque ou est désactivé au chargement, Fourways t’avertit et écarte les véhicules dont le modèle est indisponible. Réactive les mods d’origine avant de charger une partie qui en dépend.
Les formats intégrés couvrent le contenu décrit ici. Pour ajouter des types de cargaison, des industries ou des bâtiments urbains, régler les coûts de construction individuellement, remplacer les modèles ou sons du jeu ou modifier l’interface, il faut intervenir dans le code du jeu.