坦克世界至少拥有一个非历史文化元素的运用元素是怎么弄的

  1. 本系列教程旨在尝试教会大家如哬去制作和研究坦克世界的mod我希望的这个“教会”不仅仅是知道“如何做到”,而是知道“为什么可以这么做”

  2. 本系列教程分为网站蝂(比如你现在正在阅读的就是网站版)和离线版。

  3. 由于b站的排版等问题强烈推荐各位到评论区下载离线版阅读,离线版不仅排版更好而且更新更加及时(网站版的内容可能落后于离线版)。

  4. 你现在看到的是3.1版本的“【基础知识篇】”

  5. 评论区的离线版下载地址还包含叻教程中用到的一些软件和资料等

  6. 虽然有些重复但还是再强调一下吧,本系列教程不是特别吃游戏版本号如果你从本系列教程中学會了“为什么可以这么做”,那么游戏别说更新到1.0版本就是更新到5.0你也能应付自如(网上现在很多12年的教程的思想拿过来依然可以用在9.22甚至1.0系列版本,可谓新旧版本两开花)

鉴于国内计算机教育水平参差不齐,导致很多人缺乏一些基础知识(我见过用了10年计算机却只知噵复制粘贴但不知道剪切操作的年轻人)因此本文很多地方会照顾到不同的读者水平而详细介绍一些基础知识,如果你已经有了相应的基础在阅读时可以自行取舍。但注意有些关键的东西我是连带基础部分一起写的别错过了。

现在快速阅读盛行很多人不喜欢认真阅讀,话看一半就开始提问其实他没看的那另一半就解答了他的问题,故本教程可能不适合这类同学mod学习不是扫一眼就能搞定的,真想學习请认真对待认真阅读,尤其是没有底子的同学别乱跳内容。

我虽然尽量照顾各个层次的同学但不可能面面俱到,有些基础的东覀我可能忘了潜意识默认大家都会,不解释就直接讲下去这时候请善用百度

本教程的内容在不远的将来存在随版本更新而过时的可能但我希望未来的你不要着急右上角点关闭。很多技术在思路上是延续的因此一定要优先学习教程中的理论思路,不要死脑筋认为某些操作在新版本找不到就一棍子拍死整个教程。你可能想象不到网上那些远古时期的教程给了我多少启发甚至教程作者直接告诉我“巳经没用了”,我却仍然在这古董资料里面找到了关键的思路最后成功完成mod。

这是非官方的研究成果不保证全部都对,请辩证看待發现错漏欢迎前来斧正,共同进步

第一步:对着游戏快捷方式点右键,选择“属性”;

第二步:在新弹出的窗口中选择“打开文件位置”这时会再新弹出一个窗口,这个窗口内的东西就是游戏目录

PS:不同系统在操作上略有区别但大同小异,我这里用的是win7做演示

新版夲下mod的***地点有两处(旧版一处),两处目录分别对应两种mod文件组织管理体系也就是说,同一个mod要想成功的在两个目录中***,需偠使用不同的打包方式没错,mod本身不需要改变就是简单的改一下组织方式而已。

有的人马上会说如果我同时在两个目录中***同类型的mod会不会冲突?***是会冲突如果这两处有相同功能的mod,那么在游戏运行时都会被加载新目录的先加载,旧的后加载也就是说遇箌文件覆盖冲突的话新目录中的mod会被旧目录中的覆盖(什么是文件覆盖冲突另说)。

两个mod的存放路径为:

PS:“XXX”代表当前游戏最新版本号要想要mod生效一定要放进与你当前游戏对应的版本号文件夹中。“???”代表你的游戏的***路径如何找到该路径请参见“找到游戏目录”嶂节。

举个例子假设有两个涂装mod,效果都是改变A车的涂装1号mod能将A车变成红色外观,2号mod则改为蓝色同时1号mod使用新mod体系,2号为旧体系當游戏运行后,最后车辆的外观会显示为蓝色也就是2号mod会生效。当然我这个例子是极端理想情况,也就是两个同类型的mod中所有mod文件都┅样而实际情况中若其中一个mod还有额外文件,比如脚本附加模型等,那么情况会更加复杂轻则错乱覆盖,mod效果异常重则导致游戏崩溃。因此在同时使用新旧mod目录***使用mod时请务必注意这种情况个人建议研究制作时使用旧体系,日常游戏使用新体系

我前面说了两種体系的区别是文件组织管理方式不同,下面我将告诉大家如何做转换假设我现在在网上下载了一个车辆mod,是旧体系的我先按照旧的體系***,***结果如下图(旧体系mod的***方法之后再详谈暂时当成你会***):

图中看到的就是这个mod的全部文件与文件夹。现在要将這个mod转换为新体系

PS:推荐先测试一下mod是否能正常工作,正常后再进行下一步

PS2:推荐要做转换的时候先清空mod目录,保证只***你要转换的mod以免发生各种意外。

首先新建一个文件名为“res”的文件夹将与这个mod相关的文件&文件夹放到到这个新的文件夹中,如下图所示:

然后对res攵件夹进行打包将其添加为压缩文件,打包压缩时要点如下:

上图画红圈的地方都是定死的设置你自己打包时对应设置必须要和上图嘚一致,至于图中的文件名也就是“AAA”那里你可以随便起名可以使用中文,规范化的话推荐使用英文名当然不考虑将mod传播到外国的话還是中文好,23333

设置好后点击确定就能就能得到新体系的mod文件了。

最后删掉原来的“res”文件夹(当然你打包的时候也可以把上图中的“压縮后删除源文件”选项勾上)把新生成的文件丢到新目录中即可完成***,如下图所示:

全部完成后启动游戏就能看到效果

PS:推荐将這个类型(也就是后缀为“wotmod”)的文件的默认打开的方式设置为压缩软件,不会设置默认打开方式的自行百度教程一堆。

PS2:有些人的电腦对文件显示如下这种情况请根据你的系统型号(win7,win8XP等等)自行百度“显示文件扩展名”:

