文明6地图修改教程

avatar
关注

Epic发放文明VI已经过去挺久了,白嫖党现在第一局应该差不多玩完了吧,那么是否对游戏生成的地图不满意想要自己修改地图呢?尤其是像我一样强迫症的,106*66这么个大小实在是太让人难受了。

首先我们要用到的工具是:SQLlite Expert Personal。直接百度搜索下载就好了,图标和启动界面长这样,版本无所谓。

=========================

首先讲讲故事,不想听故事着急学怎么改地图的跳过这段直接找下一个分割线。

我也是个白嫖党,也就玩了这几天,反正我是一局都没玩完过,目前热衷于抢奇观,最佳记录是用老秦抢过15个奇观,当然科技和领土就远远落后了,只能苟活到轰炸机出来,结果发现根本就推不动了,就放弃了。

要自己改地图的想法是发现AI是tm无缝不钻的时候,我就剩个1*3形状的三个地块没纳入领土,然后AI一个开拓者就钻进来弄了个城市,实在是吐了。无论我怎么玩,无论是我领土内还是领土外有没有纳入的地块,AI都会去弄个城出来。然后我就会直接宣战把那个城打下来再夷为平地,结果在自动扩张完成之前AI又进来个开拓者。反正随机地图无论怎么玩都不可能不宣战的,最后全是一排谴责。

要改变这个情况,并且让自己玩的舒服点,就得自己改地图。

作为一个程序员,遇到任何不认识的文件都要先用npp或者sublime打开瞅一眼,好的,打开.civ6map文件。

好家伙,明摆着是SQLite 3格式的文件,他们居然用数据库来存地图,那真是太开心了,想怎么改就怎么改咯。我第一个弄出来的自定义地图是一个636*11的究极长条状地图,相当于把二维地图给弄成了一维地图,只需要考虑左边和右边就行了。降维打击还是很舒服的,两个城市在一边拦着,AI的开拓者就穿不过来了,另一侧的地盘就全是我的了。

作为资深强迫症,我又弄出来一个100 * 80的地图,用海和山给分割成了5 * 4一共20个地块,然后我自己占一个地块舒舒服服地抢奇观也没人来干扰我。

我接下来准备试一下超小地图放20个领袖来玩的感觉,因为大地图实在是tm玩不完,那个矩形地图我算了一下推光全图得上百个小时,没意思。

==========================

好的教程开始,打开SQLite,把.civ6map拖进去,或者右键.civ6map文件点打开方式,然后选择SQLite也行。打开之后的界面是这个样子。

左边一栏就是这个数据库的所有表,右面大片区域是用来编辑数据或者写sql语句的。

第一个要看的表是Map,打开之后里面的内容很容易就能猜出来。

width和height就是地图的宽和高,这两个数在限制范围内是随便改的。限制范围是:width不能太小,因为那种宽度会小于一个屏幕的地图会导致显示重复,加载地图的时候会直接报错。然后width*height不能太大,100 * 100就已经是非常非常大了,再大了开始游戏之后就会奇卡无比,毫无游戏体验。

然后是ModText表,这个表里可以改地图名字和描述,这个每个地图都要改,不然在开始游戏选择地图的时候都会显示的是未命名的地图,没办法区分。

改了名字和描述之后,继续看Plots表,这个表中存储的内容是每个地块的类型,比如平原、草原丘陵、冻土山脉等等。

存储的顺序是一行一行存储的。比如一个100*80的矩形地图,这个表的前100条记录就是地图最下面一行从左到右的地块,第101到第200条记录就是下数第二行从左到右的地块,以此类推。这个表有什么用呢?对于会SQL的同学,可以用sql语句来批量修改地块,比如第一行全部设成海洋等等,就不用在地图编辑器里费劲的一个个画了。我这就说一下上面那个某一行某一列(或者某几行某几列)全部设成同一类型的地块的语句。

UPDATE PLOTS SET TERRAINTYPE='TERAIN_XXX' WHERE ID...;

这条语句里terrain_xxx意思是你想要设成的地块名字,比如terrain_ocean就是海洋,terrain_grass_hill就是草原丘陵,然后后面的ID...就是id要满足的条件,比如如果要最下面第二行全是海洋,就写ID100 and ID <=200,以此类推。

如果要一次指令多条语句的话,每句话后面要加分号,单条指令加不加都行。另外,注意语句中不要有任何中文字符,所有字符都得是英文的。

这个时候再来说一下改map的width和height的事情,由于数据是一行一行从左到右存储的,那么假如原本有一个100 * 80的地图,我把它修改成200 * 40,那么就相当于原本的80行,每两行拼接成原来的一行。如果100 * 80被修改成了96 * 81这种奇奇怪怪的数字,那么地图就会乱掉,不建议这么乱改,看起来的效果跟随机地图差不多。另外,如果修改之后的乘积小于原来的乘积,那么plot表中后面多出来的数据就不会出现在地图中,反之如果修改之后大于之前的,那么多出来的格子都会被默认成草原平地。

有了这些操作之后就该关心一下起始位置的事情了。首先结论是令大家失望的,无法通过直接修改这个表来确定每个领袖的起始位置。这是我各种尝试之后通过报错找到的脚本文件里发现的。确定起始位置这个操作的脚本文件是在Program Files\Epic Games\SidMeiersCivilizationVI\Base\Assets\Maps\Utility文件夹中,前面是C盘还是D盘取决于安装时候的选择。这个文件夹中有一个AssignStartingPlots.lua的脚本文件,我不会lua,只能大概看懂每个函数在干啥,反正起始点的选择是要通过计算每个地块适合作为起始地块的程度,然后排序之后对应到每个领袖上的。具体能不能手动设定,能得话怎么设定,这个我得多花时间才能搞定,毕竟这一个脚本两千多行陌生语言的代码,短时间内没法研究明白。或者有精通lua的大手子读一下这个代码,看看有没有自己手动设定的方法。

其实如果会lua并且读懂那些脚本代码的话,文明VI就基本相当于开源随便改了,我也是服气。

觉得这篇教程有用的话点个推荐和转发喔~我好继续研究那坨lua代码

发布于浙江阅读 8831

全部回复

discusser-avatar

不会走下路的ADC

· 湖北

111我想白嫖🏄

亮了(0)
回复
discusser-avatar

卡列卡列达

· 广东

不是 现在文明6门槛这么高吗 白嫖还得学这些😂

亮了(0)
回复