//没登陆

欢迎您来到凯恩之角,奈非天!

帖子:946

符文:196

跳转到指定楼层
1#
发表于 2022-6-30 17:01:39 |只看该作者 |倒序浏览 来自:上海
本帖最后由 Will15309 于 2022-10-1 03:45 编辑

首先,每个人的Mod使用习惯和需求是不一样的,自己修改的Mod才是最适合自己的,所以我一直鼓励大家自己动手打造自己的专属Mod
但是,每次暴雪版本更新时,都会有一些或大或小的修改,如果不同步更新,轻则显示“missing string”,重则游戏闪退。
同步更新这个事,有时候好麻烦的,特别是自己mod做了大量修改的话,同步起来更费劲,而且想到以后每次暴雪更新,都得这么来上一次,更吐血!
所以,我在这里分享一些快速同步更新的方法和技巧给大家,节约时间,舒坦心情!我自己也是这么操作的,所以每次同步更新发布我的Mod还算比较及时。


如果,你自己的修改比较少,5分钟就能改完,那就不用费别的事了,每次暴雪更新后,你再修改一次就完了。每次5分钟还是浪费得起的!
如果,你做了大量修改,那么下面的内容肯定适合你。


电脑AI自动合并同步的方法:
前期准备:
“MPQEditor”:MPQ文件编辑器,Mod的制作软件,你修改mod,这个肯定已经熟悉了。
“CascView”:暴雪游戏客户端文件查看器,和上面软件是同一个作者,这个用来查看暴雪原文件的。
“Git”:大名鼎鼎的开发版本控制软件,快速同步的关键。
(以上软件网上搜一搜,都有下载,最好从官网下载)

操作方法:
使用git快速同步的方法有很多,我这里主要讲两种,其他的,如果有你知道的好方法,也欢迎您分享出来给大家。

1.使用分支(branch)的方法:
首先,我们需要以暴雪原文件作为基础(不需要D2R客户端里所有的文件,只需要你mod里用到的那些即可),创建两个分支(branch),一个给我们自己修改mod用,名字可以用branch的默认名字:master,另外一个专门用来更新暴雪每次的版本,分支名字就叫blizzard吧。两个branch需要是同一个起点,这也很合理,大家都是从暴雪原文件开始修改的嘛。树不管有多少分支,都共有一个树根!(所以分支branch这个名字取得很形象吧!)

接下来,我们在自己的master分支上,开始自己的mod修改提交,blablablabla,修改10次,修改100次,持续了1天,持续了1个月,这些都没有问题,反正就在这个master上做。如果你是从别人的mod上开始修改的,那就把别人的mod当成你的修改,也在master上提交,反正只要不是暴雪的改动都在master上提交,不管是你改的,还是你抄的别人改的。

每次暴雪有更新了,我们需要切换到暴雪分支,使用命令git checkout blizzard,在暴雪分支上,把暴雪的修改提交(使用CascView软件得到每次暴雪更新的内容)。

然后,重点来了,我们需要git checkout master,再次回到我们自己的分支,然后使用合并暴雪分支命令git merge blizzard,同步更新完成了!

真的就是1秒钟,完成所有同步更新,不管暴雪更新了多少内容,都是一个命令,一秒钟搞定!轻松+愉快,有没有?
以后平常的时候,我们还是在master做自己的mod修改,一旦暴雪有更新,就重复上面的步骤,完成同步。

另外,提一个非常少见的意外情况,就是合并分支时冲突了,该怎么办?
合并冲突几乎不会发生,什么情况下发生呢?比如,有一段文字,暴雪原来叫它”AAA“,你出于自己的需求,把它改成”BBB“,然后某次暴雪版本更新时,突然把它改成了”CCC“,git在合并分支时,并不知道,这段文字最终到底应该用你的”BBB“还是暴雪新的”CCC“。
这个时候冲突就发生了,没必要慌张,人工介入处理下即可,最后使用哪一个,你来定,处理完冲突后,合并分支就完成了。

