Guida di riferimento alle mod

Aggiungi veicoli, modifica il terreno e le tariffe, traduci il gioco o scrivi le tue regole.

Cerca nell’API delle modConsulta gli hook, i metodi e le opzioni dei file.

File e ID della mod

Ogni mod è una cartella che contiene mod.json. Aggiungi solo gli altri file che usa la tua mod.

my_mod/
  mod.json
  data.json
  lang/*.lang.txt
  maps/
  models/*.glb
  main.gd

Ecco un mod.json completo. Solo id è obbligatorio. Scegli un ID univoco e mantienilo quando pubblichi aggiornamenti, perché i salvataggi lo usano per riconoscere la mod.

{
  "id": "north_line_mail",
  "name": "North Line Mail",
  "version": "1.0",
  "author": "Your name",
  "description": "A diesel for overnight mail trains."
}

Apri Mod nella schermata iniziale e scegli Apri la cartella mods. Metti lì la cartella o lo ZIP, fai clic su Cerca di nuovo e spunta la mod. Durante le modifiche lavora sulla cartella estratta, così puoi salvare e ripetere la ricerca. Le modifiche si applicano alla prossima partita che inizi o carichi.

Veicoli

In data.json, inserisci ogni veicolo sotto vehicles con un ID univoco. Per esempio, north_line_mail_diesel aggiunge una locomotiva con l’aspetto della diesel del gioco 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."
    }
  }
}
CampoValore
name, descNome visualizzato e descrizione facoltativa nel negozio.
kindrail, road, water o air.
look o modelRiusa un modello dello stesso tipo o indica il percorso del tuo modello. Alcuni ID del gioco base sono steam, diesel, bus, truck, ferry, freighter, prop e jet.
cargosElenco con almeno un ID di carico esistente, per esempio pax, mail, coal, wood, goods e food.
max_wagons o capPer le locomotive, max_wagons è obbligatorio. Per gli altri veicoli, cap indica la capacità.
speedCaselle per giorno di gioco. Moltiplica per 30 per ottenere la velocità in km/h mostrata nel negozio.
cost, runPrezzo di acquisto e costo di esercizio annuo, in dollari interi. I vagoni si aggiungono al prezzo del treno.
yearPrimo anno di disponibilità nel negozio. Ometti il campo per renderlo disponibile fin dall’inizio.
relAffidabilità iniziale facoltativa, tra 0 e 1. Il valore predefinito dipende dall’anno del veicolo.
electricUsa true se la locomotiva richiede la linea aerea.

Le mod aggiungono nuovi ID dei veicoli. Se Fourways segnala un ID duplicato, scegline uno specifico per la tua mod.

Modelli 3D personalizzati

Esporta il modello in glTF binario (.glb) e mettilo in models/. Nella definizione del veicolo, usa "model": "models/mail.glb" al posto di look e imposta in length la lunghezza della carrozzeria in caselle.

  • Usa un’unità per casella. Un autobus è lungo circa 0,46 unità e una nave circa 0,9.
  • Centra il modello sull’origine, posiziona la base a Y = 0 e orientalo verso −Z.
  • I modelli personalizzati mantengono i materiali esportati. Quelli riutilizzati con look usano i colori della compagnia.
  • Il modello della locomotiva comprende solo la motrice. Fourways fornisce i vagoni.

Tariffe dei carichi e nomi

Aggiungi una di queste sezioni a data.json insieme alle definizioni dei veicoli oppure usala da sola.

{
  "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"]
}
  • In cargo, usa ID di carichi esistenti. rate è la tariffa per un’unità su 25 caselle e days indica per quanti giorni si paga la tariffa piena. Entrambi i valori devono essere positivi. Premi Y per vedere il risultato in Tariffe dei carichi.
  • town_names combina un prefisso e un suffisso per generare i nomi delle città. Usa replace: true per sostituire gli elenchi del gioco con i tuoi.
  • company_names fornisce nomi per le compagnie rivali. Il gioco li usa prima di attingere al suo elenco.

Mappe altimetriche e impostazioni predefinite

Metti un PNG o JPEG in scala di grigi in maps/. Il nero indica il terreno più basso, di solito il mare, e il bianco quello più alto. Fourways adatta l’immagine alle dimensioni del mondo e la mostra sotto Mappa in Nuova partita.

Affianca a great_valley.png un file great_valley.json per definirne nome, descrizione e opzioni iniziali.

{
  "name": "Great Valley",
  "description": "A wide valley between two ranges.",
  "settings": {"w": 512, "h": 256, "towns": 1, "industries": 2, "year": 1970}
}
  • Larghezza e altezza possono essere di 64, 128, 256, 512 o 1024 caselle ciascuna.
  • La densità di città e industrie va da 0 (poche) a 3 (molto numerose).
  • Gli anni di partenza sono 1950, 1960, 1970, 1980, 1990 e 2000. I giocatori possono cambiare le impostazioni prima di iniziare.

Traduzioni e nuove lingue

Metti in lang/ file di testo semplice con estensione .lang.txt. Inizia ogni blocco con > e il testo inglese esatto. Aggiungi una riga per ogni codice lingua. Funziona sia per i testi del gioco sia per i nomi e le descrizioni dei veicoli della mod.

> Cost %s
es: Coste %s
ca: Cost %s
fr: Coût %s
  • Mantieni nello stesso ordine i segnaposto come %s e %d. Usa \n per andare a capo e le virgolette doppie se il testo inizia o finisce con uno spazio.
  • Per aggiungere una lingua, scrivi le traduzioni sotto il suo codice e traduci la chiave English affinché il nome della lingua compaia nelle Impostazioni. Per esempio, scrivi nl: Nederlands sotto > English.
  • Negli script, racchiudi il testo in L.t("English text") per permettere ai giocatori di tradurlo con gli stessi file.

Script di gioco

Crea main.gd nella cartella della mod e inizia con extends Mod. Ridefinisci le funzioni che ti servono. Questo esempio assegna al giocatore 500 $ al mese e pubblica una notizia.

extends Mod

func _on_month(sim: Sim) -> void:
    sim.company.earn(500)
    news(sim, L.t("Monthly transport grant"), "good")
FunzioneQuando Fourways la chiama
_on_load()Quando si applicano le mod attive, anche dopo una nuova ricerca dalla schermata Mod. In quel momento non c’è una partita attiva.
_on_new_game(sim)
_on_game_loaded(sim)
Quando viene creato un mondo o termina il caricamento di un salvataggio.
_on_day(sim)
_on_month(sim)
_on_year(sim, year)
Ogni giorno, a fine mese e al cambio dell’anno. year è l’anno appena concluso.
_on_delivery(sim, vehicle, station, amount)Dopo che un veicolo ha scaricato e il trasporto è stato pagato.
_on_vehicle_bought(sim, vehicle)
_on_station_built(sim, station)
Dopo un acquisto o dopo la costruzione o l’ampliamento di una stazione.
_on_news(sim, item) → boolPrima di pubblicare una notizia. Il dizionario contiene text, kind, pos e day. Restituisci false per nasconderla o true per consentirne la pubblicazione.
_save(sim) → Dictionary
_load(sim, data)
Restituisci un dizionario di dati semplici da _save. Se il salvataggio contiene dati per questa mod, Fourways li passa a _load prima di chiamare _on_game_loaded.

L’oggetto sim dà accesso a compagnie, veicoli, città, industrie e stazioni. Usa sim.rng per eventi casuali riproducibili e metodi come sim.build_station() o sim.buy_vehicle() per eseguire azioni del giocatore. La classe Mod offre news() per pubblicare notizie, note() per scrivere nel registro e path() per trovare file nella cartella della mod.

Funzioni di supporto delle mod

  • news(sim, text, kind = "info", at = Vector2(-1, -1)) pubblica una notizia. Usa good, info, warn o bad per kind. Indica una casella in at per spostare lì la vista quando si fa clic sulla notizia.
  • note(text) scrive nel registro una voce con l’ID della mod. Puoi chiamarla da _on_load().
  • path(file) restituisce il percorso di un file a partire dalla cartella della mod. Usa info per consultare metadati come id, name e version.

Azioni comuni della simulazione

Puoi chiamare questi metodi da una funzione che riceve sim. Se ometti who, si usa la compagnia del giocatore. Se la chiamata restituisce un dizionario, controlla ok prima di usare il risultato. In caso di errore, leggi reason.

  • sim.build_line(kind, pts, who = null) costruisce una strada (road) o un binario (rail) su caselle adiacenti consecutive. Passa un Array[Vector2i] tipizzato.
  • sim.build_station(kind, pts, axis, who = null) costruisce o amplia una stazione di tipo road, rail, dock o air. Passa le caselle come Array[Vector2i] e l’asse della banchina per strada o ferrovia. Se l’operazione riesce, il risultato contiene station.
  • sim.buy_vehicle(model_id, cargo, wagons, stops, full_load_first, who = null, consist = [], transfer_at = []) acquista un veicolo usando l’ID di un modello esistente e un elenco di stazioni. consist può sostituire carico e numero di vagoni per un treno misto. transfer_at elenca gli indici delle fermate in cui lasciare il carico per un altro veicolo. Se l’operazione riesce, il risultato contiene vehicle.
  • sim.town_action(town, action, who = null) esegue advertise, trees o fund e restituisce il costo dell’azione in cost.
  • sim.company.earn(amount) accredita denaro alla compagnia del giocatore. sim.company.spend(cost, category) registra una spesa e restituisce false se i fondi sono insufficienti. Due categorie possibili sono construction e vehicles.
  • town.rating(company_id) legge il giudizio del consiglio comunale. town.change_rating(company_id, delta, why = "", day = -1) lo modifica entro l’intervallo da 0 a 100. Passa un motivo e sim.day_int per registrare la modifica nella finestra della città.

Qui trovi tutte le funzioni definite da Mod. Gli script possono chiamare anche altri metodi del gioco e di Godot. Puoi consultarli nel codice del gioco e del motore.

Le mod con script vengono eseguite con i permessi del gioco. Attiva solo script di autori di cui ti fidi.

Salvataggi e condivisione

Per condividere una mod, comprimi la sua cartella in formato ZIP. Fourways accetta anche gli ZIP con mod.json al primo livello. Mantieni gli stessi ID della mod e dei veicoli da una versione all’altra, così i salvataggi potranno ritrovarli.

Il salvataggio registra le mod attive e può conservare i dati degli script. Se una mod manca o è disattivata al caricamento, Fourways ti avvisa e omette i veicoli con modelli indisponibili. Riattiva le mod originali prima di caricare un salvataggio che le usa.

I formati integrati coprono i contenuti descritti qui. Per aggiungere tipi di carico, industrie o edifici urbani, cambiare singoli costi di costruzione, sostituire modelli o suoni del gioco o modificare l’interfaccia, occorre intervenire sul codice del gioco.