破门而入地图编辑器教程(二):背景图片知识及多楼层地图制作和发布
背景图片知识:
要制作自己的地图,那首先要弄清官方地图里面的各种场景效果是怎么来的。首先看看下面这关的地图场景

在见识过官方地图的场景后,一些初次接触地图编辑器的人也许还想着把自己的地图也放上花花草草,山坡绿地之类的,或是放一架地图中间那样的楼梯,好让自己的地图看上去细节丰富,制作精良。
但他们点开地图编辑器找了一圈之后,往往会直呼:为什么我的编辑器里面没有这些东西!
还是以这关为例,当我们在编辑器里面打开它时,会发现什么呢?

我们可以看到红色的东西勾勒出游戏中不能穿过的边界,而花草和楼梯都不是摆放在地图上的物件,官方地图甚至连墙体都没有。
这说明了什么呢?说明官方地图中各种环境、花草、阶梯之类的东西,都是一张贴图。而凭编辑器本身所包含的项目想制作出什么美轮美奂的场景基本是没戏了。破门而入编辑器的门槛很低,同样它的下限也是。
再提一点,自制地图创建的背景文件格式为tga,而官方地图的地图背景文件格式为dds。一般情况下,dds格式的地图背景文件都无法在编辑器中修改,但它本质上仍然是一张图片。既然是一张图片,我们就可以用到Photo Shops来编辑它。你需要准备好PS并安装dds插件,否则PS无法导入该格式文件。你也可以通过VTFEdit将其导出为tga格式后再进行编辑。

再讲下一块内容之前,请大家先注意看一下这张我从官方地图中改过来的地图,有没有很熟悉的感觉?能看出哪部分是官方地图修改而来的吗?

仔细观察的人不难发现,地图正是改动自官方地图:李的杂货店。

类似这样,通过编辑器,我们不仅能自制地图,我们还能够修改官方地图。
如果你不知道地图文件的具体位置,你可以在编辑器中打开一张地图,什么都不做直接点保存便可以查找文件路径。?:\Steam\steamapps\common\DoorKickers\data\levels\??.xml

直接将xml文件复制到文档里面(C:\Users\Administrator\Documents\)KillHouseGames\DoorKickers\data\levels位置下,你就成功地在自制地图中创建了一个官方地图的副本。
用Notepad++打开xml文件(用记事本虽然也行但是不直观),以新建的一个地图为例,你会看到这样的内容:

地图的各项基本设置都可以看得一清二楚,如果你要清空地图上的一些或全部内容也可以从这里直接删除,注意要保留最基本的内容。如果你打算改变地图背景,记得先创个副本再修改,或是改完了点“另存为”,还要去地图文件里修改路径。
以“李的杂货店”为例,按照路径用PS打开地图文件,你会发现在PS中打开的dds文件会呈现上下颠倒的情况。

你可以先将它翻转过来,修改完再翻回去(图像-图像旋转-垂直翻转画布)。上面我那张改图的效果可以通过修改画布大小(图像-画布大小)或是用仿制图章来复制背景来实现(记得先去编辑器里修改地图尺寸)。这些涉及对PS的掌握因此在这里不细说。如果你不打算搞这些花里胡哨的改动也可以直接保存为tga格式,记得去地图文件更改背景文件路径。
但细心的人可能已经发现了,游戏中我们看见的所谓“墙体”,是直接在背景文件里画好的。而光凭背景里一条黑线自然不可能起到阻隔视线和人物的移动的效果,因此仅仅擦掉它是毫无作用的。如果需要对墙体做出改动,你还得修改阿尔法通道。

最直接的方法就是直接把它全部擦掉,然后花些时间去编辑器里自己放置墙体。
在游戏中打开编辑器,在上方的菜单中点击“帮助”,可以找到很多有帮助的信息,比如按Shift+方向键 可以移动地图上所有项目。如果你在PS中将地图往左下方扩展,就可以用这个方法把所有物品的位置原封不动移到原位,这就完成对原图的扩建了。


