Note
Le chargeur de mods est désormais intégré au jeu, ce projet n'est donc plus nécessaire. Pour la version "officielle" contenant le code pour les fonctionnalités nouvelles/différentes, consultez le fichier suivant https://github.com/jakobharder/anno1800-mod-loader
Le seul et unique chargeur de mods pour Anno 1800 prend en charge le chargement de fichiers RDA décompressés, la fusion automatique XML et les mods basés sur DLL.
Aucune limite de taille de fichier. Plus besoin de reconditionner. Moins susceptible de se briser après les mises à jour (en général, un mod devrait continuer à fonctionner après chaque mise à jour, YMMV).
Cela modifie les fichiers XML du jeu à l'aide de XPath, ce qui permet de n'avoir dans un mod que les modifications dont vous avez absolument besoin au lieu de gérer des mégaoctets de fichiers XML.
Petite vidéo merdique pour montrer à quel point il est facile d'installer le chargeur.
Les mods doivent être installés séparément.
Rendez-vous sur la page des versions et téléchargez le loader.zip à partir de la dernière version.
Décompressez le contenu à l’emplacement où se trouve Anno1800.exe
Le chemin par défaut d'Uplay est
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800BinWin64
Il vous sera demandé d’écraser python35.dll, acceptez-le simplement.
Vous avez probablement également besoin du VS 2019 Redist https://aka.ms/vs/16/release/VC_redist.x64.exe
Et c'est essentiellement tout.
Les mods seront toujours chargés par ordre alphabétique. Les mods sont chargés depuis :
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods
en supposant le chemin Uplay par défaut. Cela dépend de l'emplacement que vous avez choisi lors de l'installation d'Anno 1800mods
. Vous pouvez y accéder en utilisant Win + R et en entrant shell:PersonalAnno 1800
mods
dans les documents ont priorité sur le répertoire d'installation du jeu, ce qui signifie que si vous avez un dossiermods
dans l'emplacement des documents, les mods ne seront plus chargés à partir du répertoire du jeu.
Pour les utilisateurs plus expérimentés, les liens symboliques créés avec
mklink
seront suivis (ce qui permettra de gérer plus facilement différents référentiels de mods).
Une brève introduction à la création de mods avec le chargeur de mods est donnée ci-dessous. Pour un exemple de module d'extension de zoom, consultez le répertoire examples
.
Dans les jeux précédents, il existait un moyen d'indiquer au jeu de charger les fichiers extraits du disque au lieu de les charger.
du conteneur RDA. Bien que cela ait rendu les choses plus faciles, ce n'est toujours pas un bon moyen de gérer la modification de gros fichiers XML.
Ce chargeur de mod Anno 1800 prend en charge quelques « commandes » simples pour corriger facilement le XML et réaliser à peu près tout ce que vous voulez.
Étape 1) Créez un répertoire pour votre mod dans Anno 1800/mods. Dans les étapes suivantes, nous supposons que vous avez intitulé votre répertoire "myMod".
Étape 2) à l'intérieur de myMod, vous recréez la structure de fichiers exacte utilisée par le jeu de base. Un fichier Assets.xml corrigé doit se trouver sous le chemin suivant : Anno 1800/mods/myMod/data/config/export/main/asset/assets.xml
Étape 3) Votre document XML doit avoir la structure suivante :
< ModOps >
< ModOp >
<!-- Whatever Change you want to do -->
</ ModOp >
</ ModOps >
Vous pouvez donner autant de
<ModOp>
que vous le souhaitez et avoir plusieurs fichiers de correctifs pour différents originaux dans un seul mod.
Étape 1) Recherchez et sélectionnez le nœud XML que vous souhaitez modifier avec XPath à l'aide de l'argument Path.
Exemple:
< ModOp Path = " /Templates/Group[Name = 'Objects']/Template[Name = 'Residence7']/Properties " >
Pour le fichier d'actifs, vous pouvez également utiliser l'argument GUID. Cela sélectionne tous les nœuds enfants de l'actif avec le GUID donné comme nouvelles racines pour votre xPath pour un code plus propre et est également beaucoup plus rapide en termes de performances.
Exemple:
Standard way: < ModOp Path = " //Asset[Values/Standard/GUID = '1137']/Values/Standard/Name " >
Better, with GUID arg: < ModOp GUID = ' 1337 ' Path = " /Values/Standard/Name " >
Étape 2) Donnez un type pour un ModOp, pour changer le nœud sélectionné.
Types actuellement pris en charge :
- 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
Il ne s'agissait que d'une mise en œuvre initiale rapide (~ 3 h), très ouverte aux discussions sur la façon d'améliorer cela ou de faire quelque chose de complètement différent.
Étape 3) Ajoutez le code XML que vous souhaitez ajouter, fusionner ou remplacer dans ModOp. exemple:
< ModOp Type = " replace " GUID = ' 1337 ' Path = " /Values/Standard/Name " >
< Name >ThisIsATestNameForGUID1337</ Name >
</ ModOp >
Ce ModOp remplacera le nœud sous /Values/Standard/Name de l'actif par le GUID 1337 par : "
<Name>ThisIsATestNameForGUID1337</Name>
"
Vous pouvez diviser vos correctifs XML en plusieurs fichiers à l'aide des instructions Include
.
< ModOps >
<!-- ModOps applied before the include -->
< Include File = " even-more-modops.include.xml " />
<!-- ModOps applied after the include -->
</ ModOps >
File
prend un chemin de fichier relatif au fichier XML qui effectue l'inclusion.
Les fichiers XML sans contrepartie dans le jeu sont normalement des erreurs et entraînent des erreurs dans le journal. Utilisez l'extension *.include.xml
pour éviter cela.
Sinon, les correctifs XML inclus sont traités de la même manière que les correctifs XML normaux. Les inclusions d’imbrication sont prises en charge.
Mettez-le dans un dossier mod avec le chemin du jeu pour que ce soit dans mods/new-zoom-level/data/config/game/camera.xml
Le dossier mods dans une installation uPlay par défaut doit être situé dans
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 >
Vous pouvez trouver plus d'exemples dans le répertoire examples
.
Le débogage ne sera pas possible, le jeu utilise Denuvo et VMProtect, j'ai mes propres outils qui me permettent de le déboguer, mais je ne les partagerai pas publiquement.
Vous pouvez lire un printf, également appelé journal de débogage, sur toutes les erreurs causées par des nœuds manquants, des chemins erronés ou des tests de nœuds non reconnus dans
Anno 1800/logs/mod-loader.log
Pour tester l'effet d'un « patch » que vous écrivez sur le fichier de jeu original, vous pouvez également utiliser xml-test
, qui simulera ce que le jeu va charger.
xml-test game_camera.xml patch.xml
Cela corrige game_camera.xml avec patch.xml et écrit le résultat sous forme de fichier patched.xml dans le répertoire actuel.
Les espaces d'origine devraient être à peu près les mêmes, vous pouvez donc utiliser un outil de comparaison pour voir exactement ce qui a changé.
Les autres types de fichiers ne peuvent évidemment pas être « fusionnés », nous chargeons donc simplement la version du dernier mod contenant ce fichier. (Les mods sont chargés par ordre alphabétique). Pour les ressources, il est fortement recommandé d'utiliser le dossier Anno 1800/data.
Vous avez besoin de Bazel, Visual Studio 2022 et ça devrait être tout.
Vous pouvez consulter azure-pipelines.yml
et voir comment cela se fait là-bas.
étapes faciles pour réussir :
set BAZEL_VC=C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVC
bazel build //libs/python35:python35.dll
pour créer le .dllSi vous souhaitez travailler sur de nouvelles fonctionnalités pour les opérations XML, vous pouvez utiliser xmltest pour les tests. Comme cela utilise le même code que le chargeur de fichiers actuel.