1.JPG

2.不使用分支的方法:
如果你觉得上面的1秒钟方法快是快,但是分支切来切去,有点绕。也行,我们来说另外一种不用分支的方法。
这次我们只用一个master分支,同样的用暴雪原文件作为起点,开始diy之路。
当暴雪有更新时,我们需要使用重置命令git reset xxx重置到上一次暴雪更新时的提交,其中xxx就是上一次暴雪更新时我们的提交hash码,这个时候从上次暴雪更新到现在的所有修改都移到了工作区,我们使用git stash命令将这些修改全部缓存起来。然后在xxx这个点的基础上,提交这一次暴雪的更新yyy,这个提交点yyy也是下一次同步时,重置的起点。然后使用git stash pop,将之前缓存起来的我们自己的修改拿出来,这样也相当于进行了一次合并,合并完再次提交,也是1秒钟完成同步。
同样的这种方法也会极少发生合并冲突,处理方法和前面说的一样。


以上两种方法,其实原理都差不多,就是合并修改记录而已,只不过一种分成两个分支,再合并,逻辑关系、修改日志都比较清晰。另外一种全部放在一个分支里,逻辑关系、修改日志稍有混乱。。

综上的两种方式,时间上是比较快速的,但需要花费学习git的时间成本。一个是每次花时间人工同步更新,一个是先花git学习时间,以后每次用git同步秒完成,大家自己选择哈。。。


写到这里,我感觉写的东西,可能只有程序员看得懂,普通人可能看得云里雾里。。。不管了,写这么多,直接删了不发,也不太好。。。



谁会想到,我有一天竟然在一个游戏论坛里,教别人程序员开发经验。。。




有人反映云里雾里看不懂。。。那么除了上面的电脑自动快速合并以外,我来简单说说人工合并。。。

人工手动合并同步的方法:
方法一:
首先,用”CascView“获取到最新版客户端里的暴雪原文件,把你mod里文件,逐个不遗漏地和暴雪原文件进行文本比较。
两者的区别,主要有两种:
a-是你制作mod时专门的修改。
b-是除了你修改以外的其他。
b这种区别,就是这次暴雪更新的内容了。你需要把这些更新内容也同步到你的mod里去。
全部同步完成后,你的mod和暴雪最新版本的区别应该就只剩下你的diy改动了。

方法二:
方法一稍微麻烦一点,主要是通用性,任何时候都可以这么同步。
当然也有讨巧省时的方法,就是你存有上个版本的暴雪原文件,这个时候,你只需要比较最新版本暴雪原文件和上次暴雪原文件的差别。他们2者的差别就是暴雪这次更新内容。你把这些内容同步到你的mod里去,也完成了同步更新。
方法二比方法一省时省力,但它需要你手里有上个版本的原文件,所以暴雪每次更新,你都保存一份原文件也可以的(就是比较废硬盘,你也可以为暴雪原文件创建一个git库,这样就不占硬盘了)。







已有 1 人评分符文 收起 理由
小心有熊 + 10 优质内容

总评分:  符文 + 10   查看全部评分

帖子:855

符文:1238

2#
大佬牛逼!!!
发表于 2022-6-30 17:02:52 |只看该作者 来自:中国香港

帖子:4436

符文:235

3#
如果是好几个人一起开发的MOD,一定非常熟悉这种情况了,哈哈
发表于 2022-6-30 17:10:49 |只看该作者 来自:美国
BN: Exiamana#4248
头像被屏蔽

帖子:347

符文:28

4#
哈哈哈哈以前还有教函数和指针的
发表于 2022-6-30 17:14:58 来自凯恩之角App |只看该作者 来自:云南

帖子:46

符文:60

5#
据说,改MOD也是玩D2的乐趣之一。
发表于 2022-6-30 17:15:59 |只看该作者 来自:江苏

帖子:1784

符文:103