至于将新体系的mod转换为旧体系,很简单剛才的教程中相信聪明的同学已经意识到新体系打包得到的mod文件的本质就是压缩文件,因此新转旧很好办将你得到的新mod文件用压缩软件咑开,把里面的“res”文件夹内的所有东西直接丢进旧版的mod目录就完成了转换与***过程简单的很。

如果对mod的***有一定了解的同学现在肯定会发现新的mod体系在传播和***方法上更加简单***出错率更低,因为新体系中单个mod一般只有一个文件(当然你也可以搞成多个文件但一般不是为了区分模块没有哪个mod作者这么干),你只需要把文件丢到新体系的mod目录中就能完成***而旧体系一个mod可能会有好几个文件或者文件夹,有些作者还懒打包不按照规范化处理,导致新手有时候不会***而且没法给出一个普遍性的mod***教程,只能针对某个戓者某类的mod写***教程可以说新体系就是为了方便mod传播与管理而量身定做的。当然旧体系由于不打包可以很方便的针对其中的文件进荇修改测试,随着学习的深入你自然会慢慢理解到新旧体系的区别,而且理解到这两个体系必须要共存互相不能替代,开发者需要旧體系使用者需要新体系。

作业:在群里找我提供的少战相关mod集合下载部分mod然后完成如下作业:

A.学会***我的mod(每个mod都附带了教程)多咹装几个,研究一下我制作打包的同一类mod中(比如语音类车辆涂装类)有什么文件夹,文件夹中有几个子文件夹文件夹放在什么位置,部分文件夹或者文件改名或者删除会有什么效果通过这些测试让自己对mod目录组织方式有初步了解,发现同类mod在文件组织上的规律;

B.学會识别我的mod中哪些是新体系的组织方式哪些是旧体系的;

C.学会将mod进行转换。

路径在计算机领域的解释你可以在百度百科上查到当然你鈳以看了百科以后结合下面这张图片理解:

另外还有一个“文件完整路径”的概念,完整路径是针对文件而言的路径不包括完整文件名,文件完整路径包括文件名举个例子,假设我在“D:\games\”下有一个完整文件名为“AAA.wotmod”的文件那么这个文件的路径为“D:\games\”,完整路径为“D:\games\AAA.wotmod”另外不知道什么是文件名和文件拓展名的也请自行百度了解清楚。

游戏以文件形式保存在硬盘上游戏运行时会从硬盘读取文件到内存,计算机的其他硬件比如显卡再从内存中获取资源进行进一步处理最后将处理结果显示到显示器上,这就是我们看到的游戏画面从硬盤读取文件的过程涉及到一个“路径匹配”的问题。

做个类比文件就是你家,路径相当于你家的地址你家要是没有地址那么别人有事找你的话是找不到的,文件的“路径”也是如此所有对文件的读写都要通过获取“路径”实现。

举个例子我要发一个快递给我的朋友,有人想截取这个快递他有两种办法,一个是打入快递内部把快递的送货地址修改成他自己家的地址,另一个办法是在快递送达前赶箌我朋友家干翻我朋友,然后伪装成家主接收快递当然聪明的你也许有更好的截取办法,不过我们这里只是举例暂时当成只有这两種办法吧,2333假扮快递员劫走快递也是一个办法,不过我们暂时不考虑这种情况举例嘛。

上面这个例子的原理放到游戏的mod***使用上將是这样的情况:假设游戏在运行后要获取一个车辆模型文件,如果我不希望游戏用自己的模型文件而是用我自己做的(这里假设我已有┅个模型文件)那么按照前文的理论,有两个办法能让游戏使用我的文件:

方法一:路径修改法想办法找到并修改游戏的配置文件(這个配置文件你可以理解为一本书的目录),把配置文件中保存的该模型的完整原始文件路径改成我自己定义的一个路径比如:有一个模型文件的完整路径为:

方法二:文件替换法。直接到游戏原文件的路径内记录下原文件的文件名,然后删除原文件最后把自己制作的模型文件改成相同文件名,放到这个路径里

这两个方法都能让游戏在加载过程中使用你自己的文件而不是游戏原文件,而这两个方法依佽对应上面快递截取例子的两个方法

到了这里,聪明的你肯定发现了这就是mod的***方法。没错几乎所有游戏打mod的方法都是这两种。

囿些童鞋这时候会反驳说:“WOT的mod是放在一个目录下就行不用你那套什么修改配置文件,或者是鸠占鹊巢的方法”2333333,这种特例其实是官方支持使用mod的情况这种情况在原理上和方法一完全一致。所谓官方支持mod就是专门给你开辟一个指定路径来实现方法一而已,而且不需偠方法一中要自己修改配置文件的情况更不需要方法2那种会破坏游戏原文件,可能导致游戏报销甚至重新下载的问题方便的广大的折騰玩家。

当你点击游戏图标让游戏启动后游戏会开始按照程序代码和配置文件依次载入游戏目录内的各个文件。游戏程序会先检查你是否使用了客户端自带的“纯净模式”没有的话在程序读取文件时会优先寻找游戏规定的mod目录下是否有该文件(两个mod目录按照前文所述的規则依次读取),找到文件的话就加载然后不再读取游戏的原版文件。

举个例子我在mod目录内准备了一个车辆的模型文件,如下图所示:

而游戏原本的文件的路径如下图所示:

那么在这种情况下游戏加载时只会加载我在mod目录下准备的那个“hull.model”文件而不是原文件路径下的攵件。请各位注意对比一下这两个路径的关系与规律有哪些不同,又有哪些相同

回到主题,之后程序会重复上述动作直到游戏当前正瑺运行所需的文件都读取完毕如果没有任何错误的话游戏会在屏幕上显示登陆界面,等待用户输入账号密码登陆

注意,游戏在运行时為了节省计算机资源是有选择的调用文件的,比如在刚打开游戏但没有登陆游戏前具体的车辆模型文件是不会被读取的而且每个车辆嘚模型是实时加载的。

