Referencia de mods

Añade vehículos, modifica el terreno y las tarifas, traduce el juego o escribe tus propias reglas.

Buscar en la API de modsConsulta las funciones de eventos, los métodos y las opciones de archivos.

Archivos e identificadores del mod

Cada mod es una carpeta que contiene mod.json. Añade solo los demás archivos que use tu mod.

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

Este es un mod.json completo. El único campo obligatorio es id. Elige un identificador único y mantenlo al publicar actualizaciones, ya que las partidas guardadas lo usan para identificar el mod.

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

Abre Mods en la pantalla de título y elige Abrir la carpeta de mods. Pon allí la carpeta o el ZIP, haz clic en Buscar de nuevo y marca el mod. Mientras lo edites, trabaja con la carpeta descomprimida para poder guardar y volver a buscar. Los cambios se aplican al iniciar o cargar la siguiente partida.

Vehículos

En data.json, coloca cada vehículo dentro de vehicles con un identificador único. Por ejemplo, north_line_mail_diesel añade una locomotora con el aspecto de la diésel del juego 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."
    }
  }
}
CampoValor
name, descNombre visible y descripción opcional para la tienda.
kindrail, road, water o air.
look o modelReutiliza un modelo del mismo tipo o indica la ruta a tu modelo. Algunos identificadores del juego base son steam, diesel, bus, truck, ferry, freighter, prop y jet.
cargosLista con al menos un identificador de carga existente. Por ejemplo, pax, mail, coal, wood, goods y food.
max_wagons o capLas locomotoras requieren max_wagons. En el resto de los vehículos, cap indica la capacidad.
speedCasillas por día de juego. Multiplica por 30 para obtener la velocidad en km/h que muestra la tienda.
cost, runPrecio de compra y coste anual de funcionamiento, en dólares enteros. Los vagones se suman al precio del tren.
yearPrimer año en que aparece en la tienda. Omítelo para que esté disponible desde el principio.
relFiabilidad inicial opcional, entre 0 y 1. El valor predeterminado depende del año del vehículo.
electricUsa true si la locomotora necesita catenaria.

Los mods añaden nuevos identificadores de vehículo. Si Fourways indica que hay uno duplicado, elige un identificador propio de tu mod.

Modelos 3D personalizados

Exporta tu modelo como glTF binario (.glb) y guárdalo en models/. En la definición del vehículo, usa "model": "models/mail.glb" en lugar de look y pon en length la longitud de la carrocería en casillas.

  • Usa una unidad por casilla. Un autobús mide unas 0,46 unidades y un barco, unas 0,9.
  • Centra el modelo en el origen, colócalo con la base en Y = 0 y oriéntalo hacia −Z.
  • Los modelos personalizados conservan sus materiales al exportarlos. Los reutilizados con look usan los colores de la compañía.
  • El modelo de locomotora solo incluye la máquina. Fourways aporta los vagones.

Tarifas de carga y nombres

Añade cualquiera de estas secciones a data.json junto con las definiciones de vehículos o úsalas por separado.

{
  "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"]
}
  • En cargo, usa identificadores de cargas existentes. rate es la tarifa por una unidad a lo largo de 25 casillas y days es el número de días que se paga la tarifa completa. Ambos valores deben ser positivos. Pulsa Y para ver el resultado en Tarifas de carga.
  • town_names combina un prefijo y un sufijo para generar nombres de pueblos. Usa replace: true para sustituir las listas del juego por las tuyas.
  • company_names aporta nombres para las compañías rivales. El juego usa estos nombres antes de recurrir a los del juego base.

Mapas de altura y ajustes predefinidos

Pon un PNG o JPEG en escala de grises en maps/. El negro marca el terreno más bajo, normalmente el mar, y el blanco el más alto. Fourways adapta la imagen al tamaño del mundo y la muestra en Mapa al abrir Nueva partida.

Añade un archivo great_valley.json junto a great_valley.png para definir el nombre, la descripción y las opciones iniciales.

{
  "name": "Great Valley",
  "description": "A wide valley between two ranges.",
  "settings": {"w": 512, "h": 256, "towns": 1, "industries": 2, "year": 1970}
}
  • La anchura y la altura pueden ser de 64, 128, 256, 512 o 1024 casillas cada una.
  • La densidad de pueblos e industrias va de 0 (pocos) a 3 (muy numerosos).
  • Los años de inicio son 1950, 1960, 1970, 1980, 1990 y 2000. Los jugadores pueden cambiar los ajustes antes de empezar.

Traducciones e idiomas nuevos

Pon en lang/ archivos de texto plano que terminen en .lang.txt. Empieza cada bloque con > y el texto exacto en inglés. Añade una línea por código de idioma. Sirve tanto para los textos del juego como para los nombres y descripciones de los vehículos del mod.

> Cost %s
es: Coste %s
ca: Cost %s
fr: Coût %s
  • Mantén en el mismo orden los marcadores como %s y %d. Usa \n para los saltos de línea y comillas dobles si el texto empieza o acaba con un espacio.
  • Para añadir un idioma, pon las traducciones bajo su código y traduce la clave English para que el nombre del idioma aparezca en Ajustes. Por ejemplo, pon nl: Nederlands debajo de > English.
  • En los scripts, pon el texto dentro de L.t("English text") para que los jugadores puedan traducirlo con los mismos archivos.

