跳转到内容

二维图像引擎

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由InternetArchiveBot留言 | 贡献2020年12月15日 (二) 06:10 (补救2个来源,并将0个来源标记为失效。) #IABot (v2.0.7)编辑。这可能和当前版本存在着巨大的差异。

二维图像引擎(以下简称引擎)是主要使用在二维游戏中,绘制图像,并向外部表达图像的系统。在三维游戏中,亦有使用二维引擎来绘制游戏界面以及一些二维元素。

历史

概述

一般来说,一套引擎可以使用在多个不同的游戏中,即“可重用性”,由于引擎研发的投资较大,一个商业公司往往开发一款引擎,反复用于多款游戏,从而获得较高利润。如大宇公司的《轩辕剑系列》其正传和外传就是采用同一款引擎开发。也有本身不制作游戏,专门开发引擎并出售的公司。这样的引擎也称作“商业引擎”。出于游戏开发周期和开发成本的考虑,一些商业游戏公司更愿意购买“商业引擎”。

游戏引擎的程序基础是建立在使用图形API函数基础之上的,而不是直接控制显卡,主要适用于2D图像的API是DirectX,而纯2D图形API往往不能提供更丰富的图像操作支持,一些引擎也使用用于3D图像的API如OpenGLDirect3D等来模拟2D。

引擎组成

由于二维游戏的图像都是平面结构,所以图像引擎在显示图像之前也往往只对图像本身进行处理,而不像三维游戏那样还要处理图像周围的环境。这种处理一般是将图像伸缩,变形,色彩处理,图像合成等。图像引擎还可分为以下几个部分。

角色图像

在二维游戏中,角色的动作是靠一系列由美工预先设计好的图像,按照一定的速率连续显示来实现。就像播放电影的方法一样。而考虑到角色移动带有方向性,角色的一种动作往往要以不同的方向绘制许多组。在早期DOS游戏中,为了节约资源,角色动作往往只有四个方向,而后来的RPG游戏则往往是八个方向,或十二个方向。方向的多少影响着角色动作的流畅度,也极大的影响游戏占用资源的多少。一种缓和的办法是采用“纸娃娃系统”。

场景地图

典型的30°地图贴图划分情况

场景地图是承载全部游戏内容的场所。引擎对付地图的办法大致可分为两种:整版式和贴图式。前者是直接将整张图像作为地图来显示,这样的好处是美工可以针对不同的场景单独绘制不同的地图,但由于地图的不可拆分性,整版式地图也是最占用资源的。后者贴图式则正是针对前者的劣势,在贴图式地图中,美工并不直接绘制地图,而是绘制许多细小的地图元素,如一块草地,一个池塘,一棵树等,并在此之后,将数量一定的元素组合併接成完整地图。这种解决办法的劣势就是场景变化度不高,容易出现完全相同的区域。

在贴图式场景地图系统中,每个地图都是由一个贴图方阵组成,根据单个贴图的形状,可以将贴图式地图分为90°和45°和30°地图三种。90°的贴图单元成矩形,一些早期DOS游戏都是这种;45°的贴图单元成正方形,一些早期RPG多用此种,如《网络创世纪》;30°则是菱形,是时下比较流行的一种。三者相比起来,30°表现的场景最为自然。然而一些采用90°贴图的游戏有意将建筑,设施等图像倾斜绘制,模拟30°贴图的画面效果,如《传奇》。

一般,引擎习惯将角色固定在屏幕正中央,并移动场景来实现角色行动的效果。这种效果也称“地图卷动”。

动态&光影

在二维游戏中,或多或少的会使用一些特殊的效果,如图像的淡入淡出,颜色的加强等。游戏引擎中,一般有专门的系统负责处理图像,由于这部分代码比较常用且运算量大,好的引擎多用ASM语言书写代码。

此外,游戏中的特效,如火焰,魔法技能,流水等都是引擎需要处理的内容。

其他技术

脏矩形技术(Dirty Rectangle)

在2D游戏中,每次更新屏幕,都将会将整个屏幕上的图像重新绘制一遍,而更新的内容往往不是很多,甚至只是一个小区域,强制重绘带来了很大的资源浪费,尤其是在一些休闲游戏桌面游戏中体现明显。脏矩形技术正是利用只更新变化区域来达到提高引擎效率的目的。[1]在脏矩形系统中,屏幕上更新的区域被称为“脏矩形”,引擎仅仅将脏矩形部分重绘,而其他部分保持原样。

alpha混合

由于2D游戏的平面性,导致一个物体对另一个物体时有覆盖的情况。被覆盖的物体则不可见,可能给玩家带来不便。通常,游戏开发者会将一部分被遮盖的物体进行透明化处理。[2]这种透明化算法被称为“alpha混合”,混合的对象主要是角色图像,以便让玩家知道被遮挡的角色身在何处。

此外,引擎在处理一些火焰,流水时,也常常使用透明化算法,使之更为真实。

图像压缩

在2D游戏中,图像是游戏中最大的资源,而开发者为了压缩游戏所占的空间大小,往往在图像压缩上大作文章。被压缩后的图像,经过归类,被放置在一个个“打包文件”中,通常,这些文件以.lib .pak作为文件名后缀。

参见

参考文献

  1. ^ 脏矩形的实例. [2007-06-01]. (原始内容存档于2019-09-19). 
  2. ^ alpha混合简述. [2007-06-02]. (原始内容存档于2019-09-21). 

外部链接