3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 侠客前传 | 刺客信条 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 11238|回复: 47
打印 上一主题 下一主题

[原创] 【Mod制作】如何使用官方的传书接口扩展自己的战斗(更新基础教程)

[复制链接]

6

主题

313

帖子

800

积分

超级玩家

Rank: 5Rank: 5

贡献度
85
金元
4501
积分
800
精华
1
注册时间
2010-3-23

3DM MOD站(白银)

跳转到指定楼层
主题
发表于 2020-5-20 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 c4sunyx 于 2021-5-20 12:58 编辑

Mod制作基础教程:

①资源导出
下载通用Unity资源工具AssetStudio (目前世界最好的、不依赖Unity编辑器的资源浏览和导出工具,由国人二刺猿大佬Perfare开发),地址 https://github.com/Perfare/AssetStudio ;使用其解包最新游戏的各种AssetBundle(即"资源包",下文简称xxx包,xxx为bundle名字)。教程很多,可参考各种b站教程和其他unity游戏mod贴(热门的包括戴森球计划、鬼谷八荒、太吾绘卷、修仙模拟器...等等)。导出后文件格式如下

②mod支持
下载我的侠之道Mod支持插件(官方尚未正式开放创意工坊,之后会视情况修改),地址 https://github.com/Binarizer/Plugin-Pow ;在游戏目录下建立Mods文件夹,Mods里面放的文件夹即会被插件视作mod资源,可设置多个Mod一起加载。
上图所示,共加载了4个Mod:好友切磋(Duel,插件自带),英文翻译(EnglishTranslate),剑击江湖(JJJH),贴吧语音包(TiebaVoice),可以视情况增删,用逗号隔开即可。
在Mods文件夹下建立新文件夹,文件夹名称即mod名,再在插件中按上图格式加入你的mod,插件即会尝试使用mod来扩展原始游戏。

③资源替换
河洛游戏通用的文本数据路径为assets/config/,里面就是剧情和战斗类的mod作者看重的各种脚本和配表,也就是河洛之前所谓的“纯净官方mod”;其他路径即为模型、贴图、动作、特效、Shader、音乐等美术资源。其中脚本(*.json, *.lua,...)、图片(*.png,*.jpeg...)、音乐(*.wav, *.ogg ...)这三项均可通过插件mod支持功能来外接,只要有mod的路径匹配,则会使用外部资源替换原资源,也可以新增资源。
例1:assets/audio/music/In_Battle_21.wav(罡风破虏),是打包在audio包里面的。我们制作一个小mod,里面只存一个文件,路径为mods/[你的mod名]/audio/music/In_Battle_21.wav,改为其他音乐,重启游戏即可发现该音乐被替换。
例2:assets/config/chs/battle/buffer/difficulty_buff04.json(绝境难度buff脚本),是打包在config包里的。同样制作小mod,只存一个文件,路径为mods/[你的mod名]/config/battle/buffer/difficulty_buff04.json(chs为语言路径,若省略则所有语言下均使用该资源),里面将数值做修改,则重启后即可观察到难度数值变化。

