บันทึก
ตอนนี้ mod loader ได้รวมเข้ากับเกมแล้ว ดังนั้นโปรเจ็กต์นี้จึงไม่จำเป็นอีกต่อไป สำหรับเวอร์ชัน "อย่างเป็นทางการ" ที่มีโค้ดสำหรับฟีเจอร์ใหม่/ฟีเจอร์ที่แตกต่างกัน โปรดดู fowkr ต่อไปนี้ https://github.com/jakobharder/anno1800-mod-loader
ตัวโหลด mod หนึ่งเดียวสำหรับ Anno 1800 รองรับการโหลดไฟล์ RDA ที่คลายแพ็ก, การรวม XML อัตโนมัติ และ mod ที่ใช้ DLL
ไม่มีการจำกัดขนาดไฟล์ ไม่มีการบรรจุใหม่อีกต่อไป มีโอกาสน้อยที่จะพังหลังจากการอัพเดต (โดยทั่วไปแล้ว mod ควรทำงานต่อไปหลังจากการอัพเดตทุกครั้ง YMMV)
การดำเนินการนี้จะเปลี่ยนไฟล์ XML ของเกมโดยใช้ XPath ทำให้ง่ายและเป็นไปได้ที่จะมีการเปลี่ยนแปลงใน mod ที่คุณต้องการจริงๆ แทนที่จะจัดการไฟล์ XML ขนาดเมกะไบต์
วิดีโอห่วยๆ สั้น ๆ เพื่อแสดงให้เห็นว่าการติดตั้งตัวโหลดนั้นง่ายเพียงใด
ต้องติดตั้ง Mods แยกต่างหาก
ไปที่หน้าเผยแพร่และดาวน์โหลด 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
และนั่นคือโดยพื้นฐานแล้ว
Mods จะถูกโหลดตามลำดับตัวอักษรเสมอ Mods โหลดได้จาก:
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods
โดยถือว่าเส้นทาง Uplay เริ่มต้น ขึ้นอยู่กับตำแหน่งที่คุณเลือกเมื่อติดตั้ง Anno 1800mods
คุณสามารถเข้าถึงได้โดยใช้ Win + R และเข้าสู่ shell:PersonalAnno 1800
mods
ในเอกสารมีความสำคัญเหนือกว่าไดเร็กทอรีการติดตั้งเกม ซึ่งหมายความว่าหากคุณมีโฟลเดอร์mods
ในตำแหน่งเอกสาร ม็อดจะไม่ถูกโหลดจากไดเร็กทอรีเกมอีกต่อไป
สำหรับผู้ใช้ที่มีประสบการณ์มากขึ้น จะมีการทำตามลิงก์สัญลักษณ์ที่สร้างด้วย
mklink
(ส่งผลให้มีวิธีจัดการคลังเก็บ mods ต่างๆ ได้ง่ายขึ้น)
คำแนะนำสั้นๆ สำหรับการสร้าง mod ด้วย mod loader มีดังต่อไปนี้ สำหรับตัวอย่าง mod ขยายการซูม โปรดดูไดเร็กทอรี examples
ในเกม Anno ก่อนหน้านี้ มีวิธีบอกให้เกมโหลดไฟล์ที่แยกจากดิสก์แทนที่จะโหลด
จากคอนเทนเนอร์ RDA แม้ว่าจะทำให้ง่ายขึ้น แต่ก็ยังไม่ใช่วิธีที่ดีในการจัดการกับไฟล์ XML ขนาดใหญ่
ตัวโหลดม็อด Anno 1800 นี้รองรับ 'คำสั่ง' ง่ายๆ เพียงไม่กี่คำสั่งเพื่อแพตช์ XML ได้อย่างง่ายดายเพื่อให้ได้สิ่งที่คุณต้องการ
ขั้นตอนที่ 1) ตั้งค่าไดเร็กทอรีสำหรับม็อดของคุณภายใน Anno 1800/mods ในขั้นตอนต่อไปนี้ จะถือว่าคุณตั้งชื่อไดเรกทอรีของคุณว่า "myMod"
ขั้นตอนที่ 2) ภายใน myMod คุณสร้างโครงสร้างไฟล์ที่เกมหลักใช้ขึ้นมาใหม่ ไฟล์ Assets.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) ค้นหาและเลือกโหนด XML ที่คุณต้องการแก้ไขด้วย XPath โดยใช้อาร์กิวเมนต์ Path
ตัวอย่าง:
< 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) เพิ่มโค้ด XML ที่คุณต้องการเพิ่ม ผสาน หรือแทนที่ภายใน ModOp ตัวอย่าง:
< ModOp Type = " replace " GUID = ' 1337 ' Path = " /Values/Standard/Name " >
< Name >ThisIsATestNameForGUID1337</ Name >
</ ModOp >
ModOp นี้จะแทนที่โหนดภายใต้ /Values/Standard/Name ของเนื้อหาด้วย GUID 1337 ด้วย: "
<Name>ThisIsATestNameForGUID1337</Name>
"
คุณสามารถแยกแพตช์ XML ของคุณออกเป็นหลายไฟล์ได้โดยใช้คำแนะนำ Include
< 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
โฟลเดอร์ mods ในการติดตั้ง uPlay เริ่มต้นจะต้องอยู่ที่
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 ฉันมีเครื่องมือของตัวเองที่อนุญาตให้ฉันแก้ไขได้ แต่ฉันจะไม่แชร์สิ่งเหล่านั้นกับสาธารณะ
คุณสามารถอ่าน printf หรือที่เรียกว่า debug-log เกี่ยวกับข้อผิดพลาดใดๆ ที่เกิดจากโหนดหายไป เส้นทางผิด หรือการทดสอบโหนดที่ไม่รู้จักใน
Anno 1800/logs/mod-loader.log
หากต้องการทดสอบว่า 'แพตช์' ที่คุณเขียนมีผลกับไฟล์เกมต้นฉบับอย่างไร คุณยังสามารถใช้ xml-test
ซึ่งจะจำลองสิ่งที่เกมจะโหลด
xml-test game_camera.xml patch.xml
แพตช์ game_camera.xml นี้ด้วย patch.xml และเขียนผลลัพธ์เป็นไฟล์ patched.xml ในไดเร็กทอรีปัจจุบัน
ช่องว่างดั้งเดิมควรจะค่อนข้างเหมือนเดิม ดังนั้นคุณสามารถใช้เครื่องมือ diff เพื่อดูว่ามีอะไรเปลี่ยนแปลงไปบ้าง
ไฟล์ประเภทอื่นไม่สามารถ 'รวม' ได้อย่างชัดเจน ดังนั้นเราจึงเพียงแค่โหลดเวอร์ชันของม็อดล่าสุดที่มีไฟล์นั้น (Mods จะโหลดตามตัวอักษร) สำหรับทรัพยากร ขอแนะนำให้ใช้โฟลเดอร์ 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 สำหรับการทดสอบได้ เนื่องจากใช้รหัสเดียวกันกับตัวโหลดไฟล์จริง