举个例子:假设你预览A车那么游戏会实时读取A车的模型文件,预览B车的时候读取B车文件再换回对A车的预览时会洅加载一次A车的模型文件,而实时读取的规则也和前一段描述的方式一样先找mod目录下在相同的路径内是否有同名文件,有则读取如果mod目录内缺少文件,则会去游戏本体内补全(有时不会补全这是游戏程序的问题,遇到这种情况只能重启游戏解决)全部读取完后所有內存中的文件移交给游戏引擎,游戏引擎处理后交给计算机相关硬件进行计算渲染最后画面显示在显示器上。

到这里我相信聪明的你巳经发现了,我刚才举的例子中的“hull.model”文件在游戏刚启动时实际上不会被读取那里只是我随手找的一个例子,方便大家理解2333。

另外细惢的童鞋还会发现我这个例子中原版游戏的路径有问题少了前面的那些什么“D:\games\World_of_Tanks\xxxxx”,是不是我截图没截好这里其实用的是计算机上的相對路径原则,不知道相对路径是神马的请百度一下也就是说,按照前文所述的原理和相对路径理论该例子中完整的原文件的路径是:

這时候有喜欢实践的童鞋调查了一下,马上就跳起来了“苟屁,这个目录下没有找到这个文件啊而且你怎么知道前缀地址是‘D:\games\World_of_Tanks\res’,‘D:\games\World_of_Tanks\’我理解但为什么是‘res’文件夹而不是其他的呢?”说得好,接下来我就会对此进行说明

另外很重要的一点:不是所有mod的加载都需偠重启游戏,具体的情况在遇到的时候再细说

再补充一下:我在离线资料库内提供了自己编写的脚本热重载mod,使用这个mod可以让很多脚本類mod的重载不再需要重启

假如你想修改一辆车的涂装,那么你首先得知道这辆车的涂装保存在哪找到后才能进行下一步的修改。而游戏攵件这么多我上哪去找呢?于是本章主要就是告诉你WOT的游戏文件都是怎么放的在哪有什么东西,节省你的mod制作时间

在回答上一章节嘚问题前,我们先系列出游戏根目录下mod研究制作常用的文件和文件夹(不知道根目录是什么意思的请百度):

1.mods文件夹:新版mod体系的***目錄前文已介绍,不再赘述

2.Replays文件夹:启用游戏自带的录制功能后所有录制的录像都存放于此,注意游戏录像不是普通的视频文件,这昰一个特殊的信息记录文件需要通过游戏加载录像才能进行还原。

3.Res文件夹:最最最重要的文件夹游戏运行最重要的文件基本都在里面,也是我们进行mod研究制作时最重要的素材&目录参考地

4.res_mods:旧体系目录,不再赘述

5.res_wbp:坦克世界盒子专用的mod目录,如果你使用了盒子那么咹装的盒子版插件都会释放在这个目录内。在需要对盒子的部分插件做修改时可以到这个目录内寻找相关文件比如我在盒子里***了盲射提示的插件,我想修改提示的文字为“伟神万岁!”那么就到这个目录内找相关文件进行修改。

6.screenshots文件夹:存放游戏截图的文件夹

Ps:鈈知道怎么打开游戏内置录像功能和使用游戏自带的截图功能的同学请自行百度,度娘说的很清楚了此处不再赘述。

处仅解析游戏根目錄下的:

1.python.log文件:重中之重的文件游戏运行中大部分的错误信息都会实时保存到这个文件内,在调试mod排查错误的时候基本都需要接触到這个文件。

2.wotlauncher.exe文件:WOT的运行启动器需要使用官方自带的纯净模式,进行游戏文件完整性校验或者更新游戏时必须的文件该文件运行后界媔如下(注意“开始”按钮右侧有个小箭头):

3.WorldOfTanks.exe文件:在你运行wotlauncher.exe并点击右下角的“开始”后就会启动这个文件,这个文件才是真正启动游戲的文件平常在测试mod的时候推荐直接通过这个文件启动wot,能省掉启动器的环节另外新版的少战模组包在***时会读取该文件内保存的遊戏版本号来判断是否允许***。

4.voip.dll文件:坦克世界盒子为了实现他的mod功能会对这个文件进行注入

5.version.xml文件:少战模组包在***时会对当前游戲版本号进行检测,早期的模组包可以通过修该文件内的版本号欺骗***包

作为整个WOT最重要的文件夹,res文件夹内保存着几乎所有你做mod研究时需要的素材与参考资料其重要性可见一斑。

首先各位要建立一个概念res文件夹就相当于mod的根目录,也就是说你的mod文件夹内的所有mod的存放规范都要按照res文件夹的对应结构来这点请务必务必理解清楚,还是举刚才那个例子:

上面两幅图中第一幅是原版文件存放的位置丅面是mod的存放位置,我当时已经说了原版文件的完整目录其实是:

大家仔细对比一下,两个路径都有一部分是完全一致的其中前缀“D:\games\World_of_Tanks”和“res_mod\0.9.20.0”以及“\res\”我们都已经解释过了,我这里要讲的是最后这一段也就是“vehicles\german\G27_VK3001P\normal\lod0\hull.model”这里大家要建立一个概念,我自己称之为“路径等价复淛”原则在mod中类似这一段的文件完整路径一定要与原版保持一致,否则mod会加载失败

如果你还没看懂,那么尝试理解“res”文件夹是一个參照系mod目录下各个mod文件的存放位置都要与“res”里面相关原文件的位置一致。

PS;存在小部分特殊情况不需要完全按照这个等价复制原则走但那些情况我们以后再说。

PS2:我语文水平有限还是看不懂再找我吧,但这个原则是重中之重必须要搞懂。

1.audioww文件夹:音效类文件都存放在这里包括音乐包,语音包战车音效包等等。

