Imperivm Resurrected

SDK de Imperivm Resurrected

Español · English · Italiano

Imperivm Resurrected es un mod para Imperivm HD (Great Battles of Rome) que deja hacer mods que antes no se podían: civilizaciones nuevas, habilidades, objetos, modos de victoria, idiomas, scripts que reaccionan a la partida y más. Esto son las guías y herramientas para hacerlos. Cada guía trae un mod de ejemplo en ejemplos/.

Empieza aquí

  1. Instala Imperivm Resurrected: copia su contenido dentro de la carpeta del juego (...\steamapps\common\Imperivm - Great Battles of Rome HD) y abre el juego desde Steam.
  2. Copia una carpeta de ejemplos/ (por ejemplo parches-ejemplo) a mods\, dentro de la carpeta del juego. Para empezar un mod desde cero, usa plantilla-mod/.
  3. En el menú principal, botón Contenido adicional: activa el mod en tu perfil.
  4. Reinicia el juego si no se ha reiniciado solo.
  5. Abre Logs\imperivm\imperivm-mod.log, en la carpeta del juego. Ahí salen los errores de tu mod y lo que ha cargado.

Antes de abrir el juego, pasa tu mod por el validador.

Cómo es un mod

Una carpeta dentro de mods\ con un mod.json y los archivos que cambia o añade, con las mismas rutas que usa el juego:

mods\
  mi-mod\
    mod.json
    data\classes\MiUnidad.sc.xml     <- archivo nuevo o que sustituye al del juego
    loc\spanish.loc.xml              <- textos que se suman a los del juego

No metas ejecutables ni scripts del sistema (.exe .dll .asi .bat .cmd .com .scr .ps1 .vbs .js .msi .sys .cpl .lnk .reg .jar .hta .wsf .pif). Si hay uno, el mod no se carga. Un .js suelto, como un generador tuyo, cuenta.

mod.json

{
  "id": "mi-mod",
  "name": {"spanish": "Mi mod", "english": "My mod", "italian": "Il mio mod"},
  "version": "1.0",
  "authors": ["Yo"],
  "description": {"spanish": "Qué hace mi mod.", "english": "What my mod does."},
  "category": "Gameplay & Balance",
  "redistributable": true
}
Campo Para qué
id, name, version, authors, description La ficha del mod en el gestor. name y description valen como un texto solo o como un objeto con un texto por idioma (se ve el del idioma del juego; si no, el inglés; si no, el primero).
category, tags La categoría de GameBanana y, en mapas, campañas, traducciones y audio, las etiquetas de jugadores o idioma. Ver Publicar.
redistributable Con true, el anfitrión de una sala puede enviar el mod a quien no lo tenga. Por defecto es false.
license Texto libre con la licencia.
requires Mods que necesita: una lista de ids, o de objetos {"id": "...", "version": "..."}.
incompatibleWith Lista de ids de mods con los que no se puede activar.
loadAfter, loadBefore Lo que pides al orden de carga, por ids; el resto lo calcula el juego. Con loadAfter tu mod va por encima de ese: sus archivos, parches y textos ganan (salvo un archivo que el otro trae suelto y el tuyo dentro de un .pak: gana el suelto).
sources {"url": "...", "gamebanana": 123456}. Lo escribe el juego al instalar desde Explorar contenido; sirve para avisar de versiones nuevas.
language Declara un idioma nuevo. Ver Idiomas.
commands Nombre de cada archivo de órdenes en la pantalla de Controles. Ver Teclas.

Hasta la 0.31.50 los nombres de estos campos eran en español (nombre, autores, descripcion, etiquetas, categoria, redistribuible, licencia, requiere, incompatibleCon, cargarDespuesDe, cargarAntesDe, fuentes, idioma, ordenes…). Los antiguos se siguen leyendo, pero escribe los nuevos.