④数据库修改
河洛的4款游戏均使用Excel来填写游戏数据(即策划配表),表现到资源文件则为assets/config/[语言]/textfiles/*.txt,正确的打开方式为编辑器打开->全选->复制到Excel中,开启插件调试器按P导出txt文档即可获悉每一列的意义。修改后保存也是全选所有列->复制粘贴回txt。官方对配表的mod支持弊端为同样将其看做资源,即必须整表替换——你的表中须包含原版游戏数据,才能保证原版游戏正确执行。插件支持另一种模式,即数据库增删查改,方法是将*.txt改名为*_modify.txt,这样就无需在里面填写原数据,且可以多个mod同时生效(也就是按加载顺序对原版配表增删查改)。
例:assets/config/chs/textfiles/GameFormula.txt(lua公式表),5.1更新后刮痧是因为HP公式变化,将其全部内容复制到Excel中;
然后新建
mods/[你的mod名]/config/textfiles/GameFormula_modify.txt,粘贴excel中这行:basic_max_hp[tab][tab][tab]str*2.5+vit*4.25+dex*2+spi*3(从Excel粘贴回来[tab]数量一定是对的,但不用Excel就须保证[tab]键的数量要对上);
请自行发挥修改其系数,再通过插件加载mod,即可发现所有人物HP计算变成了你的新公式,又不影响其他原版公式。
⑤无法直接加载的资源增改
除图片、文本、音乐外的其他资源(prefab)只能通过打包方式加载,所以若要替换/增加模型、动作、特效,都必须通过Unity编辑器进行制作并打包。如何制作并打包这些资源的教程同样非常多(等同自学Unity和游戏美术),过于进阶这里不解释。打包好的资源同样可以由插件来放入你的mod中。游戏的打包资源是通过一个名为AssetBundleSheet.sheet的json文件来定位的,插件支持mod扩展这个文件。
例:由越南大佬制作的河群降龙十八掌特效包,我们将其重命名放在[你的mod]/effects_xianglong,然后添加[你的mod]/AssetBundleSheet.sheet,内容如下(例子里Mod名为MoreEffect):
{
    "BundleList": {
        "effects_xianglong": {
            "AssetBundleName": "../Mods/MoreEffect/effects_xianglong",
            "Dependencies": [],
            "AssetBundleSizeMB": 68
        }
    },
    "FilesInfo": {
        "assets/resources_art/art3d/effects/effect_prefab/atk_effect/effect_rong1.prefab": "effects_xianglong",
        "assets/resources_art/art3d/effects/effect_prefab/atk_effect/effect_rong101.prefab": "effects_xianglong",
        "assets/resources_art/art3d/effects/effect_prefab/atk_effect/effect_rong2.prefab": "effects_xianglong",
        "assets/resources_art/art3d/effects/effect_prefab/atk_effect/effect_rong3.prefab": "effects_xianglong",
        "assets/resources_art/art3d/effects/effect_prefab/atk_effect/effect_rong4.prefab": "effects_xianglong",
        ......(枚举资源包里被用到的各个所需资源)
    }
}
然后在特效脚本里对其进行引用,即可添加加该资源包里的新特效了。
* 由于扩展资源的打包路径不太可能符合该游戏里的缺省路径,引用的地方需要使用插件提供的绝对路径标识功能 @[] ,类似这样
"prefabName": "@[assets/resources_art/art3d/effects/effect_prefab/atk_effect/effect_rong3.prefab]",


2021年更新:
这游戏其实代码结构还是不错的,不过官方使用的自定义Action脚本系统,个人认为还是会给Mod制作造成不小障碍。
比如他的自定义脚本这样的
{ \"CharacterPropertyAbilityAction\" : 1, 300, 4020}
实际上拿Json导出,会变成下面这样,我觉得更容易读懂,也更好编辑:
{
    "$type": "CharacterPropertyAbilityAction",
    "property": "Max_HP",
    "method": "Add",
    "value": 300
}

每个值对应变量名都标示,4020变为Max_HP,1变为Add,很直白——角色最大血量增加300。
而且Json导入导出都不慢,有现成的库,根本不用写几句代码。

所以在我后来更新的插件里面,就让游戏可以直接读取这种json格式,且能把游戏原始格式直接通过Json导出,如下所示

需要F1然后打开高级设置(advance)。开启调试后,游戏中刚刚执行到的剧本、战斗,鼠标放到的Buff等,都会被捕捉,点击相应按键就可以导出到设定的目录下面。
剧本也可以勾选排序优化,不用再肉眼找ID,直接写字符串跳转即可,默认为顺序执行。没编辑器的情况下,这样已经算不错了吧。
另外默认P键可以导出当前游戏内(包括插件)支持的所有表格和指令的说明文档,可以参考作为mod制作的工具。
插件自带了我写好的一版和队友切磋的Mod,有示例性质的json格式的剧本、战斗、buff各1个。
插件名为 Mod支持和多项功能v2.7z 地址 http://pathofwuxia.ys168.com/
剑击江湖Mod默认自带。插件开源,地址 https://github.com/Binarizer/Plugin-Pow

2020原内容:
先附上一个例子,该战斗是调的原版一场传书战,写好了最小化的入口和出口Cinematic文件,并在Quest和BattleArea中各添加一行数据。想替换具体战斗需要把其入口的Cinematic文件里面的场景和战斗一并换掉才可以。另外由于新加了文件,需要使用到支持外部读取Mod的dll。满足条件(如何改传书条件这我就不写了,很简单)就会发现这个任务,点击进入战斗,战斗完毕返回养成界面,胜利则时间不变,失败则时间推后半天。



下面是原理。
该游戏本身是一套状态机,每个状态能转换到哪些状态都是事先编辑好的,而日常养成状态是没有连线到战斗状态的,无论怎么发进入战斗的事件,它都不会有任何反应。而官方所有的战斗事件,都是通过在过场动画(Cinematic)状态下触发的,也就是过场动画状态连线了战斗状态。所以不改代码下官方提供的做法是,先在养成状态的传书界面进入Cinematic状态,再通过Cinematic状态触发战斗。
传书ID去掉最开始的t,就对应了其入口的Cinematic的文件名,这里我写的是modtest_00.json,路径是在config/cinematic下面。
这种json过场动画文件的内容是让不少mod作者望而却步的一个难点,官方的打开大概如图所示。
其实这就是一个典型的逻辑树,每个节点做一件事,然后通过其序号相互链接。EntryPoint是入口Node序号,然后找到这个Node开始执行。Next即执行完后顺序跳转到哪一个Node,Prallel拼错了应该是Parallel,顾名思义并行执行,也就是跳转同时也一起执行哪一个Node。每个节点的事件命名也都很直观,例如CameraTransformAction = 相机摆放,GroupTransformAction = 一大组人摆放,PlayerTransformAction = 玩家摆放,SetFlagAction设置旗标,RewardAction给奖励,ScreenFadeAction = 屏幕暗下来,TalkAction = 调对话,LoadScenesAction读取场景,BranchAction条件分支跳转,等等等等。
当然,官方没有放出事件编辑器前,手动改这东西是非常反人类的,毕竟每个节点并没有标明其序号,你要肉眼自己去数,Node多了烦也烦死。不过,只为了进战斗,保留几个简单的还是没有问题的。比如我提供的传书入口,就做最简单的两件事:读场景(LoadScenesAction),载入战斗(BattleAction)
{
  "EntryIndex": 0,
  "Nodes": [
    {
      "Node": "{ \"LoadScenesAction\" : \"S0107\", { 0.00000, 0.00000, 0.00000} , { 0.00000, 0.00000, 0.00000} , 0, False, 0} ",
      "Next": 1,
      "Prallel": -1
    },
    {
      "Node": "{ \"BattleAction\" : \"btmodtest_00\"} ",
      "Next": -1,
      "Prallel": -1
    }
  ],
  "Name": "mmodtest_00:瞎鸡掰修业"
}
我们修改这个读取的场景、玩家位置、战场ID,即可实现自定义战斗。当然,BattleArea里面对应的事件也要做相应修改。

战斗结束后还需要回到养成界面,需要在BattleArea.txt的胜利和失败这两栏里填写。

这里我提供的两个文件mmodtext_01和mmodtest_02,分别是过半天和时间不变,拿过半天的举例
{
  "EntryIndex": 0,
  "Nodes": [
    {
      "Node": "{ \"NextOrEndQuestAction\" } ",
      "Next": 3,
      "Prallel": -1
    },
    {
      "Node": "{ \"LoadScenesAction\" : \"S0202\", { 1499.94800, -0.00600, 758.87900} , { 0.00000, 0.00000, 0.00000} , 0, True, 0} ",
      "Next": -1,
      "Prallel": -1
    },
    {
      "Node": "{ \"LoadScenesAction\" : \"S0202\", { 1499.94800, -0.00600, 758.87900} , { 0.00000, 0.00000, 0.00000} , 0, False, 1} ",
      "Next": -1,
      "Prallel": -1
    },
    {
      "Node": "{ \"BranchAction\" : { \"LogicalNode\" : [ { \"CheckCurrentTime\" : 1}  ], 0} , 1, 2} ",
      "Next": -1,
      "Prallel": -1
    }
  ],
  "Name": "mmodtest_01:战斗後时间过半天"
}
入口后结束Quest(NextOrEndQuestAction),然后跳到节点3。节点3是一个BranchAction分支,判定如果时间是白天,则跳到节点1读取日常场景并设置为夜晚;如果是黑夜,则跳到节点2读取日常场景并设置为白天且时间推进1。另一个文件_02是时间不变的,其实就是跳转时不倒转日夜,且不推进时间。如果要扩展这个结束奖励,你还可以加入RewardAction,TalkAction,随便什么。不过就是要数好序号,把Next/Parallel、BranchAction里的跳转序号都改改对。
这样,我们就能通过增添Quest来加入任意多的自定义战斗,整个把游戏改成一系列传书那种的都可以。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

1

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3
回复

使用道具 举报

107

主题

1671

帖子

2052

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
108
金元
15999
积分
2052
精华
2
注册时间
2008-5-17
舒服的沙发
发表于 2020-5-20 14:30 | 只看该作者
大佬牛逼,
回复 支持 反对

使用道具 举报

0

主题

49

帖子

111

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1114
积分
111
精华
0
注册时间
2017-7-2
硬硬的板凳
发表于 2020-5-20 14:33 | 只看该作者
给菜虫哥递冰阔乐
回复 支持 反对

使用道具 举报

6

主题

313

帖子

800

积分

超级玩家

Rank: 5Rank: 5

贡献度
85
金元
4501
积分
800
精华
1
注册时间
2010-3-23

3DM MOD站(白银)

冰凉的地板
 楼主| 发表于 2020-5-20 15:00 | 只看该作者

很想吐槽,这玩意连代码都不需要懂,明明就是看一下官方怎么写的就搞定的事大概还是想自己做关卡战斗的Mod作者太少,大多数人关注点都在如何改良系统上

回复 支持 反对

使用道具 举报

13

主题

1066

帖子

1215

积分

游戏狂人

Rank: 6Rank: 6

贡献度
6
金元
11910
积分
1215
精华
0
注册时间
2011-12-9
5#
发表于 2020-5-20 15:21 | 只看该作者
c4sunyx 发表于 2020-5-20 15:00
很想吐槽,这玩意连代码都不需要懂,明明就是看一下官方怎么写的就搞定的事大概还是想自己做关卡战斗的Mo ...

我想是因为实用性不大吧,获得的奖励都能通过其他方式实现……
回复 支持 反对

使用道具 举报

107

主题

1671

帖子

2052

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
108
金元
15999
积分
2052
精华
2
注册时间
2008-5-17
6#
发表于 2020-5-20 15:53 | 只看该作者
c4sunyx 发表于 2020-5-20 15:00
很想吐槽,这玩意连代码都不需要懂,明明就是看一下官方怎么写的就搞定的事大概还是想自己做关卡战斗的Mo ...

大佬,战斗中右键人物点开的那个UI界面应该搜啥关键词啊。
回复 支持 反对

使用道具 举报

6

主题

313

帖子

800

积分

超级玩家

Rank: 5Rank: 5

贡献度
85
金元
4501
积分
800
精华
1
注册时间
2010-3-23

3DM MOD站(白银)

7#
 楼主| 发表于 2020-5-20 16:04 | 只看该作者
lys292 发表于 2020-5-20 15:53
大佬,战斗中右键人物点开的那个UI界面应该搜啥关键词啊。

盲猜一个WGBattleStatusTip
回复 支持 反对

使用道具 举报

107

主题

1671

帖子

2052

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
108
金元
15999
积分
2052
精华
2
注册时间
2008-5-17
8#
发表于 2020-5-20 16:19 | 只看该作者
c4sunyx 发表于 2020-5-20 16:04
盲猜一个WGBattleStatusTip

研究半天,还是找不出取消右键弹出这个UI的办法。
回复 支持 反对

使用道具 举报

6

主题

1184

帖子

1412

积分

游戏狂人

Rank: 6Rank: 6

贡献度
12
金元
13639
积分
1412
精华
0
注册时间
2017-1-14
9#
发表于 2020-5-20 16:43 | 只看该作者
jingxiaolou 发表于 2020-5-20 15:21
我想是因为实用性不大吧,获得的奖励都能通过其他方式实现……

应该不是想用来弄奖励吧,是想以后有MOD做成机战那样一关关的战斗的感觉吧,以前前传那个什么XX传就类似吧,当然如果这作有可能的话
回复 支持 反对

使用道具 举报

6

主题

313

帖子

800

积分

超级玩家

Rank: 5Rank: 5

贡献度
85
金元
4501
积分
800
精华
1
注册时间
2010-3-23

3DM MOD站(白银)

10#
 楼主| 发表于 2020-5-20 17:03 | 只看该作者
sabersl0016 发表于 2020-5-20 16:43
应该不是想用来弄奖励吧,是想以后有MOD做成机战那样一关关的战斗的感觉吧,以前前传那个什么XX传 ...

对就是因为这个,做成一关一关那种,或者扩展支线战斗啥的
回复 支持 反对

使用道具 举报

18

主题

767

帖子

3052

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
1
金元
30484
积分
3052
精华
0
注册时间
2008-7-7

青蛙达人

11#
发表于 2020-5-20 17:05 | 只看该作者
6666666666666666
回复 支持 反对

使用道具 举报

11

主题

774

帖子

886

积分

超级玩家

Rank: 5Rank: 5

贡献度
0
金元
8861
积分
886
精华
0
注册时间
2016-9-30
12#
发表于 2020-5-20 17:51 来自手机 | 只看该作者
小白完全看不懂
回复 支持 反对

使用道具 举报

28

主题

232

帖子

455

积分

高级玩家

Rank: 4

贡献度
74
金元
1587
积分
455
精华
0
注册时间
2019-1-1
13#
发表于 2020-5-21 10:20 | 只看该作者
111111111111111111111111111
回复 支持 反对

使用道具 举报

0

主题

395

帖子

471

积分

高级玩家

Rank: 4

贡献度
0
金元
4705
积分
471
精华
0
注册时间
2013-1-8
14#
发表于 2020-5-22 18:27 | 只看该作者
感谢分享
回复 支持 反对

使用道具 举报

24

主题

3477

帖子

3913

积分

游戏精英

Rank: 8Rank: 8

贡献度
54
金元
36965
积分
3913
精华
0
注册时间
2008-1-20
15#
发表于 2020-5-22 21:01 | 只看该作者
11111111111111111111111111111111111111111
回复 支持 反对

使用道具 举报

0

主题

54

帖子

114

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1139
积分
114
精华
0
注册时间
2016-6-2
16#
发表于 2020-5-24 03:06 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

47

主题

1377

帖子

1818

积分

游戏狂人

Rank: 6Rank: 6

贡献度
120
金元
13278
积分
1818
精华
1
注册时间
2010-7-12
17#
发表于 2020-5-27 23:18 | 只看该作者
口扩展自己的
回复 支持 反对

使用道具 举报

0

主题

38

帖子

40

积分

初级玩家

Rank: 2

贡献度
0
金元
400
积分
40
精华
0
注册时间
2020-4-15
18#
发表于 2020-5-29 10:38 | 只看该作者
666666666666666666
回复 支持 反对

使用道具 举报

0

主题

2029

帖子

3422

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
0
金元
34217
积分
3422
精华
0
注册时间
2014-11-1
19#
发表于 2020-5-30 06:16 | 只看该作者
谢谢楼主的分享
回复 支持 反对

使用道具 举报

3

主题

704

帖子

1004

积分

游戏狂人

Rank: 6Rank: 6

贡献度
12
金元
9561
积分
1004
精华
0
注册时间
2017-2-9
20#
发表于 2020-6-6 11:08 | 只看该作者
看看帖子里藏了啥好东西~~~
回复 支持 反对

使用道具 举报

6

主题

244

帖子

320

积分

高级玩家

Rank: 4

贡献度
0
金元
3204
积分
320
精华
0
注册时间
2009-7-14
21#
发表于 2020-6-18 22:43 | 只看该作者
学习一下
回复 支持 反对

使用道具 举报

0

主题

85

帖子

88

积分

初级玩家

Rank: 2

贡献度
0
金元
879
积分
88
精华
0
注册时间
2019-1-5
22#
发表于 2020-6-21 18:53 | 只看该作者

感谢分享
回复 支持 反对

使用道具 举报

17

主题

278

帖子

829

积分

超级玩家

Rank: 5Rank: 5

贡献度
94
金元
4528
积分
829
精华
0
注册时间
2010-12-21

3DM MOD站(白银)

23#
发表于 2020-6-30 17:12 | 只看该作者
怎么改传书条件
回复 支持 反对

使用道具 举报

17

主题

278

帖子

829

积分

超级玩家

Rank: 5Rank: 5

贡献度
94
金元
4528
积分
829
精华
0
注册时间
2010-12-21

3DM MOD站(白银)

24#
发表于 2020-6-30 17:16 | 只看该作者
哦哦,懂了,感谢大佬
回复 支持 反对

使用道具 举报

0

主题

132

帖子

207

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
2069
积分
207
精华
0
注册时间
2016-12-13
25#
发表于 2020-8-1 22:59 | 只看该作者
111111111111111111111
回复 支持 反对

使用道具 举报

0

主题

104

帖子

163

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1631
积分
163
精华
0
注册时间
2012-3-11
26#
发表于 2020-8-2 01:08 | 只看该作者
6666666666666666
回复 支持 反对

使用道具 举报

2

主题

891

帖子

948

积分

超级玩家

Rank: 5Rank: 5

贡献度
0
金元
9484
积分
948
精华
0
注册时间
2013-7-17
27#
发表于 2020-8-13 06:21 | 只看该作者
谢谢大大
回复 支持 反对

使用道具 举报

0

主题

34

帖子

109

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1086
积分
109
精华
0
注册时间
2017-4-2
28#
发表于 2020-8-16 18:30 | 只看该作者
66666666666
回复 支持 反对

使用道具 举报

40

主题

1130

帖子

767

积分

超级玩家

Rank: 5Rank: 5

贡献度
14
金元
7105
积分
767
精华
0
注册时间
2008-9-7
29#
发表于 2020-9-22 21:31 | 只看该作者
感谢楼主无私分享
回复 支持 反对

使用道具 举报

0

主题

61

帖子

54

积分

初级玩家

Rank: 2

贡献度
0
金元
540
积分
54
精华
0
注册时间
2020-11-6
30#
发表于 2020-11-8 15:25 | 只看该作者
感谢感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|咖绿茵|求知网|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2024-4-24 18:27 , Processed in 0.165666 second(s), 46 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表