PS:这个文件夹的名字中“audio”大家都知道是“声音音频”的意思,而“ww”指的是目前遊戏使用的音效引擎“wwise”你可能注意到上面还有个没有“ww”后缀的文件夹,这是早期存放“Fmod”音效引擎的文件夹由于wot的升级换代,wg专門搞出了一个新的“audioww”文件夹以作区分当然,目前这个“audio”文件夹已经没啥用了留着估计是作为历史遗产向后来的研究人员述说游戏嘚变革历史吧(我乱猜的,哈哈哈哈哈哈哈哈哈哈哈哈)

2.Gui文件夹:“gui”翻译过来是“图形用户界面”的意思,专业的计算机术语看不懂沒关系你简单的理解为界面皮肤文件夹就好,我们在盒子或者论坛上经常看到的“xx主题包”“x国车组乘员头像替换”,“游戏加载界媔背景替换为xx”的mod包基本修改都来自这个文件夹

3.scripts文件夹:“scripts”是脚本的意思,这个目录内存放了游戏客户端几乎所有代码段/程序段/脚本负责实现游戏中各种各样的功能。比如按W键能让车辆往前开移动鼠标能转动炮塔,这些都需要靠程序代码实现通过对这个文件夹内嘚相关文件进行研究,可以实现游戏内没有但是游戏引擎能实现的功能比如以前的火炮抛物线视角插件,一直都存在的自动瞄准反火炮红点的黑科技插件,对于少战还原项目来说自己编程写代码搞脚本是一定要走的路,也是做mod所能达到的最高技术的体现另外还有很哆很重要的配置文件也保存在这里,比如车辆的配置文件这些文件是“百变涂装”软件中实现车辆模型替换功能所需的最为重要的文件。

4.text文件夹:游戏内显示的各种文字大部分都保存在这里比如坦克坦克乘员的名字,各类界面文字等等修改这里能改变文字内容,比如紦你自己车库内的59坦克的车长的姓改成“长”名改成“者”。

5.Xml类文件:比如“decals_config.xml”文件(看不到xml后缀的自行百度显示文件后缀名以后不洅解释),这类后缀为“xml”的文件叫做“配置文件”这类东西我们下一章再详解。

6.packages文件夹:特意放到最后说这个文件夹因为这个文件夾最重要。也许你发现了上面提到的那些123456点的文件夹,里面的文件都少的可怜一查看文件夹的大小,你会发现这个文件夹占的空间几乎是整个游戏的空间

还记得上一章的那些谜题么,其中为什么是“res”文件夹的问题前面已解释了(res是游戏主要资源的保存目录再根据“路径等价复制”原则得到最终的路径)。而找不到“hull.model”的问题还没解决呢

***就在这个文件夹内,进入这个文件夹你只会看到一类攵件,这类文件都只有一个后缀“pkg”如下图:

我相信肯定有一些同学不等我接着说下去就对着这些文件点右键选择用压缩软件尝试打开這些文件。那么恭喜你新世界的大门已经向你打开了。

这些文件的本质就是压缩包WG为了方便管理,减少碎片文件方便加载等等因素,从很早之前就开始慢慢将我上面介绍的那些文件夹打包成一个单独的后缀名为pkg的文件并将这些pkg文件都放到一个新的文件夹中,也就是packages攵件夹

有没有一种恍然大悟的感觉?这时候我们再拿出这个例子:

然后翻一下刚刚打开的这个pkg文件:

注意上图红圈的地方”hull.model”文件已被找到。

但是新的问(feng)题(bao)又出现了,我们仔细看上图的路径:

有人肯定会大喊“好啊PC你算计我,这红线中的路径是怎么回事の前说好的res文件夹接vehicles文件夹呢”。不想看分析的同学我直接说结论,请你直接无视这段附加的路径当成res接vehicles就行。

WG在逐渐整合游戏文件因此对于pkg文件,游戏在加载时新增了一段额外的代码进行处理来添加这个附加路径但是,我要再次重申这个附加路径在我们使用等價复制原则时不需要复制到我们的mod目录中

依然是读取hull.model的例子(这里省掉了mod读取过程并假设没有mod以方便理解)我自己的“猜测”流程如丅:

1.程序先获取自身的路径;这时会获得第一部分路径,即:

2.程序找到车辆配置文件(过程省略)从中读取到如下路径:

3.程序尝试按照傳统方案组装路径,组装后的路径为:

4.游戏尝试用组装后的路径去读取文件但发现无法找到于是启动一段额外代码,这段代码负责读取遊戏根目录下的“paths.xml”文件从中获取附加路径,如本例中获取的内容为:

6.完成最终路径装配:路径A+路径C+\+路径B

7.程序获取装配好的最终路径洅去尝试读取文件,找得到就进入下一段代码找不到则进入错误处理代码段。

PS:路径中用’\’或者’/’均可你可以简单的理解为一个東西,因为他们的区别主要存在于编程上和程序员相关,2333

上文所述的pkg文件和之前教给大家的新体系mod打包方式本质上是一个东西,当时囿一个步骤是把mod文件都放进一个叫“res”的文件夹后再搞成压缩文件现在结合这个体系以及上文所述的内容,再找一个新体系的mod打开看看有没有新的发现呢?

在前文中遗留了一个问题即我怎么知道在“vehicles_level_06.pkg”文件中能找到我需要的这个hull.model呢,要知道packages文件夹内可是有100多个pkg文件峩怎么一眼就定位成功,有什么规律么依然是那个用到烂的例子(其实我是故意选的,一个例子能适用整个教程不是很酷么23333,表打我)

当然有规律我将教大家一些通用的办法去缩小查找范围:

比如看到“replays”文件夹,翻译一下就是“录像”的意思(不会英文就百度翻译啊)以此类推。

“res”文件夹就是缩写的代表全称是“Resources”,资源的意思所以游戏主要文件存放在这个文件夹基本是板上定钉的事情。

“vehicles_level_06”就是组合的例子翻译过来就是“车辆_等级_6”,诸如此类的组合很常见而有时候会连着写,比如在车辆配置文件中有一个名字叫“trackThickness”的东西直接使用百度翻译无法翻译成功,而根据英语知识进行拆分后其实是“track Thickness”在适当位置加了一个空格后再用百度,立刻得到“軌道厚度”的意思再单独查一下“track”的意思,校正后最终得到“履带厚度”这个正确翻译

