暗黑MOD信息免费发布,找新开暗黑Mod就上D2sf,绿色简洁,值得收藏!
首页 > 暗黑技术攻略
AutoMap.txt描述

发表时间:1970-01-01 08:00:00

AutoMap.txt  By Red Havoc

 

 

这篇文章里我们准备涉及一个经常给地图制作者们带来烦恼的领域:AutoMaps(自动地图);整治Diablo2中那些地图文件的时候我们有时会遇到一些关于automap的问题,例如:往LvlTypes.txt中的某个场景类型中加入dt1s文件时,或者往游戏中导入新的贴图文件时,等等;在这些情况下游戏的自动地图可能会不显示,或者出现缺口甚至漏掉部分地形,有时还可能显示出错误的元素,比如你想看到一个雕像但游戏却让你看到一堵墙或者一棵树……

 

为了修正以上这些问题,我们需要修改AutoMap.txt文件——一个大概拥有3300行,包含许多数据,看起来庞大无比的文件;不过一旦你了解了它,修改起来将会很简单:在做过一些尝试之后,你应该可以在很短的时间之内制作一张崭新的自动地图,你会发现制作地图这项工作并非想象的那么费时费力

 

在我们学习怎样制作地图之前,我想在这里给出一些关于自动地图如何工作的说明,以及automap.txt文件的功能概要;

然后,我们将逐列的分析automap.txt文件;

这篇文章的最后,我们会看到一些制作新自动地图的实例;包括一个快速有效的制作自动地图的方法,一个从其他场景类型中转换出新的自动地图的实例,以及要想使制作出的自动地图如原版游戏中的地图那样精致,你不可不知的小建议

 

 

关于自动地图如何工作:

我们知道,当角色在游戏中遍历各场景时,自动地图就会随之生成;如果你走在一个地下城里,自动地图会按照比例生成一个显示墙壁、大门、拐角等的缩略图,并且保存你所走过的所有区域的地图;而对于城镇的自动地图而言,每当你首次进入它时地图都会自动全部生成;另外,第二、四、五幕的城镇地图还有一些特殊的地方,下面我们将会提到

 

首先,让我们看看自动地图的图片文件存放路径,解压D2Exp.mpq文件,在以下路径里:

Data\global\ui\automap

我们可以找到两个dc6文件,MaxiMap.dc6(用于平常的自动地图)和MaxiMapS.dc6(用于资料片中提供的缩略版自动地图);二者均为多层次的dc6文件,包含了所有自动地图所要用到的小图标图样,这些图标最大尺寸为16*32像素(缩略版位8*16);我们可以用DrTester或者Dc6Table Tool等工具来浏览这些小图标文件;不过,这两个dc6文件中大约有1500个各种不同的图标,稍后在你自己定制风格的自动地图中选用这些图标文件的话,光是浏览一遍就会非常的……繁琐……

另外在以下路径里,还有一些相关的地图文件:

Act2Map.dc6(在D2Data.mpq文件中)

Act2MapS.dc6

Act4Map.dc6(在D2Data.mpq文件中)

Act4MapS.dc6

ExTnMap.dc6

ExTnMapS.dc6

这些文件就是前面提到的,第二、四、五幕的特殊地图文件,它们与普通场景的地图的区别在于,这里不是由很多小图标图样拼成的地图,而是由一些大型的图样拼凑在一起,因此当你重新绘制城镇地图并且希望自动地图显示正常时,你就必须编辑这些文件

 

OK,现在我们知道了自动地图图像的来源,那么游戏如何得知何时绘制何种图标呢?这就要归结于游戏构图使用的修饰图样了;每种修饰图样都对应自动地图中的一种图标,所以当角色接近这些修饰图样时,其相应的图标就会显示在自动地图上;举个例子:角色在经过第一幕的某个小屋时,这个小屋的墙壁图样对应的自动地图图标组合起来将是一个房子的模样,因此我们接近小屋时,游戏会显示其对应的图标——一栋房子,这个对应关系是由某个txt文件规定的,而如你所知的那样,这个txt文件就是我们正在讨论的AutoMap.txt

 

并非所有图样都有其对应的图标,通常只有一些明显的实物和场景构图需要的部分有,例如第一幕的野外,除了小路和场景构图所需的墙壁等,其他诸如水坑、石头之类均没有对应的自动地图图标

 

 

AutoMap.txt引导文件:

现在我们知道,AutoMap.txt只是用来为各种地图图样指定其相应的图标,因此让我们看看其具体的作用机理,txt的内容可分为两部分,一部分用于定义地图图样,另一部分为该图样指定自动地图图标

 

