메모
이제 모드 로더가 게임에 통합되었으므로 이 프로젝트는 더 이상 필요하지 않습니다. 새로운/다른 기능에 대한 코드가 있는 "공식" 버전은 다음 fowkr https://github.com/jakobharder/anno1800-mod-loader를 참조하세요.
Anno 1800을 위한 유일한 모드 로더는 압축이 풀린 RDA 파일 로드, XML 자동 병합 및 DLL 기반 모드를 지원합니다.
파일 크기 제한이 없습니다. 더 이상 재포장하지 마세요. 업데이트 후에 중단될 가능성이 적습니다(일반적으로 모드는 모든 업데이트 후에 계속 작동해야 합니다, YMMV).
이는 XPath를 사용하여 게임 XML 파일을 변경하므로 메가바이트의 XML 파일을 처리하는 대신 꼭 필요한 모드에서만 변경 사항을 적용하는 것이 쉽고 가능해집니다.
로더 설치가 얼마나 쉬운지 보여주는 짧은 영상입니다.
모드는 별도로 설치해야 합니다.
릴리스 페이지로 이동하여 최신 릴리스에서 loader.zip을 다운로드하세요.
Anno1800.exe가 있는 위치에 압축을 푼다.
Uplay 기본 경로는
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800BinWin64
입니다.
python35.dll을 덮어쓰라는 메시지가 표시되면 수락하세요.
VS 2019 Redist https://aka.ms/vs/16/release/VC_redist.x64.exe도 필요할 수도 있습니다.
기본적으로는 그게 전부입니다.
모드는 항상 알파벳순으로 로드됩니다. 모드는 다음 중 하나에서 로드됩니다.
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods
기본 Uplay 경로를 가정합니다. 이는 Anno 1800을 설치할 때 선택한 위치에 따라 다릅니다.mods
폴더가 포함된 경우 Documents 폴더. Win + R을 사용하고 shell:PersonalAnno 1800
입력하여 이에 액세스할 수 있습니다.문서의
mods
게임 설치 디렉터리보다 우선합니다. 즉, 문서 위치에mods
폴더가 있으면 모드는 더 이상 게임 디렉터리에서 로드되지 않습니다.
경험이 많은 사용자의 경우
mklink
로 만든 심볼릭 링크를 따를 것입니다(그 결과 다양한 모드 저장소를 더 쉽게 관리할 수 있습니다).
모드 로더를 사용한 모드 생성에 대한 간략한 소개는 다음과 같습니다. 확대/축소 확장 모드의 예를 보려면 examples
디렉토리를 참조하세요.
이전 anno 게임에는 압축을 푼 파일을 로드하는 대신 디스크에서 로드하도록 게임에 지시하는 방법이 있었습니다.
RDA 컨테이너에서. 이렇게 하면 더 쉬워졌지만 여전히 대용량 XML 파일을 수정하는 데는 좋은 방법이 아닙니다.
이 Anno 1800 모드 로더는 원하는 거의 모든 것을 달성하기 위해 XML을 쉽게 패치할 수 있는 몇 가지 간단한 '명령'을 지원합니다.
1단계) Anno 1800/mods 내에 모드용 디렉터리를 설정합니다. 다음 단계에서는 디렉터리 이름을 "myMod"로 지정했다고 가정합니다.
2단계) myMod 내부에서 기본 게임이 사용하는 정확한 파일 구조를 다시 만듭니다. 패치된 자산.xml 파일은 다음 경로에 있어야 합니다: Anno 1800/mods/myMod/data/config/export/main/asset/assets.xml
3단계) XML 문서는 다음과 같은 구조를 가질 것으로 예상됩니다.
< ModOps >
< ModOp >
<!-- Whatever Change you want to do -->
</ ModOp >
</ ModOps >
<ModOp>
원하는 만큼 제공할 수 있으며 단일 모드에서 다양한 원본 패치 파일을 여러 개 가질 수 있습니다.
1단계) Path 인수를 사용하여 XPath로 편집하려는 XML 노드를 찾아 선택합니다.
예:
< ModOp Path = " /Templates/Group[Name = 'Objects']/Template[Name = 'Residence7']/Properties " >
자산 파일의 경우 GUID 인수를 사용할 수도 있습니다. 이는 더 깔끔한 코드를 위해 지정된 GUID를 가진 자산의 모든 하위 노드를 xPath의 새 루트로 선택하며 성능 측면에서도 훨씬 빠릅니다.
예:
Standard way: < ModOp Path = " //Asset[Values/Standard/GUID = '1137']/Values/Standard/Name " >
Better, with GUID arg: < ModOp GUID = ' 1337 ' Path = " /Values/Standard/Name " >
2단계) 선택한 노드를 변경하기 위해 ModOp 유형을 지정합니다.
현재 지원되는 유형:
- 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
이는 빠른 초기 구현(~3시간)에 불과했으며 이를 개선하거나 완전히 다른 작업을 수행하는 방법에 대한 논의가 매우 열려 있었습니다.
3단계) ModOp 내부에 추가, 병합 또는 교체하려는 XML 코드를 추가합니다. 예:
< ModOp Type = " replace " GUID = ' 1337 ' Path = " /Values/Standard/Name " >
< Name >ThisIsATestNameForGUID1337</ Name >
</ ModOp >
이 ModOp는 자산의 /Values/Standard/Name 아래 노드를 GUID 1337로 대체합니다: "
<Name>ThisIsATestNameForGUID1337</Name>
"
Include
명령을 사용하여 XML 패치를 여러 파일로 분할할 수 있습니다.
< ModOps >
<!-- ModOps applied before the include -->
< Include File = " even-more-modops.include.xml " />
<!-- ModOps applied after the include -->
</ ModOps >
File
포함을 수행하는 XML 파일에 상대적인 파일 경로를 사용합니다.
게임에 상응하는 내용이 없는 XML 파일은 일반적으로 실수이며 로그에 오류가 발생합니다. 이를 방지하려면 *.include.xml
확장자를 사용하세요.
그렇지 않은 경우 포함된 XML 패치는 일반 XML 패치와 동일한 방식으로 처리됩니다. 중첩 포함이 지원됩니다.
이것을 게임 경로와 함께 mod 폴더에 넣어서 mods/new-zoom-level/data/config/game/camera.xml
에 있도록 하세요.
기본 uPlay 설치의 mods 폴더는
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 >
examples
디렉터리에서 더 많은 예제를 찾을 수 있습니다.
디버깅은 불가능합니다. 게임은 Denuvo 및 VMProtect를 사용하고 있습니다. 디버깅할 수 있는 자체 도구가 있지만 공개적으로 공유하지는 않습니다.
Anno 1800/logs/mod-loader.log
에서 누락된 노드, 잘못된 경로 또는 인식할 수 없는 노드 테스트로 인해 발생한 모든 오류에 대한 printf(일명 디버그 로그)를 읽을 수 있습니다.
작성한 '패치'가 원본 게임 파일에 어떤 영향을 미치는지 테스트하려면 게임이 로드할 내용을 시뮬레이션하는 xml-test
사용할 수도 있습니다.
xml-test game_camera.xml patch.xml
이것은 game_camera.xml을 patch.xml로 패치하고 그 결과를 현재 디렉터리에 patched.xml 파일로 기록합니다.
원래 공백은 거의 동일해야 하므로 diff 도구를 사용하여 정확히 무엇이 변경되었는지 확인할 수 있습니다.
다른 파일 형식은 분명히 '병합'될 수 없으므로 해당 파일이 있는 마지막 모드의 버전을 로드하기만 하면 됩니다. (모드는 알파벳순으로 로드됩니다). 리소스의 경우 Anno 1800/data 폴더를 사용하는 것이 좋습니다.
Bazel, Visual Studio 2022가 필요하며 그게 전부 입니다.
azure-pipelines.yml
확인하고 해당 작업이 어떻게 수행되는지 확인할 수 있습니다.
성공을 위한 쉬운 단계:
set BAZEL_VC=C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVC
bazel build //libs/python35:python35.dll
사용하여 .dll을 빌드합니다.XML 작업을 위한 새로운 기능을 작업하려는 경우 xmltest를 사용하여 테스트할 수 있습니다. 이는 실제 파일 로더와 동일한 코드를 사용하고 있기 때문입니다.