Guías

  • Idiomas y textos: cambiar textos del juego o añadir un idioma sin sustituir el archivo entero.
  • Teclas de los mods: cómo salen las órdenes de tu mod en Controles y cómo nombrarlas.
  • Parches: cambiar parte de un XML, INI o script del juego sin sustituirlo; dos mods pueden tocar el mismo archivo.
  • Scripts: scripts .vs, eventos y las funciones Mod_....
  • Civilizaciones: declarar una civilización nueva o clonar una del juego, con su IA, y jugar con ella en la sala.
  • Plantillas de ciudad y aldea: ciudad y aldea iniciales propias de una civilización de mod (crear-plantilla.js).
  • Unidades nuevas: clase, orden de reclutarla, imágenes y textos, reutilizando el modelo de otra unidad.
  • Estadísticas de unidades: qué atributo toca cada cosa, cuáles no hacen nada y cuáles cuelgan el juego.
  • Especialidades de unidad: especialidades nuevas y su efecto con scripts.
  • Habilidades de tropas: habilidades nuevas para unidades o héroes (orden con botón y tecla, más un método con script).
  • Objetos nuevos: amuletos, hierbas y gemas de los héroes.
  • Formaciones nuevas: formaciones de héroe con sus bonos y su botón.
  • Fortines y edificios: fortines neutrales nuevos en los mapas aleatorios (crear-fortin.js) y clases de torres, muros y puertas.
  • Modos de victoria: un script en data\GameScripts añade un modo al desplegable "Modo" de la sala.
  • Opciones de partida propias: interruptores nuevos en las reglas de la sala, que los scripts leen con Mod_GetOption.
  • Tipos de mapa aleatorio: un dibujo de cuatro colores se convierte en un tipo nuevo de mapa (crear-mapa-aleatorio.js).
  • Imágenes propias: botones de órdenes e iconos de unidades a partir de un PNG.
  • Gráficos propios: sprites propios para unidades y edificios (convertir-sprite.js, crear-entidad.js, leer-rle.js).
  • Validar un mod: revisar un mod sin abrir el juego, con archivo y línea de cada fallo.
  • Publicar en GameBanana: categorías, etiquetas, subida y mods hechos antes del SDK.
  • Referencia: la lista completa de lo que un mod puede declarar (archivos, campos, parches, eventos, funciones y límites).

Herramientas

Están en herramientas\ y necesitan Node.js. Abre una terminal en esta carpeta y ejecútalas desde aquí (node herramientas\validar-mod.js ...). Cada una explica su uso al ejecutarla sin argumentos, y la guía del tema la trae con ejemplos. Sus mensajes salen en español; con --lang en o --lang it salen en inglés o en italiano. Cada herramienta acepta sus opciones en los tres idiomas (--nombre, --name, --nome); las guías usan las de su idioma.

Quieres… Usa
Una unidad nueva crear-unidad.js (guía)
Un objeto nuevo crear-objeto.js (guía)
Una habilidad nueva crear-habilidad.js (guía)
Una formación nueva crear-formacion.js (guía)
Una opción de partida crear-opcion.js (guía)
Una civilización nueva clonar-civilizacion.js (guía)
Ciudad y aldea propias de una civilización crear-plantilla.js (guía)
Un fortín neutral crear-fortin.js (guía)
Un tipo de mapa aleatorio crear-mapa-aleatorio.js (guía)
Botones e iconos desde un PNG convertir-imagen.js (guía)
Sprites desde PNG, y la ficha de una unidad o edificio convertir-sprite.js, crear-entidad.js, leer-rle.js (guía)
Revisar un mod sin abrir el juego validar-mod.js (guía)
Adaptar un mod hecho antes del SDK reducir-mod.js (guía)
Sacar los datos del juego extraer-datos.js (abajo)

Datos del juego

Varias herramientas piden la carpeta DATA del juego. La saca extraer-datos.js (necesitas Node.js):

node herramientas/extraer-datos.js "<carpeta del juego>" <salida>

Deja data.pak en <salida>\DATA. Esa es la carpeta que piden clonar-civilizacion.js, crear-fortin.js y validar-mod.js --datos.

¿Qué cuenta como jugabilidad?

En multijugador, todos tienen que llevar los mismos mods si cambian lo que pasa en la partida. El juego lo calcula por las carpetas que toca tu mod: data/, scenarios/, adventures/, conquests/, civs/, specials/, events/, options/, randommap/, randommapsettlements/, los .xml y .pass de units/, buildings/ y mapobjects/, los .xml de visuals/, los mapas .bfhp de packs/ y los parches (según el archivo que parchean).

Los gráficos, los sonidos, los textos (loc/) y los idiomas no cuentan: cada jugador puede llevar los suyos.

Si algo falla

Los errores de tu mod salen en su ficha del gestor y en Logs\imperivm\imperivm-mod.log. Cada línea del registro lleva la hora, un nivel (I información, W aviso, E error) y una etiqueta con la parte del mod de la que viene: patch, language, civilizations, specials, script, event. Mira primero las líneas W y E de las etiquetas de tu mod.

El registro guarda las cinco últimas sesiones (imperivm-mod.1.log a imperivm-mod.4.log) y, si el juego se cerró mal, imperivm-mod.crashed.log. Para más detalle de una parte, pon su etiqueta y un nivel en [Debug] de imperivm-mod.ini, por ejemplo LogChannels=patch:debug; LogLevel=debug lo hace con todo.

Para pedir ayuda, pulsa el corazón de abajo a la izquierda del menú principal y luego Crear informe. Crea un zip con los registros y tu sistema, sin tu usuario de Windows, IDs de Steam ni direcciones IP, y no envía nada: tú decides si lo compartes.

Versión y licencia

La versión del SDK y lo que cambia en cada una están en CAMBIOS. La licencia, en LICENCIA.