Observação
O mod loader agora está integrado ao jogo, portanto este projeto não é mais necessário. Para a versão "oficial" que possui código para os recursos novos/diferentes, consulte o seguinte fowkr https://github.com/jakobharder/anno1800-mod-loader
O único carregador de mod para Anno 1800, suporta carregamento de arquivos RDA descompactados, fusão automática de XML e mods baseados em DLL.
Sem limite de tamanho de arquivo. Não há mais reembalagem. Menos probabilidade de quebrar após as atualizações (em geral, um mod deve continuar funcionando após cada atualização, YMMV).
Isso altera os arquivos XML dos jogos usando XPath, o que torna mais fácil e possível ter apenas as alterações em um mod que você realmente precisa, em vez de lidar com megabytes de arquivos XML.
Vídeo curto e de merda para mostrar como é fácil instalar o carregador.
Os mods devem ser instalados separadamente.
Vá para a página de lançamentos e baixe o loader.zip da versão mais recente.
Descompacte o conteúdo no local onde Anno1800.exe está
O caminho padrão do Uplay é
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800BinWin64
Você será solicitado a substituir python35.dll, apenas aceite isso.
Você provavelmente também precisará do VS 2019 Redist https://aka.ms/vs/16/release/VC_redist.x64.exe
E é basicamente isso.
Os mods sempre serão carregados em ordem alfabética. Os mods são carregados de:
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods
assumindo o caminho padrão do Uplay. Isso depende do local que você escolheu ao instalar o Anno 1800mods
. Você pode acessar isso usando Win + R e digitando shell:PersonalAnno 1800
mods
em Documentos tem precedência sobre o diretório de instalação do jogo, o que significa que se você tiver uma pastamods
no local dos documentos, os mods não serão mais carregados do diretório do jogo.
Para usuários mais experientes serão seguidos links simbólicos feitos com
mklink
(resultando em uma maneira mais fácil de gerenciar diferentes repositórios de mods).
Uma breve introdução à criação de mods com o carregador de mods é fornecida abaixo. Para obter um exemplo de mod zoom extend, consulte o diretório examples
.
Nos jogos anteriores havia uma maneira de dizer ao jogo para carregar os arquivos extraídos do disco em vez de carregá-los
do contêiner RDA. Embora isso tenha facilitado, ainda não é uma boa maneira de lidar com a modificação de arquivos XML grandes.
Este carregador de mod Anno 1800 suporta alguns 'comandos' simples para corrigir facilmente o XML e obter praticamente tudo o que você deseja.
Passo 1) Configure um diretório para o seu mod dentro do Anno 1800/mods. Nas etapas a seguir, presume-se que você tenha intitulado seu diretório "myMod"
Etapa 2) dentro do myMod, você recria a estrutura de arquivos exata que o jogo base usa. Um arquivo assets.xml corrigido teria que estar no seguinte caminho: Anno 1800/mods/myMod/data/config/export/main/asset/assets.xml
Etapa 3) Espera-se que seu documento XML tenha a seguinte estrutura:
< ModOps >
< ModOp >
<!-- Whatever Change you want to do -->
</ ModOp >
</ ModOps >
Você pode fornecer quantos
<ModOp>
desejar e ter vários arquivos de patch para diferentes originais em um único mod.
Etapa 1) Procure e selecione o nó XML que deseja editar com XPath usando o argumento Path.
Exemplo:
< ModOp Path = " /Templates/Group[Name = 'Objects']/Template[Name = 'Residence7']/Properties " >
Para o arquivo de ativos, você também pode usar o argumento GUID. Isso seleciona todos os nós filhos do ativo com o GUID fornecido como novas raízes para seu xPath para um código mais limpo e também é muito mais rápido em termos de desempenho.
Exemplo:
Standard way: < ModOp Path = " //Asset[Values/Standard/GUID = '1137']/Values/Standard/Name " >
Better, with GUID arg: < ModOp GUID = ' 1337 ' Path = " /Values/Standard/Name " >
Etapa 2) Dê um tipo para um ModOp, para alterar o nó selecionado.
Tipos atualmente suportados:
- 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 foi apenas uma implementação inicial rápida (~3h), muito aberta para discussões sobre como melhorar isso ou fazer algo totalmente diferente
Etapa 3) Adicione o código XML que deseja adicionar, mesclar ou substituir dentro do ModOp. exemplo:
< ModOp Type = " replace " GUID = ' 1337 ' Path = " /Values/Standard/Name " >
< Name >ThisIsATestNameForGUID1337</ Name >
</ ModOp >
Este ModOp substituirá o nó em /Values/Standard/Name do ativo pelo GUID 1337 por: "
<Name>ThisIsATestNameForGUID1337</Name>
"
Você pode dividir seus patches XML em vários arquivos usando instruções Include
.
< ModOps >
<!-- ModOps applied before the include -->
< Include File = " even-more-modops.include.xml " />
<!-- ModOps applied after the include -->
</ ModOps >
File
usa um caminho de arquivo relativo ao arquivo XML que faz a inclusão.
Arquivos XML sem contrapartida no jogo normalmente são erros e levam a erros no log. Use a extensão *.include.xml
para evitar isso.
Caso contrário, os patches XML incluídos serão tratados da mesma forma que os patches XML normais. O aninhamento inclui é suportado.
Coloque isso em uma pasta mod com o caminho do jogo para que fique em mods/new-zoom-level/data/config/game/camera.xml
A pasta mods em uma instalação padrão do uPlay deve estar localizada em
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 >
Você pode encontrar mais exemplos no diretório examples
.
A depuração não será possível, o jogo está usando Denuvo e VMProtect, tenho minhas próprias ferramentas que me permitem depurá-lo, mas não irei compartilhá-las publicamente.
Você pode ler um printf, também conhecido como debug-log, sobre quaisquer erros causados por nós ausentes, caminhos errados ou testes de nós não reconhecidos em
Anno 1800/logs/mod-loader.log
Para testar o que um 'patch' que você escreve faz no arquivo original do jogo, você também pode usar xml-test
, que simulará o que o jogo carregará.
xml-test game_camera.xml patch.xml
Isso corrige game_camera.xml com patch.xml e grava o resultado como um arquivo patched.xml no diretório atual
O espaço em branco original deve ser praticamente o mesmo, então você pode usar alguma ferramenta de comparação para ver exatamente o que mudou.
Obviamente, outros tipos de arquivos não podem ser 'mesclados', então basta carregar a versão do último mod que contém esse arquivo. (Os mods são carregados em ordem alfabética). Para recursos é altamente recomendado usar a pasta Anno 1800/data.
Você precisa do Bazel, Visual Studio 2022 e deve ser isso.
Você pode verificar azure-pipelines.yml
e ver como isso é feito lá.
passos fáceis para o sucesso:
set BAZEL_VC=C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVC
bazel build //libs/python35:python35.dll
para construir o .dllSe quiser trabalhar em novos recursos para operações XML, você pode usar xmltest para teste. Como isso está usando o mesmo código do carregador de arquivos atual.