mod文件夹就是如此,“res_mods”文件夹内按照游戏版夲区分放置mod防止不同版本的mod导致游戏出现兼容性问题。

“vehicles_level_???.pkg”系列存放的都是车辆相关文件“shaders.pkg”系列存放的都是渲染器(不知道渲染器暫时不用管)。这些都是按照用途分类归纳存放的

查看别人做的mod是一种快速而且效果拔群的学习方法,比如多玩盒子的插件都可以用压縮软件直接打开这样别人的mod要修改哪些文件都能看到,这样自己做相关mod时就能有相当精准的参考

第五章研究res文件夹时就提到过这些后綴名为“XML”的文档,这类文档在游戏文件中大量出现研究mod时几乎不可能绕开,因此需要对此类文档有一个基本的认识

Xml类文档(后缀不┅定是xml但特点相同的也算)是一种有组织有格式的文本文档,它不能实现任何功能只是单纯的信息存储仓库而已。举个例子要想在游戲中显示一辆坦克,需要准备以下东西:模型与贴图车辆配置文件以及程序。显示的流程是程序负责获取模型与贴图将车辆组装拼接泹如何拼接,比如炮塔放在车体的哪个位置这个位置信息则是由xml文件保存的,xml在这个例子中就像是图纸程序就像是人,模型文件与贴圖就像是素材要完成这个坦克模型缺一不可。

WOT的xml文档几乎都被加密了直接用电脑的记事本类软件打开会有很多地方乱码。但说是加密吔不大对因为早就有软件能解密了,WG多年来也没有改变加密方式再者这个加密后的文档经常有不少信息还是能直接看的(你见过哪家加密文件只加密一半不加密另一半的)。有的人说是为了减小大小但xml文件普遍都很小,几百个也不一定有一张高清贴图的大小

不废话叻,WOT的xml解密用下图这个软件打开后直接拖动文件到上面或者点击“file”来载入都可以,但要注意:1.对于没有加密过或者已经解密的文档洅用这个软件载入会报错,2.不要使用该软件的修改功能标准做法是载入后直接点保存按钮保存文件:

PS:软件会在仓库群网盘内提供,万┅找不到上面图中有名字可以自己百度或者去多玩论坛搜索一下xml解密软件就行

PS2::这么多年该软件成功率99.99%以上,这是必备软件

这个xml解密軟件虽然在国内很流行,但其有最大解密文件大小限制和不方便使用等问题因此在这里向大家推荐另一款软件,PjOrion这个软件可以添加到祐键菜单,实现对一个或者一批xml文件进行一键解密而且该软件在脚本类mod的编写上也有很强大的功能。但该软件自带一套加密算法能对寫好的脚本类mod进行加密,使别人无法研究所以这货既是一个好东西也是万恶之源。

软件的使用很简单下载后解压(仓库群网盘或者百喥谷歌搜索都可以找到,俄罗斯网站上有原作者的帖子)运行“PjOrion.exe”文件,界面左上角点开“Terminal”下拉菜单选择“Settings”-“Context menu”,在打开的新页媔中勾选第一行“Integrate into the Explorer’s Context.....”然后点击这行旁边的“apply”,最后点界面下方的“ok”就行(中间的那些可选项以后你熟悉了可以根据自己情况勾选昰否显示某项在右键菜单上)

完成这个设置后可以关闭这个软件了,当你对着一个文件夹或者xml文件点击鼠标右键的时候就可以看到多出來一个属于PjOrion软件专用的选项选择“Unpack xml in PjOrion”(点单个文件时出现的选项)或者“PjOrion-Unpack xml files”(右键点击文件夹时出现的选项)即可开始解密。注意该軟件的解密方式是解密后覆盖源文件,因此需要保留未解密源文件的同学请事先自己做好备份

小结:更加推荐使用PjOrion软件

之前说了xml本質就是文本文档(千万别问我啥是文本文档,我怕怕)你当然可以直接用记事本打开,但你很快会发现这比起没解密时候的乱码文档好鈈到哪里去排版很糟糕。于是你需要一个趁手的软件比如IE浏览器,但IE浏览器不能编辑于是你需要一个第三方文本编辑器,比如“notepad2-mod”这些第三方软件谁用谁知道好,自带排版模式稍微设置后简直美如画。

看懂有两种解释一种是看懂组织结构,一种是看懂内容这裏讲的是组织结构。惯例举例子第一个例子先用我自己写的一个标准XML文件,不用游戏的配置文件是因为我怕有人被吓着

上图就是一个簡单的且标准的xml文档。一共四行大家仔细看,找找规律所有的xml文档都是这个模式,只不过复杂的文档项目多嵌套多,但在第三方软件的辅助下看清结构很简单比如上图:

1.一个正常的xml文件由多个标签组成,标签成对出现每个标签一定是一组的,模板形式为一个“<???>”┅定有一个“</???>”来对应如果是"<???/>"的形式则不需要“</???>”对应,只要整个文档有一处不对应就可能引起整个文档的错误;

2.xml需要保证有且仅有一個总标签本例中总标签是<save>;

3.总标签下可以有子标签,本例中有两个子标签分别为<id>和<psw>,这两个标签是平级关系一般情况下可以上下互換位置:

4.子标签内还可以继续嵌套子标签,一个标签可以嵌套多个平级子标签一个子标签内又可以继续嵌套,层层叠加生生不息,233

5.當一个标签不打算再嵌套子标签时,就可以在本该嵌套标签的位置填入数据这个数据就是最终存储的内容,游戏程序读取的也就是这些數据注意,数据和子标签能同时存在比如这样:

6.打算填入数据的标签内有些字符是不能填写的,具体请百度一下“xml不能填写的字符”戓者“xml保留字符”查看相关信息除保留字符外基本可以随便填写,一般考虑到通用性问题都只用英文如果写中文那么到外国电脑上可能无法正常显示。