6#
好贴,支持will大佬
我现在用的mod就是以will mod为基础改的
发表于 2022-6-30 17:16:16 |只看该作者 来自:山东

帖子:1265

符文:155

7#
收藏一波 顺便
首先,每个人的Mod使用习惯和需求是不一样的,自己修改的Mod才是最适合自己的,所以我一直鼓励大家自己动手修改自己的专属Mod!
但是,每次暴雪版本更新时,都会有一些或大或小的修改,如果不同步更新,轻则显示“missing string”,重则游戏闪退。
同步更新这个事,有时候好麻烦的,特别是自己mod做了大量修改的话,同步起来更费劲,而且想到以后每次暴雪更新,都得这么来上一次,更吐血!
所以,我在这里分享一些快速同步更新的方法和技巧给大家,节约时间,舒坦心情!我自己也是这么操作的,所以每次同步更新发布我的Mod还算比较及时。

如果,你自己的修改比较少,5分钟就能改完,那就不用费别的事了,每次暴雪更新后,你再修改一次就完了。每次5分钟还是浪费得起的!
如果,你做了大量修改,那么下面的内容肯定适合你。

前期准备:
“MPQEditor”:MPQ文件编辑器,Mod的制作软件,你修改mod,这个肯定已经熟悉了。
“CascView”:暴雪游戏客户端文件查看器,和上面软件是同一个作者,这个用来查看暴雪原文件的。
“Git”:大名鼎鼎的开发版本控制软件,快速同步的关键。
(以上软件网上搜一搜,都有下载)

操作方法:
使用git快速同步的方法有很多,我这里主要讲两种,其他的,如果有你知道的好方法,也欢迎您分享出来给大家。

使用分支(branch)的方法:
首先,我们需要以暴雪原文件作为基础(不需要D2R客户端里所有的文件,只需要你mod里用到的那些即可),创建两个分支(branch),一个给我们自己修改mod用,名字可以用branch的默认名字:master,另外一个专门用来更新暴雪每次的版本,分支名字就叫blizzard吧。两个branch需要是同一个起点,这也很合理,大家都是从暴雪原文件开始修改的嘛。

接下来,我们再自己的master分支上,开始自己的mod修改提交,blablablabla,修改10次,修改100次,持续了1天,持续了一个月,这些都没有问题,反正就在这个master上做。如果你是从别人的mod上开始修改的,那就把别人的mod当成你的修改,也在master上提交,反正不是暴雪的修改都在master上提交,不管是你改的,还是你抄的别人改的。

每次暴雪有更新了,我们需要切换到暴雪分支,使用命令git checkout blizzard,在暴雪分支上,把暴雪的修改提交(使用CascView软件得到每次暴雪更新的内容)。

然后,重点来了,我们需要git checkout master,再次回到我们自己的分支,然后使用合并暴雪分支命令git merge blizzard,同步更新完成了!

真的就是1秒钟,完成所有同步更新,不管暴雪更新了多少内容,都是一个命令,一秒钟搞定!轻松+愉快,有没有?
以后平常的时候,我们还是在master做自己的mod修改,一旦暴雪有更新,就重复上面的步骤,完成同步。

另外,提一个非常少见的意外情况,就是合并分支时冲突了,该怎么办?
合并冲突几乎不会发生,什么情况下发生呢?比如,有一段文字,暴雪原来叫它”AAA“,你出于自己的需求,把它改成”BBB“,然后某次暴雪版本更新时,突然把它改成了”CCC“,git在合并分支时,并不知道,这段文字最终到底应该用你的”BBB“还是暴雪新的”CCC“。
这个时候冲突就发生了,没必要慌张,人工介入处理下即可,最后使用哪一个,你来定,处理完冲突后,合并分支就完成了。

