斜视角图形引擎的设计

让场景更生动

[上篇:复杂的精灵控制][下篇:深入了解物体精灵]


体现游戏整体美工/设计水平的,往往是不经意的小处.表现天气和时候的方法很多. 让地面积满白雪,哪比得上天上飘下几片雪花更能打动玩家? 所以,画面最后用些特效 来修饰,虽然不是必要,但更能烘托出环境气氛.最后,这可以说是整个图形引擎中最难, 最需要技巧的地方.本文已经三易其稿.第一稿因为当时连续几天 的工作,明显感到有些力不从心,引擎代码的编写开始跟不上我的思考速度,所以是在没有 任何代码写出来的情况下,介绍了些想法.后来由于想到需要对自己的文字负责, 编写了具体的代码,发现了许多问题,从而写了第二稿,而大家现在看到的是第三稿, 很遗憾,刚发现,我现在的能力,及目前正在使用得机器,无法在引擎中以合理的速度, 实现下雨或飘雪的效果,所以删掉了此部分,留在以后有了新的算法或机器升级后再补充. 以后的时间,我将全力完成引擎后面还需要编写的部分及完成这个系列文章, 争取在本站周年之际,拿出我的作品

以往天气等的表现在第一人称的游戏中有所使用,第三人称得游戏中表现天气的几乎没有, 在握记忆中很早以前似乎有过一个那样的 RPG, 不过是矩形 Tile 的,似乎在斜视角的游戏 中更难实现,在毫无借鉴的情况下,将各种我暂时能想到的特效的实现方法归纳起来,大约有3种:

  1. 满屏的天气表现,诸如雨雪天气
  2. 光亮表现,用颜色基调和亮度表现昼夜,黄昏,或是大雾
  3. 阳光,以光束出现的阳光
其中以第一种最为复杂,因为我们不能简单的将雨点或雪花贴在屏幕表面,那样将毫无纵深感. 如果机器速度允许,我们可以将雪花之类的物体,每片做成一个 3D 面片,给于它们自己的运动轨迹, 以 3D 方式绘制. 可惜现在还不是人人使用屁兔加五毒的年代, 就算是吧, 至少云风的鸡也没那个档次, 而设计这个引擎的动机,在很大程度上是自我娱乐用哦 ;-) 开始我的计划是用一些非常手段 2D 模拟 3D 效果, 结果发现以我正在使用得机器, 加上目前的本人的水平,无法在这个引擎中实现这效果, (单独实现它,就占据了几乎我所有的 CPU 之间) 除非使用 320x240x256 的分辨率,显示速度的确是个太大的障碍,在实现了前面讲述的所有后, 每帧画能留给天气效果使用的时间充其量只有考虑透明色后复制 1 屏画的能力. 毕竟 640x480x16bit 每帧画有 7 百多 K 的数据量啊. 除非找到一种高速算法, 不用位图操作, 而直接全速向画面上绘制雪花或雨点, 同时有很好的视角效果, 否则我宁可放弃这个环节... (第四次修改本文记录: 云风已经找到了比较快的方法实现天气表现, 引擎的初步代码早已经按期在 主页周年时拿了出来, 在最后一个版本里, 初步实现了下雪的效果. 因为时间关系, 一直没有将这部分的文章补全, Sorry. 请大家期待本文第四稿)

第二种效果最容易实现, 因为仅仅是色调和亮度的变化,在 256 色的年代, 重置一下调色板就可以了, 现在 16bit 的引擎中呢, 万幸:-) 如我们前面所述, 为了减少内存的消耗量, 我们所有的图象信息 同样是以调色板机制存放,所以所要做的事情仍然是正确的调整调色板而已, 当然,由于是 16bit 色, 每个位图可以拥有不同的调色板, 引擎则要对所有的调色板进行操作.

关于第三种阳光的操作,具体说来就是用 Alpha 混合产生光晕, 或光束来增强画面的表现力, 这个我是从当今众多游戏中学来的,象红线飙车中那阳光的光圈, 西风狂诗曲中透过天窗射入的阳光, 真的给人以享受, 我希望我的引擎中有这些. 具体的代码将在引擎全部写完时以源码形式公布.

装饰游戏的画面还有许多方法,假如机器的速度足够,可以实现很多,新的特效实现也留待我们大家去研究.