LevelName:这里填入的值即为该场景类型的名称,场景类型似乎是由硬代码规定的,所以在LvlTypes.txt中加入自定义的场景类型无效,因此这里的值最好是已有的场景类型

 

TileName:这里填入代码,用以指定具体的地图图样及其类型ID,以下是具体代码:

TileName             类型ID 注释

fl                   0    地板(floor)

wl                 1    墙壁左侧(wall left)

wr                 2    墙壁右侧(wall right)

wtlr               3    墙壁顶部下方左侧(wall top lower right)

wtll               4    墙壁顶部下方右侧(wall top lower left)

wtr                5    墙壁顶部右侧(wall top right)

wbl                6    墙壁底部左侧(wall bottom left)

wbr               7    墙壁底部右侧(wall bottom right)

wld                8    墙壁左侧门(wall left door)

wrd               9    墙壁右侧门(wall right door)

wle                10  墙壁左侧出口(wall left exit)

wre                11   墙壁右侧出口(wall right exit)

co                  12  中心物体(center object)

sh                  13  影子(shadow)

tr                   14  树(tree)

rf                   15  屋顶(roof)

ld                  16  左下角(left down)

rd                  17  右下角(right down)

fd                  18  全景下方(full down)

fi                   19  全景不可见(full invisible?)与18成对出现

 

Style:即为各地图图样的主ID,采用十进制计数

 

StartSequence/EndSequence:这两列是地图图样的修饰ID,利用这两列可以定义游戏选取修饰图样的ID范围,例如Start = 4,End = 8,则游戏将使用修饰ID =4,5,6,7,8的图样,这里所有数字均采用十进制;另外,这里的值为-1表示游戏将不使用修饰ID,仅使用前面的TileName和Style列中定义的图样主ID

 

以上四列的值一起定义了该行所表示的贴图文件:LevelName限定了指定幕的指定场景中可能存在的贴图文件范围,然后TileName、Style以及Sequence列分别指定了贴图文件的类型ID、主ID和修饰ID,从而确定了该贴图文件,因为同一场景中只可能有一个贴图文件能同时满足这三个指定值;另外Start/End两列则允许同一行的贴图文件有多种修饰方式,用于不同贴图文件,但在自动地图上显示相同图标的场合,例如多种样式的墙壁

 

Type1-4:注释列

 

Cel1-4:这四列定义了特定贴图文件在MaxiMap(s).dc6文件中所属的层,这或许是生成自动地图时最需要指明的一点:每行可以包含20个图片(用DC6Table编辑图像的话你可以设置每行包含更多的图片),因此第一行为图标0-图标19,第二行为图标20-图标39以此类推;输入各个图标的代码即可知道其隶属的贴图文件

 

设置以上四列实际上是用来为自动地图加入一些随机特性,如果其中有两列或两列以上不为空,则当该贴图文件显示在自动地图上时游戏会随机的从这些列中抽取一个来显示,这种功能主要用于一些包含许多同种贴图文件的大型地图,重复使用一种图标会使游戏看起来死气沉沉,而随机显示的图标将使自动地图看起来花样繁多,更加贴近真实

 

以上是我们关于AutoMap.txt的解说,下面将给出一些制作新自动地图的实例

 

 

制作个性化的自动地图:

现在让我们看看如何制作自己的自动地图,这里我将阐述一些我在编辑自动地图文件过程中所发现有用的方法和诀窍,其中一个就是用来生成一个简化版的自动地图——仅仅标示出该场景/地下城的主要轮廓以及一些有用的地点,这种方法很迅速并且无需太繁琐的操作,所以主要用于工作繁忙而你又不愿意在自动地图上花费过多时间的场合;接下来,我们将学习如何利用新加的dt1s文件将地图填充完整,以及解决一些在编辑地图过程中遇到的小问题;最后,我们将讨论一些高效制作完全版地图的技术及此过程中可能出现的故障

 

首先让我们来看第一种简化版的方法,它基于D2中的所有地图都包含的所谓的“地板”贴图,即可使角色在其上行走/跑动的地方(有些不允许角色在其上行走的地方不在我们的讨论范围),按如下的步骤做:用WinDs1Edit打开一个地图文件,将所有的墙壁和房屋等删除,现在该场景所有的修饰物都消失了,但你可以清楚地看到整个地图的布局——这和我们所想要制作的自动地图效果是一样的:我们可以让自动地图只显示所有“地板”贴图,以构成一个类似于地下城的“地板平面图”的自动地图;当然了,这种方法的局限性太大,比如说在某个地下城里,使用地板平面图无法标示出那些死角,也无法显示一些比较重要的元素,如阶梯、拐角等;但是这种方法用于一些粗略显示还是很有效的,并且无需对AutoMap.txt文件作太多的编辑