多楼层地图制作:
在讲完了关于地图背景的知识和复刻官图的方法后,接下来讲讲如何制作一张多楼层地图。其实很简单,打开地图文件,在第四行位置加入以下代码:
<Storey name="??">(问号处填你要的楼层名)
并在最后的</Level>之上添加</Storey>,就像括号一样,将地图的属性和内容全部包括在内。
地图格式应当如下图:

再次进去编辑器即可对不同楼层进行编辑。注意不要频繁打开地图进行测试,否则再次于编辑器打开地图会出现无法编辑其它楼层的BUG,需要重启游戏才能解决。
另外需要注意,上下楼点的机制是将两张楼层地图叠在一起后自动关联最近的点,因此在设计楼层时,应尽量确保上下楼点的坐标位置接近或相同(以左下角为(0,0)点),否则就可能出现上下楼位置错误的问题。
而如果你希望自己的地图又有二楼,又有地下室,而主楼层在中间该怎么做呢?

首先明确,楼层顺序取决于代码的顺序,代码在前则楼层顺序在下,你需要按照楼层顺序调整代码顺序。然后将文件代码开头的
<Level name="地图名">
修改为:
<Level name="地图名" deployStorey="楼层名">
填哪一层的楼层名,则初始楼层就是哪一层。

关于地图发布:
一般地图可以在编辑器中设置处点击Publish to Workshop发布,发布后再去创意工坊进行细致的介绍编辑,但如果你制作的是多楼层地图是不可以用这个方法的,会存在背景文件丢失的问题。
那应该怎么解决呢?
首先在游戏文件中的mods文件夹里新建一个你的mod文件夹(?:\SteamLibrary\steamapps\common\DoorKickers\mods),然后在mod文件夹中再新建一个levels文件夹,把地图文件和背景文件全部丢进去。因为我们要发的只是地图而不是mod,所以没必要把不同文件分的那么细,全部丢在一个文件夹也是可以的。

然后在你新建的文件夹下用notepad++新建两个xml文件,分别命名为mod.xml和filesystem_mount.xml

在mod.xml文件中添加以下代码:
<!--
"name" should be a short (and unique) name. Never update it in the Steam Workshop interface, only update through this file.
"image" shows up in-game but also in Steam Workshop. Should be a 512x512 or 256x256 PNG image.
"tags" only show up in Steam Workshop. comma-separated values. preferably one of: "Levels,Enemies,Objects,Replays,Weapons,Armor,Gear,Total Conversions,Interface,Sound,Other".
"gameVersion" leave it as it is in this template (assuming you have the latest game version). It's also shown in-game in the lower left corner of the screen.
When we'll update the game with a newer version, the mod will probably be invalidated and you'll have to update it for the new version.
"changeNotes" only used when updating a published mod on Workshop, redundant otherwise
-->
<Mod
name="MOD名称"
description="MOD简介"
image="MOD封面图片路径(只要填你新建的mod文件夹内路径即可)"
author="作者名"
gameVersion="游戏版本"
tags="MOD标签(一般地图就填levels)"
changeNotes="修改记录"
/>
上面的英文是注释,看得懂的可以对照一下。以我的为例:

先别急着编辑filesystem_mount.xml文件,先去levels文件夹内再新建一个xml文件。
如果你完全按照上面方法走到这一步,你的levels文件夹内应该如下图:

在新建的xml文件中添加以下代码:
<levels>
<level source="data/levels/地图文件"/>
</levels>
回到上一级目录,在filesystem_mount.xml文件中添加以下代码:
<filesystem_mount>
<Maps>
<MountFile name="data/levels/新建的xml文件名"/>
</Maps>
</filesystem_mount>
到这一步便大功告成,最后打开Steam的破门而入游戏的启动项,输入以下代码以发布:
-publish mods/你创建的mod文件夹名
输入以下代码以更新:
-update_published mods/你创建的mod文件夹名
运行游戏即可发布,记得去创意工坊完善描述。

再看看别的DK教程?
(づ。◕ᴗᴗ◕。)づ教程(一):8分钟学习基础、进阶、高端技巧