会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
游戏开发 > 程序设计 > 图形处理
Diablo II初步研究
发表日期:2007-01-16 17:16:59作者: 出处:  

  Diablo II推出也有一段时间了,想必大家都已经玩过了。前两天,我在新浪论坛里对DiabloII中的技术和朋友们进行了一番热烈讨论。我现在将讨论的结果做一番整理和总结。

软件渲染:
  DiabloII的软件渲染部分采用了256色模式。据我所知,Blizzard出的游戏到目前为止都是用256色引擎的。Blizzard此次推出DiabloII,最终还是沿用了256色技术而未采用16bit模式,这不免让人觉得遗憾。但从另一方面说,在Diablo II中所使用的这套256色的图形引擎技术之完善,性能之高,是前所未有的。相对于DiabloI那个256色引擎在动态光影的表现上有了一个质的飞跃,光影过度如此平滑,以至于让我一开始认为它是16bit模式的。不得不承认,Blizzard将256色的潜力发挥到了淋漓尽致的地步。

  DiabloII的引擎和DiabloI一样,仍然是Tile Based的(只是tile在尺度上更小一些),因此动态光影应该也是基于Tile的,而不是基于像素的。至于为什么过度那么平滑,现在还不能确定是用了什么方法,我个人猜测可能还是通过对每个Tile顶点光的线性插值得到的(这个在D3D下有硬件支持)。这里贴一张DiabloII的调色板,以供各位研究。  

  比较有趣的是DiabloII中人物的影子,仔细注意一下就可以看到影子是直接画到屏幕上的,而不是作用与光线层(动态光影)的,因此可以说在DiabloII中并未能彻底的实现动态光影。因为光线层是基于Tile的,因此是不可能实现这种具有像素精度的影子的。不过Blizzard也很不够意思,只是把影子简单的画到屏幕上,连半透明都不加:( 实在是个败笔。

  由于这次DiabloII实现了主角可更换装备,因此不能再像I代那样人物采用整幅图片,而必须采用拼接技术,这就是说一个人物的图片被分成了头、左手、右手、身体、左脚、右脚等等多个部分(这是通过对DiabloII资源文件分析后得出的结论)。想想在I代中一个人物的整套图片就有上千帧,达十几MB之大,在II代中,若仍采用整幅图,那么一套装备就要一套图,排列组合就要有n套图,那所需要的存储量是不敢想象的。因此拼接技术是非用不可的。但尽管如此,DiabloII对人物图片的所需要的存储量依然巨大,5个主角的图片是放在d2char.mpq里的,居然有200MB之多,也就是说每个主角占了40M容量。另外值得一提的是人物的影子也同样是拼接的。

硬件渲染:
  DiabloII的硬件渲染采用了16bit高彩模式(这是因为没有什么硬件能支持256色渲染),但是图片资源仍然是256色的。DiabloII此次凭借硬件加速,画面质量(我指的是动态光影的质量)有了很大改善,并且支持了更多的特效。

  在3D硬件渲染模式下,DiabloII是利用polygon渲染的,这包括地面tile、人物等。ambi同志根据对glide模式的跟踪结果,每一帧显示的多边形数量大约在5000~9000之间。当生成的polygon数量为6000时,可以计算出平均每一个polygon包含的像素个数为640*480/6000=51.2。考虑到polygon之间的互相覆盖,几乎可以确定它的地面是8x8的tile。每块tile做为Texture对应于一个polygon,动态光影是通过计算每个polygon的顶点亮度来实现的。由于硬件支持插值过滤,因此要做到平滑是非常容易的。并且因为顶点光是支持彩色的,所以在硬件渲染下可以看到彩色的动态光源(在放魔法的时候尤其cool,见下图),这个在软件渲染下就无法实现了。

  另外一个非常cool的在软件渲染下无法实现的是透视效果。大家可以比较一下把option里的perspective效果打开和关闭有什么不同,就可以体会到这种效果了。因为是用polygon的,要实现这种效果只要对每个polygon做一次透视变换,硬件可以很轻松的完成对Texture的插值。而在软件渲染模式下,虽然理论上没问题,但是因为计算量非常之大(线性插值),因此是不可能实现的。

  还有值得一提的是,DiabloII对硬件兼容性支持的不是很好,在某些显卡上会出问题(主要是贴图错误),尤其是大名鼎鼎的TNT2(我用的也是TNT2)居然也出问题:( ,不知道Blizzard是怎么测试产品的。另外,DiabloII支持glide,因此在voodooII上运行画质才是最亮丽的。这里再放一张voodooII上运行的效果图:)

  综上所述,DiabloII仍然采用陈旧的256色技术,虽然在效果上比I代有了很大提高,但依然无法摆脱256色下图像质量粗糙,缺乏过渡等等的限制,可以说Blizzard此次只能算是旧瓶装新酒,不免让人觉得遗憾。不过,在硬件渲染下到是让我们看到了许多新技术,可以说用硬件加速来实现某些2D特效将是未来2D游戏的发展趋势。

补充:DiabloII的资源文件分析。
DiabloII的资源文件分了好几个放。主角放在d2char.mpq里
data/global/CHARS/ 目录下有 5 个子目录
AM BA NE PA SO
看名字大家知道是什么意思吧 :)
然后每个目录下有 COF HD LA LG LH RA RH S1 S2 SH TR
子目录. 应该分别是身体的个部分. 里面的 .dcc 文件暂时没有知道格式, 仅仅猜测罢了。
d2data.mpq 里能分析出来的文件多些。
比如在Dataglobalmonstersdl 目录下,有 LA LG RA S1 S2 TR 应该是 Diablo 身体的各部分,里面的.DC6文件已经可以用CV5来解了:)
过场是真彩的bink。bink文件都放在d2video.mpq 里没有压缩。很容易解出来, 可惜文件头被改了, 标准的 bink player 看不了:(
CV5的下载地址:
http://user.cs.tu-berlin.de/~mickyk/cv.html

  最后感谢热心参与讨论的云风、ambi、lanwood等朋友,希望本文能抛砖引玉,让更多的朋友参与到讨论中来。

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00341