于是,你所要做的就是:查找各种地板贴图所使用的ID,打开AutoMap.txt,在你要修改的场景类型下面添加几行,并且在这几行中添入正确的内容;对所有的贴图文件都使用同样的自动地图图标,这样你就可以得到一个差强人意的整体自动地图;对于拐角等特殊元素,我们则需要为其指定相应的地板贴图,并为这些贴图指定对应的自动地图图标,这样它们将也可以在自动地图上显示出来

 

要为D2导入新的地图,TileMaker Tool是不错的工具选择,该工具仅生成地板贴图文件,因此它看起来就是为我们这种方法量身定做的;不过该工具有点小问题需要考虑:请看其生成出的图样,你会发现它会生成很多完全空白(无任何地图元素)的地图块;由于TileMaker是将整个图片转换为许多个地图块文件,因此原始图片上的各个边界、拐角等元素都将被转换,问题就在于:如果你为这些元素指定了自动地图图标,那么你所获取的自动地图将和原始地图不一致,因为自动地图上包含了太多原始地图上所没有的内容;要解决这个问题有以下几种方法:

从dt1文件中删除所有空白的地图块,但这样做很繁琐,并且需要对ini文件进行许多查找并修改的操作

从AutoMap.txt中删除所有与这些空白地图块相对应的行,但是对于大型地图而言这种繁复的查找操作同样很痛苦

最简单的方法就是去TileMaker生成的ds1文件中,删除掉所有空白的地图块;去除了这些空白块,自动地图上就不会显示额外的内容了

·注意,新导入的地图文件所使用的原始图片背景色必须是纯黑的,与D2的默认背景色相同,否则导入后背景效果将非常难看

 

现在让我们讨论下一个问题:我们在第一幕的某个地穴中扩展了几个特殊房间,里面有些特殊Boss或者什么玩艺的那种,我们为其使用军营中提取的地图贴图文件(basewall.dt1),场景是没错了,但自动地图上没有相关显示,为什么?

事实上这只是因为AutoMap.txt中没有为该地穴提供相应的贴图文件主ID接口,军营内所有贴图文件的主ID均为5,但在AutoMap.txt中,地穴仅包含了主ID为1、2、3、4以及21的贴图文件,只要将军营的贴图ID与地穴相匹配,地穴中的这类元素自然会显示在自动地图上

因此为了修正此类错误,我们去AutoMap.txt文件中找到军营(在277-324行),将其中的相关行拷贝到地穴(在426-551行)下面,并使其类型ID、主ID和修饰ID与实际相匹配,OK,事情完成

 

最后一个问题,怎样为某场景添加完整的自动地图文件?或许现在看来这已经很简单了,将各个地图的贴图文件匹配其相对应的正确的图标即可;不过仍然有一些问题需要说明:

首先,尝试着按照暴雪原版的风格去编辑地图文件,为各种墙壁或门使用整齐划一的图标,混乱的显示将导致玩家很快就迷路;为同一个场景的自动地图使用一组同样风格的图标,例如军营中使用棱角分明的墙,地穴中使用歪歪扭扭的石头样图标,等;并且保证各种颜色的搭配合理,比如说,灰色的地牢中使用同样色度的灰色自动地图将导致玩家很难分辨,同时某些特殊地方诸如出口入口之类,用特殊颜色显示出来会使玩家更容易找到目标

·你可以用自己风格的图片去扩展AutoMap.dc6文件的内容,只要在DC6Table生成的表格最后按照正确的尺寸填入新的图标即可;在编译的时候该工具会将其作为新的图层导入进去,并且该值可以被Cel列的值定位

 

 

制作自动地图并不难,但我仍然要在这里指出一些问题,以避免当您实际操作遇到时慌了手脚:有些时候我们会看到同一个地图块上有许多不同图层的贴图文件,如果对其中每一个都指定一个自动地图图标的话,显示就很混乱了,因为自动地图图标可是不能叠放的;不过事实上游戏会在多个图标之间做出选择,只显示类型ID值最高的图标,这样有时在某些贴图文件重叠的区域,我们会看到自动地图上显示出缺口

对于这个问题似乎没什么太好的解决办法,除非你在制作地图块的时候就已经考虑到了这一点;但是游戏生成自动地图的函数是很难描述的,并且最终地图产生出来的效果也很难预测;对于D2原始的那些地图,生成自动地图的方式都是模糊匹配,因此避免了该问题的发生

 

 

以上就是全部的自动地图方面的内容,希望对您有所帮助

上一篇:AutoMagic.txt描述    下一篇:CharStats.txt描述