Referència de mods

Afegeix vehicles, modifica el terreny i les tarifes, tradueix el joc o escriu les teves regles.

Cerca a l’API de modsConsulta les funcions d’esdeveniments, els mètodes i les opcions dels fitxers.

Fitxers i identificadors del mod

Cada mod és una carpeta que conté mod.json. Afegeix-hi només els altres fitxers que faci servir el mod.

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

Aquest és un mod.json complet. L’únic camp obligatori és id. Tria un identificador únic i conserva’l quan publiquis actualitzacions, perquè les partides desades l’utilitzen per identificar el mod.

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

Obre Mods a la pantalla de títol i tria Obre la carpeta de mods. Posa-hi la carpeta o el ZIP, fes clic a Torna a buscar i marca el mod. Mentre l’editis, treballa amb la carpeta descomprimida per poder desar els canvis i tornar a buscar. Els canvis s’apliquen quan comencis o carreguis la partida següent.

Vehicles

A data.json, posa cada vehicle dins de vehicles amb un identificador únic. Per exemple, north_line_mail_diesel afegeix una locomotora amb l’aspecte de la dièsel del joc 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."
    }
  }
}
CampValor
name, descNom visible i descripció opcional per a la botiga.
kindrail, road, water o air.
look o modelReutilitza un model del mateix tipus o indica el camí al teu model. Alguns identificadors del joc base són steam, diesel, bus, truck, ferry, freighter, prop i jet.
cargosLlista amb almenys un identificador de càrrega existent. Per exemple, pax, mail, coal, wood, goods i food.
max_wagons o capLes locomotores requereixen max_wagons. Per als altres vehicles, cap indica la capacitat.
speedCaselles per dia de joc. Multiplica per 30 per obtenir la velocitat en km/h que mostra la botiga.
cost, runPreu de compra i cost anual de funcionament, en dòlars sencers. Els vagons s’afegeixen al preu del tren.
yearPrimer any en què apareix a la botiga. Omet-lo perquè estigui disponible des del principi.
relFiabilitat inicial opcional, entre 0 i 1. El valor per defecte depèn de l’any del vehicle.
electricFes servir true si la locomotora necessita catenària.

Els mods afegeixen identificadors de vehicle nous. Si Fourways n’indica un de duplicat, tria un identificador propi del teu mod.

Models 3D personalitzats

Exporta el model com a glTF binari (.glb) i desa’l a models/. A la definició del vehicle, fes servir "model": "models/mail.glb" en comptes de look i indica a length la llargada de la carrosseria en caselles.

  • Fes servir una unitat per casella. Un autobús fa unes 0,46 unitats de llarg i un vaixell, unes 0,9.
  • Centra el model a l’origen, posa’n la base a Y = 0 i orienta’l cap a −Z.
  • Els models personalitzats conserven els materials amb què s’han exportat. Els reutilitzats amb look fan servir els colors de la companyia.
  • El model de locomotora només inclou la màquina. Fourways hi posa els vagons.

Tarifes de càrrega i noms

Afegeix qualsevol d’aquestes seccions a data.json al costat de les definicions de vehicles o fes-les servir soles.

{
  "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"]
}
  • A cargo, fes servir identificadors de càrregues existents. rate és la tarifa per una unitat transportada 25 caselles i days és el nombre de dies que es paga la tarifa sencera. Tots dos valors han de ser positius. Prem Y per veure el resultat a Tarifes de càrrega.
  • town_names combina un prefix i un sufix per generar noms de pobles. Fes servir replace: true per substituir les llistes del joc per les teves.
  • company_names aporta noms per a les companyies rivals. El joc fa servir aquests noms abans de recórrer als del joc base.

Mapes d’altura i valors predefinits

Posa un PNG o JPEG en escala de grisos a maps/. El negre marca el terreny més baix, normalment el mar, i el blanc el més alt. Fourways adapta la imatge a la mida del món i la mostra a Mapa quan obres Partida nova.

Afegeix un fitxer great_valley.json al costat de great_valley.png per definir-ne el nom, la descripció i les opcions inicials.

{
  "name": "Great Valley",
  "description": "A wide valley between two ranges.",
  "settings": {"w": 512, "h": 256, "towns": 1, "industries": 2, "year": 1970}
}
  • L’amplada i l’alçada poden ser de 64, 128, 256, 512 o 1024 caselles cadascuna.
  • La densitat de pobles i indústries va de 0 (pocs) a 3 (molt nombrosos).
  • Els anys d’inici són 1950, 1960, 1970, 1980, 1990 i 2000. Els jugadors poden canviar els valors abans de començar.

Traduccions i idiomes nous

Posa a lang/ fitxers de text pla que acabin en .lang.txt. Comença cada bloc amb > i el text exacte en anglès. Afegeix una línia per codi d’idioma. Serveix tant per als textos del joc com per als noms i descripcions dels vehicles del mod.

> Cost %s
es: Coste %s
ca: Cost %s
fr: Coût %s
  • Mantén en el mateix ordre els marcadors com %s i %d. Fes servir \n per als salts de línia i cometes dobles si el text comença o acaba amb un espai.
  • Per afegir un idioma, posa les traduccions sota el seu codi i tradueix la clau English perquè el nom de l’idioma aparegui a Configuració. Per exemple, posa nl: Nederlands a sota de > English.
  • Als scripts, posa el text dins de L.t("English text") perquè els jugadors el puguin traduir amb els mateixos fitxers.