不使用分支的方法:
如果你觉得上面的1秒钟方法快是快,但是分支切来切去,有点绕。也行,我们来说另外一种不用分支的方法。
这次我们只用一个master分支,同样的用暴雪原文件作为起点,开始diy之路。
当暴雪有更新时,我们需要使用重置命令git reset xxx重置到上一次暴雪更新时的提交,其中xxx就是上一次暴雪更新时我们的提交hash码,这个时候从上次暴雪更新到现在的所有修改都移到了暂存区。在xxx这个点的基础上,提交这一次暴雪的更新,提交时也相当于进行了一次合并,也是1秒钟完成同步。
同样的这种方法也会极少发生合并冲突,处理方法和前面说的一样。

以上两种方法,其实原理都差不多,就是合并修改记录而已,只不过一种分成两个分支,再合并,逻辑关系比较清晰。另外一种全部放在一个分支里,逻辑稍有混乱。。

综上的两种方式,时间上是比较快速的,但需要花费学习git的时间成本。一个是每次花时间人工同步更新,一个是先花git学习时间,以后每次用git同步秒完成,大家自己选择哈。。。

写到这里,我感觉写的东西,可能只有程序员看得懂,普通人可能看得云里雾里。。。不管了,写这么多,直接删了不发,也不太好。。。

谁会想到,我有一天竟然在一个游戏论坛里,教别人程序员开发经验。。。
发表于 2022-6-30 17:18:08 来自凯恩之角App |只看该作者 来自:四川

帖子:220

符文:278

8#
我就是看的一头雾水的那种人。。意思是不是说用自己的Mod和暴雪的原文件比较,看暴雪改动了那些,再改过来,是不?
发表于 2022-6-30 17:19:19 来自凯恩之角App |只看该作者 来自:辽宁

帖子:171

符文:23

9#
这个好啊太棒了
发表于 2022-6-30 17:22:39 来自凯恩之角App |只看该作者 来自:浙江

帖子:946

符文:196

10#
瑟寇 发表于 2022-6-30 17:19
我就是看的一头雾水的那种人。。意思是不是说用自己的Mod和暴雪的原文件比较,看暴雪改动了那些,再改过来 ...

你这种是人工合并,也可以的,就是比较费时费力。

我顶楼讲得是git软件电脑自动合并,快速省事

帖子:327

符文:55

11#
我一直是在用好几个作者的MOD,东拼西凑,自己用MPQEditor修改
LZ的那些工具我一个老年人恐怕难学会,所以我想知道这次到底应该修改哪里,才能不让游戏报错。。。
发表于 2022-6-30 17:24:23 |只看该作者 来自:河南
[armory]http://cn.battle.net/d3/en/profile/%E8%B4%AB%E6%B0%91%E8%8B%B1%E9%9B%84-5282/hero/17784006[/armory]

帖子:946

符文:196

12#
本帖最后由 Will15309 于 2022-6-30 17:39 编辑
贫民英雄 发表于 2022-6-30 17:24
我一直是在用好几个作者的MOD,东拼西凑,自己用MPQEditor修改
LZ的那些工具我一个老年人恐怕难学会,所以 ...

那就人工来比较文件,人工合并。。

具体方法,我添加到顶楼里去了

帖子:502

符文:76

13#
用CascView提取哪些文件怎么知道?自己学习下做个mod
发表于 2022-6-30 17:40:56 来自凯恩之角App |只看该作者 来自:浙江

帖子:946

符文:196

14#
rookiefly 发表于 2022-6-30 17:40
用CascView提取哪些文件怎么知道?自己学习下做个mod

什么意思?没看懂

CascView提取的是整个客户端所有文件,你需要从当中找到你mod里需要的文件。

帖子:327

符文:55

15#
试了下,放弃了哈哈
发表于 2022-6-30 17:47:18 |只看该作者 来自:河南
[armory]http://cn.battle.net/d3/en/profile/%E8%B4%AB%E6%B0%91%E8%8B%B1%E9%9B%84-5282/hero/17784006[/armory]
您需要登录后才可以回帖 登录 | 注册网易通行证