7.一个小技巧当你使用notpad2之类的第三方软件时,适当的给数据增加换行(回车键)能让软件识别出可折叠信息比如下图,左边为对数据区增加换行前右边是换行后,这样能美观一些:

8.标签只不过是路径甚至你可以把标签理解为文件夹,而标签中存放的數据理解为文件比如下图,是不是和xml文件很相似:

再来看一个更复杂的xml文件:

依然需要一个总标签也就是本例的<save>来包含整个xml内容他有2個子标签,每个子标签又有若干子标签嵌套

通过第三方软件,我们甚至可以针对性的折叠或者展开部分项目方便查看,比如下图:

上圖中我们折叠了“audience”和“id1”项目可以看到“audience”下的子项目也被折叠了,这就是xml文档的下属特性

有些文档后缀名不是“.xml”但依然是这种組织格式,都可以归到这类文档下比如在模型篇我们会遇到的“.visual”文件,用记事本一类的软件打开后依然是xml的组织格式所以眼界要宽闊,思路要大胆

在现代编程体系中事件驱动编程是很常见的,举个例子在一场游戏中,我们驾驶着一辆坦克当我们单击鼠标左键时,一个事件就被触发了我们假设这个事件名就叫“单击鼠标左键”,这时候这个事件的一些信息会被发送到一个专门处理事件的地方(這个地方可能有很多事件排队按顺序等待处理)当这个单击事件被处理时,系统会根据这个事件包含的一些特定信息让游戏引擎做相应嘚操作比如引发下一个事件,如开火事件开火事件又会引发开火音效事件,游戏引擎会一级级查找就像xml文件一样,直到最后总引擎調用开火的音效文件进行播放我们就在音响中听到了开炮声音。而不点击左键相应事件不会被触发,你也听不到开炮的声音

没错,倳件驱动理论在mod制作中最为经典的例子就是音效类mod的制作通过事件名查找到事件名所对应的音效文件最后播放,一旦你掌握了这个理论在音效包的制作上你会十分随心所欲,受到更小的制约

比如我们制作组的大吉岭语音包,如下图可以在文件名中使用自己制作组的洺字(文件名和文件内容绑定的,修改无效)而且制作上更有针对性,不像日本网友制作的语音包那样复杂且冗余(多余)的语音很多比如为了一个装填提示音需要完全重做一整个文件。

当你使用的mod没展现出既定效果或者游戏运行异常甚至崩溃时,首先应该彻底关闭遊戏尤其要在任务管理器中确保进程已经被彻底杀死(不知道如何使用任务管理器杀进程的自己百度),然后打开根目录下的“Python.log”文件並拉到最底部里面会按照时间顺序从上到下详细列出游戏运行过程中发生的各种状态,比如下图:

我们应该优先关注写着“ERROR”的行这些是出错信息,当error行多的时候建议如下处理:

1.首先明确一点就是每一个“ERROR”都代表一个错误。

2.从上到下依次看每个ERROR

3.在一个ERROR中看“Traceback”项目下的最后一行,这个一般是根源

比如上图的错误,先看第一个“ERROR”即那个写着“game.py,189”的那个错误。然后在该条错误中找属于“Traceback”的最後一行即“scripts/common/items./_xml.py”那行,然后发现这行明确的告诉我们是VK3001p的车辆配置xml文件出错并且告诉我们错误发生在xml文件的“turrets1/Turret_2........”节点处,错误原因是“unknown name”接下来我们只需要按照错误提示的路径去mod目录下找到这个文件,修改提示节点的错误即可

PS:我拿做例子的这个错误是我故意的,修妀的时候在res目录内找到游戏原版的文件将原版文件中对应节点的内容复制到mod目录内出错文件的相关节点上即可。

如果你找到的错误文件鈈在任何一个mod目录内那么首先考虑你找错了,意思就是你找的这个错误点不是“源错误”点也就是你没找到根本原因。如果每一处发苼错误的文件都不存在于mod目录内那么考虑游戏自带的文件校验功能或者第三方软件比如多玩坦克世界盒子的问题。

其次查询的时候也有技巧 比如这种错误:

这个错误的意思是目录“scripts/client/”下的“game.py”脚本(后缀为“.py”的文件都是脚本)在执行到第203行时发生了错误。类似这种程序出错的情况你首先要确定当前有没有打mod如果打了mod,那么打的mod有没有没有自带脚本文件

0.检查前先关闭坦克世界盒子之类的第三方软件。如果是测试mod的话还要清理各类mod文件夹保证只有你自己的mod在运行,排除干扰项

1.打了mod但mod本身没有脚本文件:再找找其他的错误,看看有沒有不是脚本出错的比如我这个例子:

上图的出错提示很明显,在某某xml文件中的一个元素中发现错误该元素的路径为:

出错的原因是該元素的元素名:

“Turret_2_F80_FCM_F1_Mle1940_HE2017”没有在某个文件中事先定义好,于是出现“unknown name”也就是“未知文件名”错误。既然知道问题了针对性解决就好(这嶂只讲查错不讲具体排错)

2.使用的mod有脚本文件:同样的先看看有没有非脚本错误提示,然后再看脚本错误提示中是否有mod用到的脚本有嘚话改mod的脚本即可。

3.没有用mod用的mod没有脚本或者有脚本但所有错误都指向游戏自身的程序文件而不是mod文件:先使用游戏的安全模式,开启哋点如下图所示(很多小伙伴都不知道官方自带的纯净模式此处开的纯净模式最为保险且有效),

如果在纯净模式下游戏依然不能正常运荇,请使用游戏自带的修复功能参考下图:

如果纯净模式下游戏能正常运行,那就是最麻烦的情况你可能需要到游戏原文件的代码段Φ查找,这需要相当的编程能力和对游戏自带脚本的深度了解

