SDK de Imperivm Resurrected
Imperivm Resurrected es un mod para Imperivm HD (Great Battles of Rome) que abre el juego a mods que antes no eran posibles: civilizaciones nuevas, habilidades, objetos, modos de victoria, idiomas, scripts que reaccionan a lo que pasa en la partida y más. Aquí están las guías y las herramientas para crearlos. Cada guía incluye un mod de ejemplo en examples/.
Por dónde empezar
- Instala Imperivm Resurrected: copia su contenido en la carpeta del juego (
...\steamapps\common\Imperivm - Great Battles of Rome HD) y lanza el juego desde Steam. - Copia una carpeta de
templates/enmods\, dentro de la carpeta del juego: tiene la estructura exacta que el juego espera para lo que quieres hacer (mira Plantillas). Para ver un mod terminado, copia uno deexamples/, por ejemplopatches-example. - En el menú principal, pulsa Contenido adicional y activa el mod en tu perfil.
- Reinicia el juego si no se ha reiniciado solo.
- Abre
Logs\imperivm\imperivm-mod.log, en la carpeta del juego. Ahí aparecen los errores de tu mod y lo que ha cargado.
Antes de lanzar 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\
my-mod\
mod.json
data\classes\MyUnit.sc.xml <- new file, or one that replaces the game's
loc\english.loc.xml <- texts added to the game's
Plantillas
Una plantilla es un mod vacío con las carpetas que lee el juego, un mod.json válido y un README con los pasos. Copia la que corresponda a lo que haces, cámbiale el nombre, rellena mod.json y pon tus archivos donde indican las notas. Cada carpeta vacía lleva una nota PUT-YOUR-FILES-HERE.txt: bórrala cuando añadas tus archivos.
| Qué haces | Plantilla | Guía |
|---|---|---|
| Un mapa para escaramuza y multijugador | scenario |
Mapas |
| Una aventura o campaña, con o sin vídeos | adventure |
Mapas |
| Una conquista, con o sin vídeos | conquest |
Mapas |
| Una unidad o un héroe | units |
Unidades nuevas |
| Una civilización | civilization |
Civilizaciones |
| Reglas, estadísticas, IA, modos de victoria, opciones | gameplay |
Parches, Scripts |
| Música, sonidos, voces | audio |
Audio |
| El juego en otro idioma | translation |
Idiomas |
| Texturas, sprites, iconos, menús | graphics |
Gráficos personalizados |
| Varias de las anteriores | full |
Referencia |
No incluyas 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 alguno, el mod no se carga. Un .js suelto, como un generador tuyo, cuenta.
mod.json
{
"id": "my-mod",
"name": "My mod",
"version": "1.0",
"authors": ["Me"],
"description": "What my mod does.",
"category": "Gameplay & Balance",
"redistributable": true
}
| Campo | Para qué sirve |
|---|---|
id, name, version, authors, description |
La ficha del mod en el gestor de contenido. name y description aceptan un único texto o un objeto con un texto por idioma (se muestra el del idioma del juego; si falta, el inglés; si falta, el primero). |
category, tags |
La categoría principal de GameBanana y las etiquetas: más categorías (Type), jugadores (Players) e idioma (Language). Mira Publicar en GameBanana. |
redistributable |
Con true, el anfitrión de la sala puede enviar el mod a los jugadores que no lo tienen. 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 sobre el orden de carga, por id; el juego resuelve el resto. Con loadAfter, tu mod queda por encima de ese: sus archivos, parches y textos ganan (salvo un archivo que el otro lleve suelto y el tuyo dentro de un .pak: gana el suelto). |
sources |
{"url": "...", "gamebanana": 123456}. El juego lo escribe cuando instalas desde Explorar contenido y sirve para avisar de versiones nuevas. Si viene de la sección Sounds, el número va en gamebananaSound. |
language |
Declara un idioma nuevo. Mira Idiomas. |
commands |
Nombre de cada archivo de comandos en la pantalla Controles. Mira Teclas de mod. |
Hasta la 0.31.50, los nombres de estos campos estaban 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: cambia textos del juego o añade un idioma sin reemplazar el archivo entero.
- Teclas de mod: cómo aparecen los comandos de tu mod en Controles y cómo nombrarlos.
- Parches: cambia una parte de un XML, INI o script del juego sin reemplazarlo; dos mods pueden tocar el mismo archivo.
- Scripts: scripts
.vs, eventos y las funcionesMod_.... - Civilizaciones: declara una civilización nueva o clona una del juego, con su IA, y juégala en la sala.
- Plantillas de ciudad y aldea: la ciudad y la aldea iniciales propias de una civilización de mod (
create-template.js). - Unidades nuevas: clase, comando de reclutamiento, imágenes y textos, y cómo reutilizar el modelo de otra unidad.
- Estadísticas de unidades: qué hace cada atributo, cuáles no hacen nada y cuáles cuelgan el juego.
- Especialidades de unidad: especialidades de unidad nuevos y su efecto mediante scripts.
- Habilidades de tropa: habilidades nuevas para unidades o héroes (un comando con botón y tecla, más un método de script).
- Objetos nuevos: amuletos, hierbas y gemas de héroe.
- Formaciones nuevas: formaciones de héroe con sus bonificaciones y su botón.
- Fortines y edificios: fortines neutrales nuevos en mapas aleatorios (
create-outpost.js) y clases de torre, muralla y puerta. - Modos de victoria: un script en
data\GameScriptsañade un modo al desplegable "Mode" de la sala. - Bonificaciones iniciales: los scripts de
data\BonusScriptsañaden opciones a la columna "Bonus" de la sala. - Opciones de partida personalizadas: interruptores nuevos en las reglas de la sala, que los scripts leen con
Mod_GetOption. - Escenarios, aventuras y conquistas: los tres tipos de mapa, los archivos que necesita cada uno y los vídeos.
- Música, sonidos y voces: reemplaza o añade audio.
- Tipos de mapa aleatorio: un dibujo de cuatro colores se convierte en un tipo de mapa nuevo (
create-random-map.js). - Imágenes personalizadas: botones de comando e iconos de unidad a partir de un PNG.
- Gráficos personalizados: sprites propios para unidades y edificios (
convert-sprite.js,create-entity.js,read-rle.js). - Validar un mod: comprueba un mod sin abrir el juego, con el archivo y la línea de cada problema.
- Publicar en GameBanana: categorías, etiquetas, subida y mods hechos antes del SDK.
- Referencia: la lista completa de lo que puede declarar un mod (archivos, campos, parches, eventos, funciones y límites).
Herramientas
Están en tools\ y necesitan Node.js. Abre una terminal en esta carpeta y ejecútalas desde aquí (node tools\validate-mod.js ...). Cada una explica cómo se usa si la ejecutas sin argumentos, y la guía de su tema trae ejemplos.
| Quieres… | Usa |
|---|---|
| Una unidad nueva | create-unit.js (guía) |
| Un objeto nuevo | create-item.js (guía) |
| Una habilidad nueva | create-ability.js (guía) |
| Una formación nueva | create-formation.js (guía) |
| Una opción de partida | create-option.js (guía) |
| Una civilización nueva | clone-civilization.js (guía) |
| La ciudad y la aldea propias de una civilización | create-template.js (guía) |
| Un fortín neutral | create-outpost.js (guía) |
| Un tipo de mapa aleatorio | create-random-map.js (guía) |
| Botones e iconos a partir de un PNG | convert-image.js (guía) |
| Sprites a partir de PNG, y el archivo de entidad de una unidad o un edificio | convert-sprite.js, create-entity.js, read-rle.js (guía) |
Redibujar los sprites de unit-graphics-example |
draw-soldier.js (ejemplo) |
| Comprobar un mod sin abrir el juego | validate-mod.js (guía) |
| Adaptar un mod hecho antes del SDK | shrink-mod.js (guía) |
| Extraer los datos del juego | extract-data.js (abajo) |
Datos del juego
Varias herramientas piden la carpeta DATA del juego. extract-data.js la extrae (necesitas Node.js):
node tools/extract-data.js "<game folder>" <output folder>
Deja data.pak en <output folder>\DATA. Esa es la carpeta que piden clone-civilization.js, create-outpost.js y validate-mod.js --data.
¿Qué cuenta como jugabilidad?
En multijugador, todos deben usar los mismos mods si estos cambian lo que ocurre en la partida. El juego lo deduce por las carpetas que toca tu mod: data/, scenarios/, adventures/, conquests/, civs/, specials/, events/, options/, rules/, modes/, randommap/, randommapsettlements/, los archivos .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 usar los suyos.
Si algo falla
Los errores de tu mod se muestran en su ficha del gestor de contenido y en Logs\imperivm\imperivm-mod.log. Cada línea del registro lleva la hora, un nivel (I información, W advertencia, 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 conserva 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 tener más detalle de una parte, pon su etiqueta y un nivel bajo [Debug] en imperivm-mod.ini, por ejemplo LogChannels=patch:debug; LogLevel=debug lo hace para todo.
Para pedir ayuda, pulsa el corazón de la esquina inferior izquierda del menú principal y luego Crear informe. Genera un zip con los registros y tu sistema, sin tu nombre de usuario de Windows, sin los ids de Steam y sin direcciones IP, y no envía nada: tú decides si lo compartes.
Versión y licencia
La versión del SDK y los cambios de cada una están en Cambios. La licencia está en Licencia.