我也来分析魔兽世界-场景组织(转)

没有办法WOW太经典,当自己碰到问题的时候再回头研究wow发现wow尽然没有问题,暴雪的游戏制作经验让wow一开始就设计的如此讲究,不得不感叹国内游戏同世界设计方面的差异。

由于没有wow的源代码,所有的分析想法都来自与wowmapview这个开源的wow地图察看器,wowmapview的代码写的很凌乱,但很容易理解,好了,我们开始吧!Gogo

wow场景是由一系列MapTile组成,这些MapTile的大小是1600/3 ≈ 533.33m,而每个MapTile又是由 16x16 个MapChunk组成,由此可以计算出每个MapChunk≈33.33m,如图:

在wow中,一个MapTile是有由一个adt文件描述。

比如World\Maps\AhnQiraj\AhnQiraj_29_48.adt文件就描述在xz(29,48)位置的MapTile,每个MapTile都包含了该tile内使用的贴图(引用外部)、模型(引用外部)、wmo(MapObject)、模型实例、wmo实例,所谓模型实例就是相同模型在tile内不同摆放位置、大小、角度的说明信息,在wow引擎中的术语是doodad,即可以随意摆放的小东西,wmo实例类似。为了节省文件尺寸,模式实例、wmo实例是通过index模型、wmo的方式保存的,同顶点索引类似。

每个MapChunk又由9x9+8x8个地形顶点高度,法线,若干贴图层(一般为4层),水面,Alpha贴图层(用于控制地表贴图的混合比例,一般为3张,尺寸64x64)和一层shadow map(64x64)组成。如图,由此可推算出wow的地面精度≈2m

Wow的地表是非常精细的,这与它使用了alpha贴图控制地表混合比例有关,而一般的引擎则把地表贴图的混合比例放在地表顶点中记录,这样地表的精度将同顶点密度保持一致。

Wow使用固定方向光照,所以可以使用shadow map来模拟树、房子等在地表透射的阴影,shadow map的尺寸也是64x64,可见阴影的精度也是非常高的。

这样的地形顶点分布是wow在最高地表精度下的高度顶点布局,当相机远离MapChunk时,这个高度顶点的布局可能是这样:

此时,地表的精度≈4m。

Wow的地表是支持挖洞的,有意思的是为了节省空间,其标示挖洞的信息数据就是一个int,通过使用位运算来得到一个4x4精度的挖洞信息,我们不放把这种4x4的洞叫做holeChunk,每个holeChunk支持4种状态来标示其内部2x2的洞分布状况,由此可见wow在数据结构方面已经发挥到了极致:对于需要精密表现的地表好不吝啬的使用64x64混合贴图,而对于hole这种只需要粗略(一半还不使用的东西)的记录一个int。

posted on 2008-12-23 05:46 RedLight 阅读(578) 评论(0)  编辑 收藏 引用 所属分类: 它不是一个人(WOW研究专区)


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

公告


Name: Galen
QQ: 88104725

常用链接

留言簿(3)

随笔分类

随笔档案

相册

My Friend

搜索

最新评论

阅读排行榜

评论排行榜