| 正宗 |
|
|
|
|
嘉宾 |
等级:哈洛加斯 |
积分:8431 |
金币:15017 |
发贴:2504 |
信用:0 |
注册时间:2008-01-04 |
IP:119.162.*.* | |
|
第(1)楼,发贴时间:09-01-15 18:40 |
|
三、地图的生成 地图的生成同样有两种方式。
有时候你会看到预先设置好的地图,它们永远不会变化;而更多情况下你会遇到随机产生的迷宫地图,每次重新进入游戏都会发生变化。 一些场景的地图是从预先设置好的几个地图样板中随机挑选的,例如Act1和Act2的城镇;一些迷宫类的地图则会包含预先设定好的大块区域,或者从一些预先设置的区域中随机挑选,例如火焰之河场景地图中的熔岩。固定不变的场景如下 Act1
洞穴二层
遗忘的高塔第五层 (两种布局)
内侧回廊
大教堂
崔斯特瑞姆
地下墓穴第四层 Act2
蝮蛇神殿第二层
女眷住处
皇宫监牢
术士的峡谷
都瑞尔的房间 Act3
下水道第二层
库拉斯特堤道
崔凡克
憎恶的囚牢第三层 Act4
混沌避难所(入口处和封印处各有两种布局) Act5
尼拉塞克的神殿
亚瑞特山脉巅峰
毁灭的王座
世界之石大殿
随机地图的生成规则,要比预置地图复杂的多.下面我们来着重介绍一下随机地图的生成.
生成随机地图的这一过程,有两个不同的规则,根据不同的场景来选择不同的方法.一个是地面场景,另一个与之相对的就是地下场景. 首先是地面场景
地面场景的生成相对于地下场景来说,要稍微简单一些,因为对于地面场景来说,提供的活动空间要更广阔一些,没有地下场景中那些房间,墙壁的遮挡(地图边缘的墙除外).所以在地图块的拼接上,显得更为自由灵活一些. 地面场景的ds1文件,与地下场景相比,也有着不同,它们的构成方式为"单词+数字+字母".比如edge1b.ds1,单词用来注释,edge表示这是构成地图边缘的地图块文件,数字是用来表示方向,1表示是组成地图的南部边缘,2表示组成地图的西部边缘,3表示组成地图的北部边缘,4表示组成地图的东部边缘,5表示组成地图的西南角,6表示组成地图的西北角,7表示组成地图的东北角,8表示组成地图的东南角,9表示该ds1文件西南角为障碍物,10表示该ds1文件西北角为障碍物,11表示该ds1文件东北角为障碍物,12表示该ds1文件东南为障碍物.最后的字母表示这一类地图块文件中的数量,同样是edge1.ds1文件,就有a~e5种,保证了地图的边缘不相雷同.同时系统随机调用wild.ds1等文件,填充好地图中间的部分.这样一个光秃秃的地图就基本设置好了.
随后系统要进一步的修饰地图,在Lvlsub.txt中挑选出可以在该场景中出现的修饰图像(比如树,石头,水坑等等)随机放置在地图中,选中几率值取决于ProbX,修饰图像中的图块数量是由TrialsX的值决定的,但MaxX决定了它的上限.如果该修饰图像被选中,系统要在1~TrialsX之间选取一个随机数A,之后再在这个随机数A与MaxX之间取较小者B.然后在该修饰图像包含的ds1文件中,随机抽取B个ds1文件组成该修饰图像放置在地图中,同时覆盖掉该处原先的ds1文件.最后系统要调取一些在该场景固定出现的ds1文件(比如该场景的出入口,或者固定金怪所在的地图块等等)同时覆盖掉该处原来的文件,来更进一步修饰地图.
这样一个地面场景就基本完成了,再然后就是设置怪物,神殿等等.
接下来介绍的是地下场景
地下场景的ds1文件命名规则是"单词+大写字母+数字"来表示的,"单词"表示需要用到该ds1文件的场景,而"大写字母"的含义为路的方向,"数字"用以区别同一类型的各个地图块文件.举个例子来说,比如"lavaW.ds1"这个文件,"lava"表示了这是ACT4火焰之河的地图块文件,"W"则表示:在这个地图块中,在西边(W)有通道,可以和别的地图块相连接,而其他三面却是墙壁(这里墙壁定义为无法通过的贴图).可以看出这个ds1文件是用在地图的边缘部分.如果是"lavaSEW.ds1"这个文件,说明只有北面是墙壁,其余三面可通行.
系统在调用ds1文件生成地下场景时,需要从LvlMaze.txt中读取Rooms值,来确定组成该场景的最小ds1文件数,不过需要注意的是,LvlMaze.txt中的Room值,决定的是随机地图块的数量,在该场景中固定出现的出入口部分,任务区域的地图块要排除在外,不算在Room值中.然后根据文件名N=S,E=W的原则,来随机抽取ds1文件,抽取的数量不小于Rooms值.使文件名N=S,E=W的原则,是为了保证路口相等,生成的地图是个完整封闭的空间.在地图块的排列过程中,出入口部分和任务区域在排列中,具有优先排列权.可以与之相连接的随机地图块,首先要与它们排列,然后再是其他随机地图块.完成拼接后,地图要完整封闭.如果还有剩余的地图块没有使用,要予以舍弃.于此可见,Room值只是用来决定抽取的地图块数,对于实际出现的地图块数量没有直接影响.
这样,地下也有了一个光秃秃的场景,之后的步骤和地面场景相同了,这里就不再赘述了.
[ 本贴由
正宗 在 04-18 13:37 编辑过. ]
| |