Nota
El cargador de mods ahora está integrado en el juego, por lo que este proyecto ya no es necesario. Para ver la versión "oficial" que tiene código para las características nuevas/diferentes, consulte el siguiente fowkr https://github.com/jakobharder/anno1800-mod-loader
El único cargador de mods para Anno 1800 admite la carga de archivos RDA desempaquetados, fusión automática de XML y mods basados en DLL.
Sin límite de tamaño de archivo. No más reempaques. Es menos probable que se rompa después de las actualizaciones (en general, un mod debería seguir funcionando después de cada actualización, YMMV).
Esto cambia los archivos XML del juego usando XPath, lo que hace que sea fácil y posible tener solo los cambios en un mod que sea absolutamente necesario en lugar de manejar megabytes de archivos XML.
Video corto y de mierda para mostrar lo fácil que es instalar el cargador.
Los mods deben instalarse por separado.
Dirígete a la página de lanzamientos y descarga el loader.zip de la última versión.
Descomprima el contenido en la ubicación donde se encuentra Anno1800.exe
La ruta predeterminada de Uplay es
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800BinWin64
Se le pedirá que sobrescriba python35.dll, simplemente acéptelo.
Probablemente también necesite VS 2019 Redist https://aka.ms/vs/16/release/VC_redist.x64.exe
Y eso es básicamente todo.
Los mods siempre se cargarán en orden alfabético. Los mods se cargan desde:
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods
asumiendo la ruta Uplay predeterminada. Esto depende de la ubicación que eligió al instalar Anno 1800mods
. Puede acceder a esto usando Win + R e ingresando shell:PersonalAnno 1800
mods
en Documentos tienen prioridad sobre el directorio de instalación del juego, lo que significa que si tienes una carpetamods
en la ubicación de los documentos, los mods ya no se cargarán desde el directorio del juego.
Para usuarios más experimentados, se seguirán los enlaces simbólicos creados con
mklink
(lo que resultará en una manera más fácil de administrar diferentes repositorios de mods).
A continuación se ofrece una breve introducción para la creación de mods con el cargador de mods. Para ver un ejemplo de mod de ampliación de zoom, consulte el directorio examples
.
En juegos anteriores, había una manera de decirle al juego que cargara los archivos extraídos del disco en lugar de cargarlos.
del contenedor RDA. Si bien eso lo hizo más fácil, todavía no es una buena manera de manejar la modificación de archivos XML grandes.
Este cargador de mods Anno 1800 admite algunos 'comandos' simples para parchear fácilmente el XML y lograr prácticamente lo que desee.
Paso 1) Configura un directorio para tu mod dentro de Anno 1800/mods. En los siguientes pasos, se supone que ha titulado su directorio "myMod"
Paso 2) dentro de myMod, recreas la estructura de archivos exacta que utiliza el juego base. Un archivo activos.xml parcheado debería estar en la siguiente ruta: Anno 1800/mods/myMod/data/config/export/main/asset/assets.xml
Paso 3) Se espera que su documento XML tenga la siguiente estructura:
< ModOps >
< ModOp >
<!-- Whatever Change you want to do -->
</ ModOp >
</ ModOps >
Puedes dar tantos
<ModOp>
como quieras y tener múltiples archivos de parche para diferentes originales en un solo mod.
Paso 1) Busque y seleccione el nodo XML que desea editar con XPath usando el argumento Ruta.
Ejemplo:
< ModOp Path = " /Templates/Group[Name = 'Objects']/Template[Name = 'Residence7']/Properties " >
Para el archivo de activos, también puede utilizar el argumento GUID. Esto selecciona todos los nodos secundarios del activo con el GUID dado como nuevas raíces para su xPath para obtener un código más limpio y también es mucho más rápido en cuanto a rendimiento.
Ejemplo:
Standard way: < ModOp Path = " //Asset[Values/Standard/GUID = '1137']/Values/Standard/Name " >
Better, with GUID arg: < ModOp GUID = ' 1337 ' Path = " /Values/Standard/Name " >
Paso 2) Indique un tipo de ModOp para cambiar el nodo seleccionado.
Tipos actualmente admitidos:
- Merge Replaces all given child nodes or Arguments
- Remove Removes the selected Node
- Add Adds inside the selected Node
- Replace Replaces the selected Node
- AddNextSibling Adds a sibling directly after the selected node
- AddPrevSibling Adds a sibling directly in front of the selected node
Esta fue solo una implementación inicial rápida (~3h), muy abierta a discusiones sobre cómo mejorarla o hacer algo completamente diferente.
Paso 3) Agregue el código XML que desea agregar, fusionar o reemplazar dentro de ModOp. ejemplo:
< ModOp Type = " replace " GUID = ' 1337 ' Path = " /Values/Standard/Name " >
< Name >ThisIsATestNameForGUID1337</ Name >
</ ModOp >
Este ModOp reemplazará el nodo en /Values/Standard/Name del activo con GUID 1337 con: "
<Name>ThisIsATestNameForGUID1337</Name>
"
Puede dividir sus parches XML en varios archivos utilizando las instrucciones Include
.
< ModOps >
<!-- ModOps applied before the include -->
< Include File = " even-more-modops.include.xml " />
<!-- ModOps applied after the include -->
</ ModOps >
File
toma una ruta de archivo relativa al archivo XML que incluye.
Los archivos XML sin equivalente en el juego normalmente son errores y provocan errores en el registro. Utilice la extensión *.include.xml
para evitarlo.
De lo contrario, los parches XML incluidos se manejan de la misma manera que los parches XML normales. Se admiten inclusiones anidadas.
Coloque esto en una carpeta de mods con la ruta del juego para que esté en mods/new-zoom-level/data/config/game/camera.xml
La carpeta mods en una instalación predeterminada de uPlay debe estar ubicada en
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods
< ModOp Type = " add " Path = " /Normal/Presets " >
< Preset ID = " 15 " Height = " 140 " Pitch = " 0.875 " MinPitch = " -0.375 " MaxPitch = " 1.40 " Fov = " 0.56 " />
</ ModOp >
< ModOp Type = " merge " Path = " /Normal/Settings " >
< Settings MaxZoomPreset = " 15 " ></ Settings >
</ ModOp >
Puede encontrar más ejemplos en el directorio de examples
.
La depuración no será posible, el juego usa Denuvo y VMProtect, tengo mis propias herramientas que me permiten depurarlo, pero no las compartiré públicamente.
Puede leer un printf también conocido como debug-log sobre cualquier error causado por nodos faltantes, rutas incorrectas o pruebas de nodos no reconocidos en
Anno 1800/logs/mod-loader.log
Para probar qué hace un 'parche' que escribes en el archivo original del juego, también puedes usar xml-test
, que simulará lo que se cargará el juego.
xml-test game_camera.xml patch.xml
Esto parchea game_camera.xml con patch.xml y escribe el resultado como un archivo patched.xml en el directorio actual.
Los espacios en blanco originales deberían ser más o menos los mismos, por lo que puedes usar alguna herramienta de diferencias para ver exactamente qué cambió.
Obviamente, otros tipos de archivos no se pueden 'fusionar', por lo que allí simplemente cargamos la versión del último mod que tiene ese archivo. (Las modificaciones se cargan alfabéticamente). Para recursos, se recomienda encarecidamente utilizar la carpeta Anno 1800/data.
Necesitas Bazel, Visual Studio 2022 y eso debería ser todo.
Puede consultar azure-pipelines.yml
y ver cómo se hace allí.
Pasos sencillos para el éxito:
set BAZEL_VC=C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVC
bazel build //libs/python35:python35.dll
para compilar el .dllSi desea trabajar en nuevas funciones para operaciones XML, puede utilizar xmltest para realizar pruebas. Ya que se utiliza el mismo código que el cargador de archivos actual.