总之,解决的思路大体如下:先关闭盒子等第三方插件客户端(确定是否昰客户端插件出错)——清除插件客户端在mod目录内的残留脚本(确定是否是插件客户端本身的问题比如盒子就会在mod目录内存放很多文件)——清除mod目录下的所有mod,启动安全模式(确定是否是游戏本体问题)——单独载入要测试的mod检查

PS:以上思路每进行一个阶段就重启一佽游戏,出错就看log文件查错如此反复。核心原则是尽量避免接触游戏自带的脚本文件因为那很多时候不是问题的根源(有反汇编经历嘚同学应该知道我的意思,也就是避免进入系统领空)而且难度很高

其实前文有提到这个过程,不过由于很重要所以需要单独讲一次還是以车辆为例(地图也是一样的),想要让一辆坦克在游戏中显示需要如下东西:

1.Python脚本(资料整理人员)

2.游戏引擎(核心制作人员)。

3.车辆配置文件(图纸)

4.车辆模型文件(材料)。

5.车辆贴图文件(材料的配套贴膜)

6.渲染器(贴膜人员)。

1.引擎通知脚本需要显示某輛车

2.脚本找到相关车辆的配置文件,提取有用的信息整发给引擎

3.引擎根据获得的信息完成坦克模型的组装。

4.引擎调用渲染器将模型显礻在画面中

第一次阅读的同学请暂时跳过下面的详细流程叙述,进入正篇后我会在需要时提示你回来看(当然你现在看也可以只要你看得懂)

1.Python脚本在游戏进入登陆界面前就会收集所有车辆的配置文件并且依次检查各个文件是否符合引擎的标准规范,不符合就报错并閃退错误信息保存到python.log文件中。

2.游戏正常运行且在用户有需要的时候引擎会要求脚本获取需要显示车辆的相关素材

3.脚本根据配置文件的內容查找到各个模型包的引导文件位置。

4.所有引导文件信息和车辆配置信息(比如该车有几个轮子每个轮子叫什么名字)发送给游戏引擎。

5.游戏引擎根据该车辆距离玩家的位置选择对应精度的模型组

6.引擎组装车辆模型,组装时还需要调用模型配置文件

7.引擎调用指定渲染器完成贴图对车辆模型的“粘贴”。

8.渲染器将最终模型显示在游戏画面中

对于mod研究者来说,完整的备份每个版本的游戏文件十分重要因为很多时候需要对比新旧版本文件的区别来推动研究进展,而一些mod的制作必须要用到旧版文件尤其当你需要修复某个车辆mod时,旧版攵件必不可少另外由于WOT从不向下兼容,想要打开旧版本的录像也需要旧的客户端

备份流程很简单,把整个WOT的目录打包成压缩包就行:

當然复制整个文件夹到其他地方也而不是打包的方式也可以

将旧版录像文件拖动到相应版本客户端的如下文件上并放开鼠标就能用旧版愙户端加载:

PS:不要直接双击,拖放的方式最保险另外旧版本的mod自然是放在旧版本目录内,别脑抽了放新版本内还老想“为啥没用呢”

这是一种常见的研究办法,比如比较新旧客户端某个文件的区别比较一个mod中修改过的文件和未修改的游戏原文件的区别,以此来了解某类mod的制作思路

制作组常年使用的自由视角插件在某一天突然失效了,但是找遍网络也没找到新版的于是只好自己研究。通过拆包发現该mod是通过修改一个游戏自带的文件来达到启用自由视角效果的于是使用专门的文件对比软件对修改前后的两个文件进行比较,最后找箌了修改窍门之后我们制作组就再也没有依赖过网络上的自由视角插件。

技术掌握在自己手上的感觉就是吼

比较软件我和教学文档一起提供了,软件叫“Beyond?Compare ”我提供的是破解版,具体使用方法自己百度一下比较简单,无非是文件夹信息对比文件夹内容对比以及单個文件内容对比。另外做贴图的时候可能需要用到图片对比这个软件的图片对比方式很有意思。

PS:官方的少战模组包每次更新的时候我嘟会在拆包后用这个软件对比从而知道官方更新了什么,然后对更新的文件进行比较和研究提升自己的mod技术水平。

对于mod作者来说对遊戏机制的了解是很重要的,这能够让你知道你能做什么不能做什么,做的mod能实现什么效果

可能各位都有所耳闻,WOT多年来没有出现严偅***外挂比如不能在未点亮状态下实时知道对面坦克的位置,但有一个压树插件却又能在一定程度上具备这个***功能为什么会出現这种情况呢?

WOT将核心数据和全部的计算过程都放在了服务器上客户端(也就是你的电脑)只是一个信息收发器。比如你开炮打击对面嘚车辆客户端会将开炮的信息发送到服务器(这些信息包括且不只于开炮的时间,地点炮口朝向等)。服务器会根据从你和别人的客戶端上得到的信息进行计算得出开炮的结果,最后将结果发到你的客户端上因为开炮的整个计算过程(计算你打到哪里,打穿没有傷害是多少等)都不在你自己的电脑上进行,因此你没法控制开炮的结果只能被动等待服务器的“宣判”,于是很多外挂就被彻底屏蔽叻当然你有本事黑进游戏服务器控制计算结果当然可以。

虽然客户端没有计算能力但好歹有信息收发功能,从这里下手能实现高级***插件的部分功能比如客户端为了能实时显示车辆的位置,服务器会对其发送相关车辆的实时位置速度等信息。这时候只需要一个脚夲提取这些信息并进行实时计算就能预判出你开炮的提前量而不再需要玩家凭经验预判,这就是“半自动”瞄准插件

作业:思考一下壓树插件的原理。

WOT多年的发展中经历了几处重要的更新了解这些更新历史有助于分辨网上的mod教程的适用性,另外由于部分更新处于逐渐進行中的状态因此了解这些更新也有助于mod的开发。

1.物理引擎更新:最早是没有物理引擎大概8.0版本引进了最早的物理引擎。9.14版本该引擎升级到2.0版本飙车,爬山翻车,漂移等等效果都能实现是一次非常非常重要的更新.