Scripts de juego

Crea main.gd en la carpeta del mod y empieza con extends Mod. Redefine las funciones que necesites. Este ejemplo concede 500 $ al jugador cada mes y publica una noticia.

extends Mod

func _on_month(sim: Sim) -> void:
    sim.company.earn(500)
    news(sim, L.t("Monthly transport grant"), "good")
FunciónCuándo la llama Fourways
_on_load()Al aplicar los mods activos, también cuando vuelves a buscar desde la pantalla de mods. Todavía no hay una partida activa.
_on_new_game(sim)
_on_game_loaded(sim)
Al crear un mundo o al terminar de cargar una partida.
_on_day(sim)
_on_month(sim)
_on_year(sim, year)
Cada día, a fin de mes y al cambiar de año. year es el año que acaba de terminar.
_on_delivery(sim, vehicle, station, amount)Cuando un vehículo descarga y se cobra el transporte.
_on_vehicle_bought(sim, vehicle)
_on_station_built(sim, station)
Después de una compra o de construir o ampliar una estación.
_on_news(sim, item) → boolAntes de publicar una noticia. El diccionario contiene text, kind, pos y day. Devuelve false para ocultarla o true para mostrarla.
_save(sim) → Dictionary
_load(sim, data)
Devuelve un diccionario con datos simples desde _save. Si la partida contiene datos de este mod, Fourways llama a _load con esos datos antes de _on_game_loaded.

El objeto sim permite acceder a compañías, vehículos, pueblos, industrias y estaciones. Usa sim.rng para que los eventos aleatorios sean reproducibles y métodos como sim.build_station() o sim.buy_vehicle() para ejecutar acciones del jugador. La clase Mod ofrece news() para publicar noticias, note() para escribir en el registro y path() para localizar archivos en la carpeta del mod.

Funciones auxiliares de los mods

  • news(sim, text, kind = "info", at = Vector2(-1, -1)) publica una noticia. Usa good, info, warn o bad en kind. Indica una casilla en at para que la vista salte allí al hacer clic en la noticia.
  • note(text) escribe una entrada en el registro con el identificador del mod. Puedes llamarla desde _on_load().
  • path(file) devuelve la ruta de un archivo a partir de la carpeta del mod. Usa info para consultar metadatos como id, name y version.

Acciones habituales de la simulación

Puedes llamar a estos métodos desde una función que reciba sim. Si omites who, se usa la compañía del jugador. Si la llamada devuelve un diccionario, comprueba ok antes de usar el resultado. Si falla, consulta reason.

  • sim.build_line(kind, pts, who = null) construye una carretera (road) o una vía (rail) por casillas adyacentes consecutivas. Pasa un Array[Vector2i] tipado.
  • sim.build_station(kind, pts, axis, who = null) construye o amplía una estación de tipo road, rail, dock o air. Pasa las casillas en un Array[Vector2i] y el eje del andén para carretera o ferrocarril. Si tiene éxito, el resultado contiene station.
  • sim.buy_vehicle(model_id, cargo, wagons, stops, full_load_first, who = null, consist = [], transfer_at = []) compra un vehículo con un identificador de modelo existente y una lista de estaciones. consist permite definir la carga y el número de vagones de un tren mixto. transfer_at indica los índices de las paradas donde se deja carga para otro vehículo. Si tiene éxito, el resultado contiene vehicle.
  • sim.town_action(town, action, who = null) ejecuta advertise, trees o fund y devuelve el coste de la acción en cost.
  • sim.company.earn(amount) ingresa dinero en la compañía del jugador. sim.company.spend(cost, category) registra un gasto y devuelve false si la compañía no tiene fondos. Dos categorías posibles son construction y vehicles.
  • town.rating(company_id) consulta la valoración del ayuntamiento. town.change_rating(company_id, delta, why = "", day = -1) la ajusta dentro del intervalo de 0 a 100. Pasa un motivo y sim.day_int para registrar el cambio en la ventana del pueblo.

Aquí se enumeran todas las funciones que define Mod. Los scripts también pueden llamar a otros métodos del juego y de Godot. Puedes consultarlos en el código del juego y del motor.

Los mods con scripts se ejecutan con los permisos del juego. Activa solo scripts de autores en los que confíes.

Partidas guardadas y distribución

Para compartir un mod, comprime su carpeta en ZIP. Fourways también acepta ZIP con mod.json en el nivel superior. Conserva los identificadores del mod y de los vehículos entre versiones para que las partidas guardadas puedan encontrarlos.

La partida guardada registra los mods activos y puede guardar datos de los scripts. Si falta un mod o está desactivado al cargar, Fourways te avisa y omite los vehículos cuyos modelos no estén disponibles. Vuelve a activar los mods que usaba la partida antes de cargarla.

Los formatos disponibles cubren el contenido descrito aquí. Añadir tipos de carga, industrias o edificios urbanos, ajustar costes de construcción individuales, sustituir modelos o sonidos del juego o cambiar la interfaz requiere trabajar con el código del juego.