惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
B
Blog
U
Unit 42
C
Check Point Blog
I
InfoQ
aimingoo的专栏
aimingoo的专栏
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
爱范儿
爱范儿

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测
《艾尔登法环》Mod:如何解读工程
UyNad · 2024-08-07 · via 机核

本篇文档会介绍如何解包法环工程,从而查看并修改游戏数值、角色AI、角色动画、技能配置及关卡场景配置。

解包工具一览

  • Yabber:对UXM解包出来的文件进行进一步解包和打包,支持.bnd, .bhd/.bdt, .dcx, .fltparam, .fmg, .gparam, .luagnl, .luainfo, .tpf.这些格式

  • DSMapStudio:查看并编辑游戏内的.map地图文件、param游戏参数以及角色模型贴图等

  • 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文件进行反编译。

在HTN框架下,以任务(条件→影响)为单位,AI会一直挑选符合条件的任务加入各个计划的任务池。AI有几套优先级不同的计划,在不因优先级发生跳出的情况下,会从该计划的任务池里随机选择一个任务进行执行。计划内可以注册函数、声明计数器、声明计时器等。

可以通过内容已知的SPEffectID或动画ID反过来慢慢看AI逻辑,直接从头看会比较吃力。

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

制作Mod,尤其是涉及动画的Mod,需要将DSMapStudio和DSAnimStudio配合使用。接下来以梅瑟莫的投技为例,介绍这一工作流。

梅瑟莫的投技表现和玛莲妮亚非常类似,都是前冲、抬手然后抓取判定,但为什么梅瑟莫的抓取要难躲得多?

针对这一需求,需要查找到梅瑟莫角色的抓取动画,并查看该动画配置的tae数据。

DSMS:查找chrID

查找ID有许多办法,此处提供三种最通用的思路:

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使其符合手部大小,就会减少被梅瑟莫虚空抓取的表现。

当然,逆向思维一波,将玛莲妮亚的投技hit判定也改成巨大无比的sphere,让玛莲妮亚的投技变得和梅瑟莫一样难躲,也不失为一种制作Mod的思路。