Scripts de joc

Crea main.gd a la carpeta del mod i comença amb extends Mod. Redefineix les funcions que necessitis. Aquest exemple dona 500 $ al jugador cada mes i publica una notícia.

extends Mod

func _on_month(sim: Sim) -> void:
    sim.company.earn(500)
    news(sim, L.t("Monthly transport grant"), "good")
FuncióQuan la crida Fourways
_on_load()Quan s’apliquen els mods actius, també si tornes a buscar des de la pantalla de mods. Encara no hi ha cap partida activa.
_on_new_game(sim)
_on_game_loaded(sim)
Quan es crea un món o s’acaba de carregar una partida.
_on_day(sim)
_on_month(sim)
_on_year(sim, year)
Cada dia, a final de mes i quan canvia l’any. year és l’any que s’acaba d’acabar.
_on_delivery(sim, vehicle, station, amount)Quan un vehicle descarrega i es cobra el transport.
_on_vehicle_bought(sim, vehicle)
_on_station_built(sim, station)
Després d’una compra o de construir o ampliar una estació.
_on_news(sim, item) → boolAbans de publicar una notícia. El diccionari conté text, kind, pos i day. Retorna false per amagar-la o true per mostrar-la.
_save(sim) → Dictionary
_load(sim, data)
Retorna un diccionari amb dades simples des de _save. Si la partida conté dades d’aquest mod, Fourways crida _load amb aquestes dades abans de _on_game_loaded.

L’objecte sim dona accés a companyies, vehicles, pobles, indústries i estacions. Fes servir sim.rng per generar esdeveniments aleatoris reproduïbles i mètodes com sim.build_station() o sim.buy_vehicle() per executar accions del jugador. La classe Mod ofereix news() per publicar notícies, note() per escriure al registre i path() per trobar fitxers a la carpeta del mod.

Funcions auxiliars dels mods

  • news(sim, text, kind = "info", at = Vector2(-1, -1)) publica una notícia. Fes servir good, info, warn o bad a kind. Indica una casella a at perquè la vista hi salti quan es faci clic a la notícia.
  • note(text) escriu una entrada al registre amb l’identificador del mod. La pots cridar des de _on_load().
  • path(file) retorna el camí d’un fitxer a partir de la carpeta del mod. Fes servir info per consultar metadades com id, name i version.

Accions habituals de la simulació

Pots cridar aquests mètodes des d’una funció que rebi sim. Si omets who, es fa servir la companyia del jugador. Si la crida retorna un diccionari, comprova ok abans de fer servir el resultat. Si falla, consulta reason.

  • sim.build_line(kind, pts, who = null) construeix una carretera (road) o una via (rail) per caselles adjacents consecutives. Passa-hi un Array[Vector2i] tipat.
  • sim.build_station(kind, pts, axis, who = null) construeix o amplia una estació de tipus road, rail, dock o air. Passa les caselles en un Array[Vector2i] i l’eix de l’andana per a carretera o ferrocarril. Si va bé, el resultat conté station.
  • sim.buy_vehicle(model_id, cargo, wagons, stops, full_load_first, who = null, consist = [], transfer_at = []) compra un vehicle amb un identificador de model existent i una llista d’estacions. consist permet definir la càrrega i el nombre de vagons d’un tren mixt. transfer_at indica els índexs de les parades on es deixa càrrega per a un altre vehicle. Si va bé, el resultat conté vehicle.
  • sim.town_action(town, action, who = null) executa advertise, trees o fund i retorna el cost de l’acció a cost.
  • sim.company.earn(amount) ingressa diners a la companyia del jugador. sim.company.spend(cost, category) registra una despesa i retorna false si la companyia no té prou diners. Dues categories possibles són construction i vehicles.
  • town.rating(company_id) consulta la valoració de l’ajuntament. town.change_rating(company_id, delta, why = "", day = -1) l’ajusta dins de l’interval de 0 a 100. Passa un motiu i sim.day_int per registrar el canvi a la finestra del poble.

Aquí es llisten totes les funcions que defineix Mod. Els scripts també poden cridar altres mètodes del joc i de Godot. Els pots consultar al codi del joc i del motor.

Els mods amb scripts s’executen amb els permisos del joc. Activa només scripts d’autors de confiança.

Partides desades i distribució

Per compartir un mod, comprimeix la carpeta en ZIP. Fourways també accepta ZIP amb mod.json al nivell superior. Conserva els identificadors del mod i dels vehicles entre versions perquè les partides desades els puguin trobar.

La partida desada registra els mods actius i pot conservar dades dels scripts. Si falta un mod o està desactivat quan carregues la partida, Fourways t’avisa i omet els vehicles amb models que no estan disponibles. Torna a activar els mods que feia servir la partida abans de carregar-la.

Els formats disponibles cobreixen el contingut descrit aquí. Afegir tipus de càrrega, indústries o edificis urbans, ajustar costos de construcció individuals, substituir models o sons del joc o canviar la interfície requereix treballar amb el codi del joc.