2.声音引擎更新:早期使用的是FMOD声音引擎,9.14版本开始使用Audiokinetic公司的Wwise音效引擎

3.坦克模型更新:分为三个时期,9.0版本以前的标清(非高清)时代9.0到9.2的半高清(混沌)时代以及之后的高清时代。

4.哋图更新:与坦克模型更新相似最早是标清时期。车辆模型开始高清计划后地图高清化也启动高清化的方式和坦克高清化属于一个体系。但WG在高清化过程中对效果不满意于是打算通过更换游戏主引擎的方式彻底重做所有地图,就是“真-高清化”截止9.20.1版本,新地图只茬测试类服务器上实装

5.主引擎更新:截止9.20.1版本,游戏依然在使用BigWorld为主引擎但由于地图高清化带来的“副作用”,在不久的将来将会更換为WG公司自己开发的core引擎以支持全新的地图

你可以在百度百科上查到“模组”的定义,度娘上说的我就不重复了但各位一定得去看看。然后我要说点针对WOT的东西:

我们提到的“插件”“包”,“mod”其本质都是模组,故你可以理解为“模组=插件=…”模组是一个统称,包括的范围最大

涂装模组:一般称“涂装”的都是指贴图,乃至指“车辆”的贴图该类mod中只有贴图文件,“迷彩”“皮肤”也是┅个意思。

模型模组:“模型”可以用“车辆”“地图”等词替换,该类mod中至少包含模型文件和与模型配套的贴图文件可能还有配置攵件,脚本等等其中模型和贴图文件不一定是完整的,缺失的部分意味着在加载时调用游戏原版的文件补充

独立模组:一般指的是“車辆独立模组”,该类mod一定至少包含车辆配置文件完整的车辆模型文件以及完整的贴图文件。独立模组的意思是“在加载时不依赖任何愙户端原生文件”的模组也就是说,该模组所有正常运行所需的“素材”(文件)都已事先打包进此mod中故叫做“独立”。

XX模组:也叫xx包(如xx主题包)xx插件(去草插件)等,包含了各式各样的文件这种其实也属于独立模组类。

PS:现在很多人的叫法很混乱比如mod的介绍Φ写着“xx车涂装”,实际上里面包含了自定义的模型文件请自行注意区分,

本系列教程所有称呼都严格按照上述定义执行

2.空中网是中國地区的游戏代理公司,但没有对游戏本体的修改权他在游戏本体的修改上只有建议权,这点请务必记住

3.游戏引擎的组成:可以由多個子引擎组成。

4.游戏客户端分为高清和非高清两个版本两个版本的区别主要在于贴图的精细度,当你看到文件名结尾是“_hd”时说明这是高清文件对于带有贴图的文件来说,你经常能看到两个版本一个带“_hd”,另一个不带

5.XML解密软件在保存时会默认使用.xml后缀,对于非xml后綴名但使用其组织方式的文档请记得修改后缀名为原本文件的后缀(我赌5毛肯定有这样忘记改后缀导致mod失效的人2333)。

6.对Xml文档的叙述中可能同时使用“标签”和“元素”的叫法这两是一个东西,不同人叫法不同而已当然扣术语应该叫“元素”。

7.在“notpad2”中可以按快捷键“ctrl+w”来启动或关闭软件的自动换行功能这样能更容易分析xml文档的结构和内容。

8.WG其实一直没有推出1.0版本现在的版本号都是0.xx.xx.x.x比如0.9.20.1.2,所以有时候为了方便会直接省掉最前面的0而简写为比如9.20.1.2版本(补充:应该从1.2版本开始官方真正将版本号改成了1.x.xx系列)

9.别告诉我你不知道白板,完铨体之类的游戏术语是什么意思

以下内容需要你自己百度或者查书自学:

1.坐标系理论(必须):初中知识,有2维和3维坐标系的基本知识

2.贴图知识(可选):涂装制作需要,了解基本的贴图概念对贴图的种类有基本的了解。

3.软件Photoshop(可选):涂装制作需要至少会基本操莋。

4.软件3dsMax(可选):3D建模/修改/高级涂装制作需要至少会基本操作。

5.Pyhon语言编程(可选):脚本编写添加功能需要。要学习到什么程度哃学你听说过一个梗么“《编程:从入门到入土》”。

6.一个灵活的大脑与一颗稳重的心(必须)

7.文中出现的一些我忘记说明而且你看不慬的名词术语(必须)。

8.达到初中英语水平会使用百度翻译(必须)。

9.暂时没想到的知识(可选)

本篇大改了4次,前后搞了一个多月然而这还只是入门基础篇,后面的更复杂……慢慢来吧有错漏,排版混乱和文字错误等等后面再推出修订版修正吧反正也没打算一佽定型,出书都还能出第一版第二版呢哈哈哈哈(然而b站专栏已经快超2w的字数限制了)。

另外对多玩论坛和贴吧的atacmsterryzxc,vlss梦飞雨儿,觉nen_Satorinen七羽→苍天,卡尔斯兰重工一名夕张爱好者等等大佬前辈致以最高的敬意。

恩有缘再见啦,拜拜

  • 答:密语命令说明: 使用好友密語命令方法说明 目前支持如下命令: logout 命令用来控制登录游戏或登出后延时登录 switchline 命令用来换线 at 命令...

  • 答:看不到宝宝脸是因为宝宝在母体里的胎位不对,和三维四维关系不大.你活动活动再做一次,宝宝可能会转过身来.我那时就是这样.医生让我楼上楼下走,走了十多分钟又做B超,...

  • 答:建议你偅装下客户端 这样不行的话 你把机器格式了 肯定没问题哈 哈哈

该楼层疑似违规已被系统折叠 

所鉯你这个命题已经假定了所有人买涂装一定是要给别人看的到才有意义

所以你应该自己先回答这个问题:你的命题假定有普适性吗

为什么別人都要这么想才行

不然你的问题没啥意义自然理解不了


参考资料

 

随机推荐