《艾爾登法環》Mod:如何解讀工程


3樓貓 發佈時間:2024-08-07 14:32:40 作者:UyNad Language

本篇文檔會介紹如何解包法環工程,從而查看並修改遊戲數值、角色AI、角色動畫、技能配置及關卡場景配置。

解包工具一覽

  • UXM Selective Unpacker:對遊戲本體進行解包和打包
  • Yabber:對UXM解包出來的文件進行進一步解包和打包,支持.bnd, .bhd/.bdt, .dcx, .fltparam, .fmg, .gparam, .luagnl, .luainfo, .tpf.這些格式
  • DSMapStudio:查看並編輯遊戲內的.map地圖文件、param遊戲參數以及角色模型貼圖等
  • DSAnimStudio:查看並編輯遊戲內的.tae動畫數據文件
  • DSLuaDecompiler:對AI lua文件進行反編譯
  • ModEngine2:應用mod文件夾下的文件修改並啟動法環,可建立多份Instance測試不同內容

必要準備:使用UXM解包本體

在Executable Path裡索引遊戲本體的運行exe,可以在View Files裡進一步選擇解包範圍。
點擊Unpack後會開始解包,解出如下文件結構。

Yabber:單文件解包

Yabber可以對UXM解包出來的.dcx文件進一步解包,編輯完之後再打包。我主要用來做兩件事:
1. msg編輯:從dcx解包出xml文件,修改後打包回去,用來處理衝突或者做漢化。
2. AI編輯:從.dcx解包出lua文件,再反編譯後查看AI配置。*暫時還沒自己魔改過AI*
以msg/engus/item_dlc02-msgbnd.dcx為例,Yabber解包後會在該路徑生成item_dlc02-msgbnd-dcx文件夾:
再次對WeaponName_dlc01.fmg進行解包,可以得到WeaponName_dlc01.fmg.xml文件:
這個xml文件就是dlc01黃金樹幽影的武器名文本,內容摘錄如下。
```
<?xml version="1.0" encoding="utf-8"?>
<fmg>
<compression>None</compression>
<version>DarkSouls3</version>
<bigendian>False</bigendian>
<entries>
<text id="1500000">Main-gauche</text>
<text id="1500100">Heavy Main-gauche</text>
<text id="1500200">Keen Main-gauche</text>
<text id="1500300">Quality Main-gauche</text>
<text id="1500400">Fire Main-gauche</text>
<text id="1500500">Flame Art Main-gauche</text>
<text id="1500600">Lightning Main-gauche</text>
<!-- more until 68510000-->
</entries>
</fmg>

DSMapStudio:編輯地圖

對於解包後的文件,DSMapStudio可以以Map為單位,索引地圖模型及對應的遊戲參數,查看並編輯地圖數值。
如上圖,M11是王城羅德爾,load map後可以查看map配置。圖中選中的entity就是王城羅德爾大道上的腐敗化身大屁股。
DSMapStudio還有個重要用途,就是修改戰鬥參數param。以下圖為例:
可以修改該戰灰的稀有度、購入售出價格、是否可掉落、可附魔屬性、可附魔武器種類等。
在DSMapStudio中修改後保存,文件會存到mod文件夾下。修改內容可以通過ModEngine2啟動。

DSAnimStudio:編輯動畫

DSAnimStudio可以編輯TAE(TimeAct Editor)文件,從而控制判定幀、取消幀、無敵幀、SPEffect、bullet、SFX、sound等所有由動畫幀驅動的內容。
DSAS唯一不支持的FS遊戲是《黑暗靈魂2》,因為魂2是用其他引擎製作的。
對於已經解包的工程,可以通過Files→open打開chr.anibnd.dcx,查看該角色的動畫數據。
角色的一個行為=動畫數據(hkx)+動畫幀驅動數據(tae),DSAS可以直接編輯tae,而hkx需要導出到Blender後修改再打回去。
  • Animation:chr的動畫文件。
  • Graph:該動畫的action數據。
  • Parameters:選中action的具體參數。
  • Entity:控制Entity的Transform、StateInfo(用來做多階段)和NPC Param(用來替換模型)。如果自己做了角色模型,可以在這裡導入後測試。
  • Viewport:查看動畫+數據的播放表現,可以逐幀查看。
部分action只有在特定StateInfo下才會apply,如果不apply,會顯示為紅色×。如果不想設置StateInfo就查看動畫的全部action,可以按4(Toggle StateInfo Of Selected Actions 快捷鍵)打開。

DSLuaDecompiler:編輯AI

通過Yabber解包出的Lua,需要進一步反編譯才能被閱讀。這一步需要DSLuaDecompiler,對AI Lua文件進行反編譯。
2120是瑪蓮妮亞的chrID,212000_battle是瑪蓮妮亞BOSS戰AI

2120是瑪蓮妮亞的chrID,212000_battle是瑪蓮妮亞BOSS戰AI

在HTN框架下,以任務(條件→影響)為單位,AI會一直挑選符合條件的任務加入各個計劃的任務池。AI有幾套優先級不同的計劃,在不因優先級發生跳出的情況下,會從該計劃的任務池裡隨機選擇一個任務進行執行。計劃內可以註冊函數、聲明計數器、聲明計時器等。
可以通過內容已知的SPEffectID或動畫ID反過來慢慢看AI邏輯,直接從頭看會比較吃力。

DSMS→DSAS工作流-梅瑟莫為例

製作Mod,尤其是涉及動畫的Mod,需要將DSMapStudio和DSAnimStudio配合使用。接下來以梅瑟莫的投技為例,介紹這一工作流。
梅瑟莫的投技表現和瑪蓮妮亞非常類似,都是前衝、抬手然後抓取判定,但為什麼梅瑟莫的抓取要難躲得多?
針對這一需求,需要查找到梅瑟莫角色的抓取動畫,並查看該動畫配置的tae數據。

DSMS:查找chrID

查找ID有許多辦法,此處提供三種最通用的思路:
1. [Rodan's Juicy Elden Ring Doc]:彙總了VFX、TAE、BEH、HKS和PARTS五類文件的ID和對應內容介紹,但截止到24年8月沒有包含DLC內容。
2. DSMS的Model Editor:可以通過角色的英文名查找對應chrID,存在多個時需要分辨哪個是base。*基本是第一個。*
3. DSMS的Map Editor:不確定要編輯的對象用了哪個chrID時,可以通過map反查。找到物種包藏庫這張map,通過英文名查找entity,或者自己手動沿著地圖一路“走”過去,找到entity並查看Model Name。

DSAS:查找抓取技配置

查看5130的動畫數據,找到投技動畫,看到這一配置時,“為什麼梅瑟莫投技很難躲”的答案已經呼之欲出——
如果進一步追究,這個attack behavior的BehaviorJudgeID為360,它的判定配置為5130360,即chrID+BehaviorJudgeID。

DSMS:查找atkparam

在DSMS的Param Editor下找到AtkParam_Npc,這一文件管理atk的hitbox&damage。查到5130360配置,它就是梅瑟莫投技判定的“罪魁禍首”——
atkparam可以配置atk下每個hit的判定大小、受擊類型、受擊權重、hitbox掛點及形狀、擊退距離、卡肉時間、附加SPEffect、各類型傷害基礎值、多人下各類型傷害基礎值、衝擊力、對物件傷害、SFX ID、Decal ID和AI Sound ID等。
這裡沒有列舉出所有數值,因為配置項實在太多了。和這一投技最相關的配置,其實只有四項:
  • hit0_Radius:第一次hit的半徑大小,為1.3。
  • hit0_DmyPoly2:第一次hit的第二個掛點,為-1。-1表示沒有,即第一次hit為sphere。
  • throwTypeId:為4100。配置投技成功後銜接的投機處決動畫,即處決動畫ID是4100。
  • throwFlag:枚舉,為1.1表示是Throw transition投技過渡,2為Throw投技處決。
如果繼續看4100動畫,會發現5130361~5130364就是投機處決動畫的ThrowAttack Behavior AtkParam_NPC ID。配置了4個AtkParam,是因為梅瑟莫的投技傷害由Strike+Thrust+Fire(small)+Fire(big)四種傷害類型組成,其中Fire(small)被調用多次,以實現“被火焰逐漸灼燒”的傷害表現。
總之,看到這一步,不僅知道了為什麼梅瑟莫投技難躲,還知道了如何調整這一配置。將5130360這一投技判定形狀從sphere改為capsule,並修改radius使其符合手部大小,就會減少被梅瑟莫虛空抓取的表現。
瑪蓮妮亞3022投技hit判定

瑪蓮妮亞3022投技hit判定

當然,逆向思維一波,將瑪蓮妮亞的投技hit判定也改成巨大無比的sphere,讓瑪蓮妮亞的投技變得和梅瑟莫一樣難躲,也不失為一種製作Mod的思路。


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com