(计算机应用技术专业论文)2d游戏图形引擎系统的研究与实现.pdf_第1页
(计算机应用技术专业论文)2d游戏图形引擎系统的研究与实现.pdf_第2页
(计算机应用技术专业论文)2d游戏图形引擎系统的研究与实现.pdf_第3页
(计算机应用技术专业论文)2d游戏图形引擎系统的研究与实现.pdf_第4页
(计算机应用技术专业论文)2d游戏图形引擎系统的研究与实现.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 游戏引擎是一个处理游戏底层技术的平台,使用游戏引擎,游戏开发人员 可以不用花过多精力去处理系统架构、图形处理等一些底层的技术,可以直接 使用引擎提供的a p i 来进行游戏开发。2 d 游戏图形引擎系统是游戏引擎中的图 形渲染内核,在游戏引擎中占有核心地位。 本文通过对2 d 游戏中画面成像、行为动画、屏幕渲染管理、特效处理等方 面的研究,设计并实现了一个2 d 游戏图形引擎系统,该引擎系统主要包括四个模 块:界面控件模块、图形渲染模块、硬件显示支持模块和特效处理模块。 界面控件模块实现了一组通用的界面类库,可以灵活方便生成具有游戏观 感的控件界面,便于用户的调用。 图形渲染模块是整个2 d 游戏图形引擎系统的核心,它被划分为基本图形图 像绘制子模块、动画贴图子模块和屏幕渲染管理子模块三个部分。这三个子模 块之间为继承关系,承担着游戏中图形图像、动画资源的绘制和管理。 硬件显示支持系统模块中,利用j a v a 2 d 平台提供的图形硬件加速处理能力, 将双缓冲技术与硬件加速图像绘制技术相结合,实现了动态图像平滑稳定的连 续绘制,提高了动画加载速度。 在特效处理模块中分析了a l p h a 混合特效与粒子系统的应用机理,给出了 a l p h a 混合特效与粒子系统在2 d 游戏应用中的实现方式。 本文研究的课题初步探讨了2 d 游戏图形引擎系统的基本技术架构,针对一 些关键问题给出了解决方案并予以实现,对于国内基于2 d 的游戏系统开发具有 一定的借鉴和参考价值。 关键词:2 d 游戏;图形引擎:渲染;游戏动画 东北电力大学硕十学位论文 a b s t r a c t g a m ee n g i n ei sap l a t f o r mt e c h n i q u ei ng a m ed e s i g n w i t ht h ee n g i n e ,g a m e d e v e l o p e r sd o n tn e e dt od e v o t el o t so fe n e r g i e st oh a n d l i n gg a m ea r c h i t e c t u r e , p r o c e s s i n gg r a p h i ce t c t h e yc a l ld i r e c t l ym a k e u s eo ft h ee n g i n et os h o r t e nt h ep e r i o d o fg a m ed e v e l o p m e n t 2 dg a m eg r a p h i ce n g i n es y s t e mi sag r a p h i c sr e n d e r i n gk e r n e l o fg a m ee n g i n ea n di st h ec o r eo ft h ee n g i n e t h r o u g hr e s e a r c h i n go np i c t u r ei m a g i n g ,b e h a v i o ra n i m a t i o n ,m a n a g e m e n to f r e n d e r i n go ns c r e e na n ds p e c i a le f f e c tp r o c e s s i n gi n2 dg a m e ,t h ea u t h o ro ft h i sp a p e r d e s i g n sa n dr e a l i z e st h e2 dg a m eg r a p h i ce n g i n es y s t e m t h ee n g i n em a i n l yi n c l u d e s f o u rm o d u l e s :u ic o n t r o lm o d u l e ,g r a p h i c sr e n d e r i n gm o d u l e ,h a r d w a r es u p p o r tf o r d i s p l a y i n gm o d u l ea n ds p e c i a le f f e c tp r o c e s s i n gm o d u l e u ic o n t r o lm o d u l er e a l i z e sag r o u po ff u n d a m e n t a lu ic l a s sl i b r a r yw h i c hc a l l c o n v e n i e n c e l yg e n e r a t eg a m eu i f o ru s e r s g r a p h i c sr e n d e r i n gm o d u l ei st h ec o r eo f2 dg a m eg r a p h i ce n g i n es y s t e m i t i n c l u d e st h r e es u b m o d u l e s :b a s i cf i g u r e sa n di m a g e ss u b m o d u l e ,a n i m a t i o n s u b m o d u l ea n ds c r e e nr e n d e r i n gm a n a g e m e n ts u b m o d u l e t h e r ei sai n h e r i t a n c e r e l a t i o n s h i pa m o n gt h et h r e es u b m o d u l e s ,w h i c hb e a rr e n d e r i n ga n dm a n a g e m e n to f i m a g e sa n da n i m a t i o nr e s o u r c e s i nt h eh a r d w a r es u p p o r tf o rd i s p l a y i n gm o d u l e ,t a k e nf u l la d v a n t a g eo ft h e g r a p h i c sa c c e l e r a t i o nc a p a b i l i t yp r o v i d e db yj a v a2 dp l a t f o r ma n da p p l i e dt h e t e c h n i q u eo fd o u b l eb u f f e r i n ga n dh a r d w a r e - a c c e l e r a t e di m a g e sr e n d e r i n gt e c h n i q u e t os m o o t h l yd r a wc o n t i n u o u sm o v i n gi m a g e t h u se n h a n c e da n i m a t i o nl o a ds p e e d s p e c i a le f f e c tp r o c e s s i n gm o d u l ea n a l y s e st h ea p p l i c a t i o nm e c h a n i s mo fa l p h a b l e n d i n ga n dp a r t i c l es y s t e m ,a n dg i v e st h e i ri m p l e m e n t a t i o nm e t h o d si n2 dg a m e t h i sp a p e rd i s c u s s e st h eb a s i ct e c h n i c a la r c h i t e c t u r eo ft h e2 dg a m eg r a p h i c e n g i n es y s t e ma n dg i v e st h es o l u t i o n st ot h ek e yp r o b l e m sa n dt h er e a l i z a t i o n t h i s u a b s t r a c t p a p e r w i l lb eo fr e f e r e n c ev a l u ef o rt h ed o m e s t i cd e v e l o p m e n to f2 dg a m es y s t e m k e yw o r d s :2 dg a m e ;g r a p h i ce n g i n er e n d e r lg a m ea n i m a t i o n - 1 1 1 论文原创性声明 、 本人声明,所呈交的学位论文系在导师指导下本人独立完成的研究成果。 文中依法引用他人的成果,均已做出明确标注或得到许可。论文内容未包含法 律意义上已属于他人的任何形式的研究成果,也不包含本人已用于其他学位申 请的论文或成果。 本人如违反上述声明,愿意承担以下责任和后果: 1 交回学校授予的学位证书; 2 学校可在相关媒体上对作者本人的行为进行通报; 3 本人按照学校规定的方式,对因不当取得学位给学校造成的名誉损害, 进行公开道歉; 4 本人负责因论文成果不实产生的法律纠纷。 论文作者签名:兰玺堡日期:旦年三月盟e t 论文知识产权权属声明 本人在导师指导下所完成的论文及相关的职务作品,知识产权归属东北电 力大学。学校享有以任何方式发表、复制、公开阅览、借阅以及申请专利等权 利。本人离校后发表或使用学位论文或与该论文直接相关的学术论文或成果时, 署名单位仍然为东北电力大学。 论文作者签名:至焦 导师签名:塑勉叟 日期:竺呈年三月三生e 1 日期:垒避年上月卫日 第1 章绪论 曼曼量曼曼皇曼曼皇曼曼曼曼皇曼皇曼_ 一 _i =- - = i i o 曼 第1 章绪论 近年来,我国游戏产业迅速发展,据第一届中国游戏产业年会发布的( ( 2 0 0 4 年度中国游戏产业年报显示,2 0 0 4 年中国游戏市场规模为2 4 7 亿元人民币, 比2 0 0 3 年增长4 7 9 。预计2 0 0 9 年中国游戏出版市场销售收入将达到1 0 9 6 亿 元,2 0 0 4 年到2 0 0 9 年的年复合增长率为3 4 7 。中国游戏市场规模和增长速度 为全国瞩目,已成为中国出版业和信息产业新的增长点。同时,我国游戏行业 的厂商数量,产品质量都呈上升趋势,目前网络游戏厂商就已接近3 0 0 家。中 国游戏产业的发展也带动了通信、i t 制造,制造业等行业的发展。 但由于技术上的滞后,目前我国游戏市场基本上以代理国外游戏为主,核 心技术的8 0 被国外占领。2 0 0 4 年,“网络游戏通用引擎研究及示范产品开发” 及“智能化人机交互网络示范应用 两个项目被正式纳入国家8 6 3 计划,这是 我国首次将游戏技术研发这类文化产业纳入国家科技计划。专家希望通过8 6 3 计划的支持,为国内游戏厂商搭建一个核心技术平台,保护中国游戏软件的自 主知识产权。对游戏核心技术的研究已成为近年来非常活跃的课题。 1 1 论文研究背景和意义 游戏作为全新的朝阳产业,已成为全球i t 业新的增长点,正处在高速发展 之中。中国将成为全球最大的网络游戏市场,有近5 0 0 0 亿元的发掘潜力。事实 证明,通过价值链的传递,游戏产业给相关行业带来了1 :1 0 的经济价值。同 时游戏产业也属于战略性娱乐文化产业,它不仅成为人民体验娱乐生活的一种 重要方式,同时也成为了拉动消费、刺激经济增长的有力手段。现在,网络游 戏已上升到产业高度,吸引着越来越多的关注目光。 虽然中国作为世界上最大的游戏市场,每年的游戏产业已经达到几百亿的 规模。但是国产游戏却占有极少的市场份额,很大部分是从国外引进的。与发 达国家相比,国内游戏发展整体差距还很大。主要表现在游戏开发的技术方面。 由于技术滞后,网络游戏核心技术的8 0 被国外占领。以2 0 0 5 年为例,国内网 络游戏的1 0 2 亿元收入中的9 0 都来自被代理的国外游戏【2 j 。 东北电力大学硕十学位论文 当然这和中国的游戏产业的发展历史是有关系的。在我国网络游戏是个新 兴的产业,起步时间很晚。目前国内市场上游戏虽然有几百款,但是绝大部分 都是代理国外的。我国的游戏没有自己的品牌引擎,所开发的游戏大多是引进 的日韩、欧美等国的游戏引擎。我国的游戏产业正由国外代理阶段向原创阶段 过渡【3 1 。在这其中对游戏核心技术的开发无疑是中国游戏产业发展的关键。要在 蓬勃发展的世界游戏市场上拥有一席之地不受制于人,毫无疑问作为游戏开发 重要组成部分的游戏引擎关键技术的研究已经迫在眉睫。这将对于国内游戏的 发展产生极其重要的实用价值和深远的现实意义。 所谓引擎,是借用了机器工业的同名术语,表明其在整个系统中的核心地 位【4 1 。引擎最大的特点就是具有“驱动性”,即引擎仅仅在功能上支持某个方面 的应用,单具体的实现细节则依赖于应用本身。其次,引擎具有“完整性 的 特点,即引擎是能完整实现某个方面功能的函数集。第三,引擎还具有“独立 性 的特点,即引擎可以不依赖于具体的应用而独立存在。 鉴于引擎拥有的这些特点,游戏引擎可以理解为是在对部分通用技术细节 进行整理何封装的基础上,形成的一个面向游戏应用的应用程序接口( a p i ) 函 数【5 1 。它相当于游戏程序员的开发工具包,使得游戏开发人员不必再关心底层技 术的实现细节大大减少开发人员的工作难度何工作量、缩短开发周期。游戏引 擎一般包含渲染,编辑工具,物理学,人工智能和网络等内容【6 】。游戏引擎的发 展代表了计算机硬件和软件开发的最新技术,实时性、交互性以及强大的漫游 功能是其主要特点,是软件工程中软件重用和质量控制思想在游戏开发中的直 接体现。 2 d 游戏引擎中的图形渲染内核,在游戏引擎中占有核心地位,属于2 d 游 戏引擎中的核心部件。游戏图形引擎的好与坏,执行速度的快与慢,直接影响 到游戏的可玩性和现实的可操作性,对游戏技术的品质有非常大的影响和作用。 2 d 游戏图形引擎技术简单地说,就是以增强游戏可视化观感为目的,把涉及到 2 d 游戏图形图像设计开发中可以重复利用的通用技术部分,以精巧的模块组织 起来并规格化与最佳化,以利于程序重用的技术【7 j 。从开发的观点看,2 d 游戏 图形引擎实际上是一个面向游戏开发的通用内核,它从编程的角度把游戏图形 图像程序设计中最常见的、最通用的、最核心的功能集成为一个通用的游戏开 第1 章绪论 曼舅蔓j - - _ m i 鲁曼曼曼量鼍曼曼舅曼皇皇曼舅 发平台和集成环境。在此基础上再进行游戏开发,简单的通过a p i 函数类库直 接调用游戏图形引擎提供的功能,就可以方便和快速地开发新的游戏。这种模 块化、可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心, 用新的模型、场景和声音创造新的游戏画面,或向已有的素材中添加新的东西。 由于开发一款成功的2 d 游戏引擎需要大量的人员和资金,所以发展2 d 游 戏图形引擎的目的就是要简化游戏制作的复杂度,缩短开发时间,降低制作成 本。在很短的时间内高质量地开发出游戏新产品,适应数字产业的激烈市场竞 争。 1 2 国内外发展现状 随着社会的发展进步,网络游戏逐步成为一种重要的休闲娱乐和教育手段。 这种被称为是第九艺术的电子游戏起源于西方,是基于电子技术发展起来的一 种具有娱乐性质的产业。随着电子技术的不断发展和扩充,游戏产业的内容也 不断得到丰富,目前的游戏产业已经成为包含计算机软硬件技术、网络技术以 及无线技术等最新科技和各种文化艺术的新型娱乐产业。而其中,游戏引擎技 术可谓重中之重,它是整个游戏产业的核心技术。 近年来,几乎世界上所有著名游戏厂商,都把目光投向了网络游戏的开发。 并且相继推出许多优秀的网络游戏作品。目前,世界上游戏的最大生产国是美 国,在日本和欧洲,电脑游戏的研究也取得了很大进展。m i c r o s o f t 公司、索尼 公司、任天堂、b l i z z a r d ,e l e c t r o n i ca r t s 公司等引领着网络游戏的发展潮流。学 术界如a c m ,d i g r a ,i g d a 的o n l i n eg a m e ss i g 等组织对网络游戏的发展也起 到了巨大的推动作用【8 】。 国内也已经开始注意到网络游戏的重要性,并且于2 0 0 3 年首次将网络游戏 技术研发这类文化产业纳入“8 6 3 计划 。由于我国对网络游戏的研究刚刚起步, 大部分的研究工作处于摸索阶段。对于网络游戏引擎的关键的技术方案和技术 细节都属于各大公司的商业机密,并不对外公开,而且业界还没有一个统一的 标准,因此对网络游戏引擎所涉及的相关技术进行系统的研究更加具有必要性 和紧迫性。国内虽然有一些公司开发了2 d 游戏引擎,但是用这些引擎开发的游 戏渲染质量差、速度低。导致中国游戏引擎水平落后的原因主要有以下几点1 9 j : 东北电力大学硕士学位论文 曼曼皇曼曼1 1 i 一一 ; i_ i i i 皇量量曼曼鼍曼阜 1 电脑游戏对于我国还是一个新兴的产业,起步时间很晚。 2 相关技术资料短缺。 在国内,还没有任何高等院校开设游戏引擎技术方向的专业。而且网络资 源也非常有限,因为像游戏引擎的技术商业价值巨大,国外先进的技术不宜轻 易公布,要想得到也需巨额购买,这对于学习何研究者来说是望尘莫及的。 3 国内游戏开发人才短缺,游戏引擎开发人员更是少之又少。 4 构建游戏引擎的基础技术出现比较晚。d i r e c t9 0 、v e r t e xs h a d e r 和p i x e l s h a d e r2 0 等技术出现比较晚。 5 开发周期长、投资大、风险大。 6 国内投资商急于追求回报。 对于商家来说,获取利润无疑是他们的根本目的。 7 国内市场上虽然游戏有几百款,但是大部分都是国外代理的。 鉴于以上这些原因,对于计算机研究人员来说,我们应该把重点放在研究 实现网络游戏引擎的相关技术上。国产游戏开发中面临的瓶颈问题技术的 发展并不是一个一蹴而就的过程。一些业内人士更指出,现阶段国内的游戏厂 商开发经验十分缺乏,对网络游戏的理解还比较肤浅,更需要学习先进的经验。 这方面的积累将会是一个非常漫长的阶段。总之,我国网络游戏产业的发展, 机遇与挑战并存。 1 3 本文的研究内容 本文通过对2 d 游戏中画面成像、行为动画、屏幕渲染管理、分子特效等方 面的研究,设计并实现了一个2 d 游戏图形引擎系统,该引擎系统主要包括硬件显 示支持模块、图形渲染模块、界面控件系统模块和特效处理模块。其中图形渲 染模块是整个2 d 游戏图形引擎系统的核心,它又被划分为基本图形图像绘制子 模块、动画贴图子模块和屏幕渲染管理子模块三个部分。整个2 d 游戏图形引擎 系统封装了底层复杂的实现细节,为上层游戏程序提供一个简单、灵活、易用的 平台。本文研究的课题初步探讨了2 d 游戏图形引擎的基本技术架构。针对一些关 键问题给出了解决方案并予以实现,并在最后对于今后的工作做了进一步的展 望。 第1 章绪论 1 4 论文结构 本文内容安排如下: 第1 章首先介绍了论文的研究背景和意义、及其国内外发展的现状,对本 论文的研究内容和结构进行了说明。 第2 章概述了2 d 游戏图形引擎系统的总体设计,介绍了2 d 游戏图形引擎 系统的设计背景和原理,提出了2 d 游戏图形引擎系统的结构框架,对系统各部 分的功能进行分析。 第3 章分析了创建界面控件系统模块的优点,建立自定义可视化组件的底 层类库,设计并实现了界面控件系统模块。 第4 章划分了图形渲染系统模块的层次结构,设计并实现了图形渲染系统 的各层次模块,并改进“画家算法”解决了2 d 游戏中物体与精灵之间的复杂遮 挡关系问题。 第5 章在硬件显示支持系统模块中,利用j a v a 2 d 平台提供的图形硬件加 速处理能力,将双缓冲技术与硬件加速图像绘制技术相结合,实现了动态图像 的制作和平滑稳定的连续绘制,提高了动画加载速度。 第6 章通过分析混合特效与粒子系统的应用机理,给出了混合特效与粒子 系统在2 d 游戏中的实现方式。 最后给出总结,并提出下一步的目标。 东北电力大学硕士学位论文 第2 章2 d 游戏图形引擎系统的总体设计 2 1 图形引擎系统的概述 在游戏引擎经过多年的不断演化后,如今的游戏引擎已经被发展成一种由 许多子系统所共同构成的复杂框架系统。其中的图形引擎主要负责游戏中的画 面成像、行为动画、光影处理、分子特效、管理控制界面等影响游戏视觉外观 的各个方面。游戏图形引擎几乎在游戏开发的所有环节中都起着十分重要的作 用。而且游戏图形引擎已经成为游戏各系统部分提供支持和反映表现力的重要 体现工具f l o 1 1 】。可以说没有强大游戏图形引擎的支持,游戏中物理、人工智能等 各系统也不可能发挥出淋漓尽致的表现效果。因此只有游戏的图形引擎系统使 得游戏可以得到更好的华丽画面与流畅度。 2 2 图形引擎系统的设计背景 在游戏设计开发中,游戏引擎的开发是最为重要的一环,它的发展很大程 度上提高了游戏的开发效率。其中的图形引擎在游戏引擎中占有核心地位,属 于2 d 游戏引擎中的核心部件。图形引擎的好与坏,执行速度的快与慢,直接影 响到游戏的可玩性和现实的可操作性,对游戏技术的品质有非常大的影响和作 用,主要表现在以下几个方面: 1 在图形图像表现上。优秀的图形渲染内核,将可最大程度的发挥游戏的策 划思想,对于表现大规模场景,真实渲染游戏场景物件,华丽表现游戏视觉特 效,将起着最直接的作用。 2 在游戏程序运行的高效低耗性上。因为2 d 游戏对p c 系统资源消耗较大, 所以如何在图形渲染内核中有效地设计渲染方法,有效地进行资源管理,将对 游戏运行效率起着巨大的影响【1 2 1 。优秀的图形渲染内核,在真实高效表现游戏 场景的同时,又达到了资源消耗的最优化。 3 在游戏程序的稳定性、健壮性及多平台移植性方面,一个稳定的图形渲染 第2 章2 d 游戏图形引擎系统的总体设计 内核,将起着至关重要的作用。 2 3 图形引擎系统的处理过程 游戏图形引擎的处理过程是这样的:首先是需要设置游戏的运行环境,对 图形背景、精灵物体、动画属性、层次关系和位置坐标等进行初始化。然后对 用户的输入进行检测以便根据玩家的意图来改变游戏的运行状态,并且通过游 戏的管理控制界面对用户的输入请求进行处理。处理完后通过游戏的屏幕渲染 机制更新屏幕的显示。当退出游戏时,清除初始化时载入的所有图形、声音以 及各种数据,并且释放内存。 处理过程如图2 1 所示: 图2 1 游戏图形引擎的处理过程框图 2 4 图形引擎系统的体系结构 游戏引擎和框架的抽象一直是游戏制作中的一个关键问题,其核心就是如 何令抽象好的引擎具有更好的通用性和适应性【1 3 】。本课题基于j a v a 语言对2 d 游戏图形引擎进行系统化的研究以及模块化处理。这种模块化,可伸缩和扩展 的设计观念方便程序设计者深入到游戏核心,简化和加速整个游戏开发过程, 东北电力大学硕士学位论文 达到事半功倍的效果【l 引。 本文主要把2 d 游戏图形引擎系统按功能层次由低到高划分为四个功能模 块:硬件显示支持模块、图形渲染模块、界面控件系统模块和特效处理模块。 其中图形渲染模块是整个2 d 游戏图形引擎系统的核心,它又被划分为基本图形 图像绘制子模块、动画贴图子模块和屏幕渲染管理子模块三个部分。 基于游戏图形引擎处理过程框架和功能模块的划分,本文设计了一个如图 2 2 所示的2 d 游戏图形引擎总体构架: 謦曛哆 瓣鬻麓爹 图2 - 22 d 游戏图形引擎总体构架 第2 章2 d 游戏图形引擎系统的总体设计 曼曼曼曼曼曼曼鼍曼曼曼曼曼曼量曼曼曼曼量曼曼曼曼曼曼量曼曼曼曼曼曼曼曼曼皇曼曼曼蔓曼曼曼曼鼍曼曼皇曼鼍曼量皇曼曼曼量量皇鼍ii 曼皇曼曼寡曼舅 2 5 图形引擎系统的功能分析 下面简单介绍一下2 d 游戏图形引擎系统各模块的主要实现功能,其各模块 的具体功能如表2 1 所示。 表2 12 d 游戏图形引擎系统模块功能表 模块功能 硬件显示支持模块通过硬件的高处理性能支持游戏图像资源的绘制,有效提 高动画的帧速率,优化系统的绘制性能。 基本图形绘制利用j a v a2 da p i 底层的支持类库实现对基本图形图像的 模块操作、调入以及绘制。 图形渲染模块 动画贴图模块负责渲染游戏中的子画面动画和帧动画。 屏幕渲染管理控制管理画面上整体的绘制顺序,达到最接近现实的另人 模块满意的屏幕画面效果。 界面控件系统模块基于图形渲染模块之上实现的一套通用的界面, 实现用户方便灵活的调用。 特效处理模块通过对画面进行特效渲染处理,使游戏场景产生出绚烂多 彩的丰富效果。 1 硬件显示支持模块处于引擎的最底层,是游戏图形引擎与硬件之间的接 口,通过硬件的高处理性能为基础支持游戏图像资源的绘制,应用基于j a v a 的 硬件加速动态图像绘制技术有效提高动画的帧速率,优化系统的绘制性能。 2 图形渲染模块位于中间层,它包括三个子模块:基本图形图像绘制子模 块、动画贴图子模块和屏幕渲染管理子模块。这三个子模块之间为继承关系, 承担着游戏中图形图像、动画资源的绘制和管理。渲染模块可以让游戏场景在 可视化的同时,达到更加美观精致的场景效果。 3 界面控件系统模块它的实现必须依赖于图形渲染模块的支持。因此这 个模块位于整个引擎的最顶层,这样对整个引擎的架构不会造成复杂的依赖关 系。它实现了一组通用的界面类库提供给外部用户使用。外部用户可以方便灵 活的调用界面类库中的控件,设计自己的拥有游戏观感的控制界面,从而节省了 东北电力大学硕士学位论文 暑!lg 一,i- - i 曼曼曼量曼皇曼曼鼍 不少制作界面的时间,可以把主要精力放在游戏逻辑的代码设计上来。 4 特效处理模块通过对画面进行特效渲染处理,使游戏场景产生出绚烂 多彩的丰富效果。如通过a l p h a 混合特效技术来营造游戏中阴影、动态光源等半 透明效果。还有模拟自然天气、景物的粒子系统等。此模块是应用软件编程的 方法来增强和修改图像效果而无须为此创建多余的消耗内存的图像文件,节省 了游戏中各种调入导出文件的处理时间。 第3 章乔面控件系统模块的设计与实现 第3 章界面控件系统模块的设计与实现 3 1 界面控件系统模块的设计 要创建精彩的游戏,必须要有适合游戏场景的图形来丰富游戏的可玩性。 虽然原始的j a v a a w t 包含了很多与用户交互的优秀的控件,如按钮、标签和下 拉列表框等,但是它们都是基于标准化窗口平台的,如果直接应用于游戏之中, 会让游戏显得过于死板生硬,既不谐调也不美观。因此在游戏图形引擎中需要 创建一套适应于游戏应用开发的自定义可视化控件和菜单。自定义的可视化控 件和菜单不仅使游戏外观变得更加精美,而且可以节省游戏的开发时间,提高 开发效率【1 5 】。开发游戏的技术人员可以在此基础之上方便的生成自己所需的菜 单和控件系统,来丰富游戏中的视觉效果。 3 1 1 创建界面控件系统模块的优点 具体来说游戏中创建自定义可视化控件和菜单的优点是: 1 自定义的组件管理可以给组件比原始的a w t 更精确的布局。游戏是高度可 视化的,如果能够精确指定摆放组件的( x ,y ) 坐标,就可以对场景更好的控制【1 6 1 。 2 自定义组件便于给游戏自己定义的观感,基于视觉直观的效果会使其在游 戏中应用变得简单方便。 3 可以很容易模仿和扩充原始a w t 组件的功能。 3 1 2 界面控件系统模块的功能分析 界面控件模块能够实现一种类似g u i 的游戏用户界面。通过在游戏程序中 创建界面对象,然后再响应它的命令。就像使用i d e 中的各种控件一样,通过 设置每个控件的大小、位置、颜色等信息,就可以获得一个完善的游戏界面。 使用这种方式只需响应控件的命令,能够减少代码的编写量,大大减少开发的 工作强度1 1 7 j 。 界面控件模块提供的对象界面系统整合了输入输出控制系统,它实现封装 东北电力大学硕士学位论文 了一套通用的界面控件【1 引。 基本窗口( c b a s e w i n d o w ) 可以起到容器的作用,放置其他控件; 精灵动画( c a n i m a t e ) 按帧播放的2 d 动画; 单选按钮( c b u t t o n ) 复选框( c c h e c k b o x ) ; 下拉列表框( c c o m b o b o x ) ; 编辑框( c e d i t b o x ) 表格( c g r i d ) 有行和列表格,用来放置人物和物品等的属性; 列表框( c l i s t b o x ) 微调器( s s p i r m e r ) 可以通过上下两个按钮改变它的数值; 静态文本框( c s t a t i c t e x t ) 提供静态文本的输出; 文字按钮( c t e x t b u t t o n ) 缺乏图形资源的时候可以使用文字按钮; 文字菜单( c t e x t m e n u ) 缺乏图形资源的时候可以使用文字菜单; 上述控件都有一套默认的实现方法,同时可以通过使用不同的图形资源来 配置不同外观的界面。 3 2 界面控件系统模块的实现 界面控件模块的实现必须依赖于图形渲染模块的支持,因此这个模块位于 整个引擎的最顶层,这样对整个引擎的架构不会造成复杂的依赖关系【1 9 】。创建 功能类似于j a v aa w t 组件并能改善游戏观感的控件,需要创建一系列自定义 组件的底层类库,也就是把组件封装到一个整体类中。创建c o m p o n e n t 2 d 类作 为所有组件的基类,它包含一系列用来绘制可视化组件的类和接口。还需要创 建一些承载这些组件的容器类,也就是自定义的面板和菜单。c o m p o n t 2 d 类及 其派生类的体系结构图如图3 1 所示: c o m p o n e n t 2 d 类及其派生类的分析说明; 1 c o m p o n e n t 2 d 类c o m p o n e n t 2 d 类是一个抽象类,它是自定义组件的基 类,包含对所有可视化组件通用的属性和方法。c o m p o n e n t 2 d 类既包含一个 i m a g e g r o u p 对象来容纳多个图像,又包含图像数组的帧宽度和高度。它还包含 其他的共同的组件属性,如位置和组件的边界,还有像定义可用状态和可视性 第3 章界面控件系统模块的设计与实现 这样的状态信息。c o m p o n e n t 2 d 类还定义了访问关于他的信息的方法。 图3 - 1c o m p o n e n t 2 d 类及其派生类的体系结构图 2 l a b ei2 d 类l a b e l 2 d 类把像文字串、字体、变换以及要绘制文字的颜色 等属性都定义到这个类中。 3 b u t t o n 2 d 类b u t t o n 2 d 类的功能就像其他按钮所实现的功能一样,单击 它会产生相应的动作。添加到b u t t o n 2 d 类的组件摆放在其内部,并可以添加到 指定的( x ,y ) 位置,b u t t o n 2 d 类的另一个作用是指定一个i m a g e 对象,让它作为 面板的背景,完全填充整个面板,而不像j a v a a w t 中会留有空白边框。逻辑上 在绘制组件前绘制背景。b u t t o n 2 d 类还提供了触发动画功能,一帧对应平常静 止状态,一帧对应鼠标停留在按钮图标上面的状态,最后一帧对应按钮实际放 下的状态。 4 im a g e g r o u p 类c o m p o n e n t 2 d 对象包含了它自己的i r n a g e g r o u p 来储存图 东北电力大学硕士学位论文 像帧。创建b u t t o ni m a g e g r o u p 类来扩展i m a g e g r o u p 类,b u t t o n l m a g e g r o u p 类 是相对应b u t t o n 2 d 类触发不同的状态调用相应的图像外观。它包含专门的属性 来储存文件名和所包含图像文件的数量。需要加载的图像完全在一行的单元格 中存储,并分割为等大的图块,各图块间没有间隔物也没有网络线。如图3 - 2 所示。 图3 - 2 b u t t o n l m a g e g r o u p 类按钮存储图 按钮图像按照一个特定的顺序添加, 上面的状态,最后是鼠标被按下的状态。 好的视觉效果。 第一个为正常状态,然后是鼠标置于 因此3 张图像之间的切换即可产生很 5 c o n t ain e r 2 d 类创建c o n t a i n e r 2 d 类的主要目的就是在父容器内摆放组 件,实现添加组件和绘制组件的方法。通过效仿c o n t a i n e r 类的c o n t a i n e r 2 d 类 来创建c o n t a i n e r 2 d 体系的自定义组件系统。p a n e l 2 d 类是c o n t a i n e r 2 d 类的子 类,添加到p a n e l 2 d 对象中的组件摆放在其内部。组件可以添加到指定的x 、y 位置,而且可以指定一个i m a g e 对象作为面板的背景,在绘制子组件前绘制背 景图像。在父容器中添加组件图如图3 3 所示。 图3 - 3 父容器中添加组件图 6 m e n u 2 d 类当游戏变得更复杂时,使用一个自定义的菜单系统会使操作 变得更加方便。m e n u 2 d 菜单系统能够容纳组件并在需要时显示组件的容器单 第3 章晃面控件系统模块的设计与实现 曼w,!ll i i 皇曼曼曼曼曼曼曼 元,当菜单被调用时,所有其他的游戏事件都会暂时挂起,菜单成为和用户交 流的惟一活动界面。如果一个特定的菜单是一个覆盖菜单,那么他将在当前画 面的顶层绘制。如果不是覆盖菜单,那么只要它是激活并可见的,它就是惟一 需要绘制的物体。 ( 1 ) 菜单栈 在对菜单之间的切换时需要使用菜单栈来进行管理。其原理是通过使用菜 单栈,把需要调用的菜单压入栈中,然后在它被关掉时把它从栈中弹出。 ( 2 ) 菜单栈的运行机制 在游戏运行过程中通过按下e s c a p e 键来展开主菜单,这将把主菜单压入栈 中,在主菜单上单击一个按钮来调用选项菜单,这样就将把选项菜单依次压入 栈中。选项菜单包含一个按钮,它展开一个允许加载和保存游戏的控制菜单, 此时将这第三个菜单也压入栈中。通过按下关闭按钮,退出加载选择菜单,并 将此菜单从栈中弹出。对于主菜单和选项菜单,也应用同样操作。一旦菜单栈 清空,正常的游戏运转将照常运行。 ( 3 ) 菜单运行机制绘制算法 i f ( ) i f ( ) ) ) e l s e ) 算法分析:在清空绘制表面后,必须首先检查菜单栈是否为空。如果菜单 栈中有菜单,那么检查栈项菜单是否是一个覆盖菜单。如果是一个覆盖菜单, 东北电力大学硕士学位论文 那么在绘制菜单前需要绘制画面。否则,只需绘制菜单自身。如果菜单栈是空 的,那么只需按照正常情况绘制游戏画面。如果菜单栈中至少含有一个菜单, 就要禁止任何游戏进程来调用p a i n t 方法绘制更新画面。否则,只需照常更新画 面。 第4 章图形渲染系统模块的设计与实现 第4 章图形渲染系统模块的设计与实现 图形渲染系统是2 d 游戏图形引擎中非常重要的一部分,该系统的主要功能 是将制定的图像及效果在显示终端上显示出来,包括各种图像、动画效果、人 物角色以及游戏的背景等。 4 1 图形渲染系统的层次划分 基本的图形图像绘制是游戏场景中显示的最基本单位,也是完成所有复杂 效果图像的基础。从封装及功能单一性的角度出发,图形渲染系统为用户提供 的功能将不仅仅是在简单的绘制基本图形图像上,其上层应该给出游戏中最常 应用的动画贴图及控制的方法,再上层还应该给出游戏屏幕渲染管理的方法, 其具体层次关系如图4 1 所示。 图形渲染系统 屏幕渲染管理子模块 动画贴图子模块 基本图形图像绘制子模块 图4 1 图形渲染系统的分层结构图 4 2 基本图形图像绘制子模块的设计与实现 从图形渲染系统的分层划分可以看到,实现基本图形图像绘制子模块是整 个图形渲染系统的基础。基本图形图像绘制子模块主要是通过利用j a v a2 da p i 底层的支持类库实现对图形图像的操作、调入以及绘制。 东北电力大学硕士学位论文 4 2 1 图形操作流程 目前的电脑游戏都是由大量的图形构成的。将一幅图形在屏幕上显示的方 法可分为将指定格式的图形数据调入到指定内存中,再将指定内存中的数据拷 贝到显示内存中。 图形操作基本遵循以下模式:首先建立图形环境,然后执行图形处理处 理完成后释放图形环境【2 0 】。基本流程如图4 2 所示。 开始 l 取当前显示区句柄 山 i 建立一个与当前显示区兼容的暂存设备场景 占 i 建立一个与当前显示区兼容的设备相关位图 上 l 建立设备相关位图与暂存设备场景的关联 占 l 将当前显示区的内容拷贝到暂存设备场景 0 - l 释放图形环境 , 结束 图4 - 2 图形操作流程图 4 2 2 调入位图图像文件 读取位图文件使用j a v a 提供的g e t l m a g e ( u r lu r l ) 函数来实现, g e t l m a g e ( u r lu r l ) 返回一幅图像,该图像从指定u r l 获取像素数据f 2 l 】。通过 指定u r l 引用的像素数据来调入位图图像。可以使用g i f 、j p e g 或p n g 图 像格式之一来调图图像。 第4 章图形渲染系统模块的设计与实现 曼曼n 一_ 一 j , 一i 鼍量鲁皇量量曼曼量量量鲁曼鼍曼曼皇皇曼置 调入位图图像文件的流程如图4 3 所示。 图4 3 调入位图图像文件流程图 4 2 3 绘制位图图像并显示到屏幕 绘制位图图像使用j a v a 提供的d r a w i m a g e o i 函数来实现,它绘制指定图像中 已缩放到适合指定矩形内部的图像。图像绘制在此图形上下文坐标空间的指定 矩形内部,并且如果需要还可以进行缩放。透明像素将不影响该处已存在的像 :垂t 系o 函数原型如下: b o o l e a n d r a w i m a g e ( i m a g ei m g ,i n tx ,i n ty , i n tw i d t h , i n th e i g h t , i m a g e o b s e r v e ro b s e r v e r ) 参数: i m g - 要绘制的指定图像。如果i m g 为n u l l ,则此方法不执行任何动作。 x x 坐标。 y y 坐标。 东北电力大学硕士学位论文 w i d t h 一矩形的宽度。 h e i g h t 一矩形的高度。 o b s e r v e r 一当转换了更多图像时要通知的对象。 返回t 如果图像像素仍在改变,则返回f a l s e ;否则返回t r u e 。 4 3 动画贴图子模块的设计与实现 动画贴图子模块是图形渲染模块的重要组成部分,在几乎所有游戏中,图 形的核心都是动画。如果没有动画,游戏将变成静止的,整个游戏就会变的异 常死板,加入了动画会使游戏增添丰富多彩的效果,更加引人入胜。 目前的计算机动画是在传统动画的基础上,采用计算机图形图像技术而迅 速发展起来的一门高新技术。计算机动画是指用绘制程序生成一系列的景物画 面,其中当前帧画面是对前一帧画面的部分修改。由于人眼的视觉灵敏度很低, 很容易产生动画的错觉,因此会将这些变化误认为是在移动。应用程序以一定 的规律快速连续绘制并显示一系列有关联的静止图像就产生了电脑动画。一般 来说,计算机动画中的运动包括景物的位置、方向、大小和形状的变化,还有 景物表面纹理和色彩的变化等l z 2 j 。 根据2 d 动画移动和受控制的交互程度不同,可以将动画贴图子模块划分为 子画面动画、帧动画、精灵行走动画和游戏滚动背景四个部分。 4 3 1 子画面动画 1 子画面动画原理子画面动画是独立于背景移动的图形对象。图形对象 是一个独立于动画图像背景的实体。每个图形对象都可以称为一个子画面,并 且有一个随时间变化的位置,这样子画面就有了一个确定其位置如何随时间变 化的速度。在实际游戏中子画面通常是基于图像的,各子画面都对应于一个用 来在屏幕上绘制子画面的图像,并赋予图像一定的属性】。在2 d 游戏图形引擎 中由s p r i t e 类具体生成子画面。s p r i t e 类中定义了子画面的特定属性,包括位置、 速度、边界矩形、边界动作、深度系数和可见性。 c l a s ss p r i t e : i m a g ei m a g e ; a n 载图像 第4 章图形渲染系统模块的设计与实现 量曼曼曼量量喜量曼曼曼皇量皇量曼曼p m 曼皇皇曼曼皇曼鼍曼舅量曼曼曼鼍曼曼曼曼皇曼量鼍鼍曼曼皇曼皇量 r e c tp o s i t i o n ;| | 嗵 i n t v e l o c i t y ; 速度 i 迮c tb o u n d s ; 边界矩形 b o u n d s a c t i o nb o u n d s a c t i o n ;边界动作 i m z :深度系数 b o o l e a nh i d d e n ;可见性 位置:子画面所处于游戏中的具体坐标及涉及子画面出现在游戏屏幕 上的轮。 廓。包括处理子画面位置时需要考虑到的宽度和高度等信息。 速度:在游戏的各个周期中,子画面的速度用来改变子画面的位置。 边界矩形:用于控制允许子画面移动的区域。 边界动作:决定子画面在遇到边界时的行为。 深度系数:子画面在场景中的视景深度系数。 可见性:决定是否隐藏子画面。 2 子画面管理器由于子画面动画所具有特定的属性,因此在游戏中生成 子画面时需要对其进行管理。子画面管理器主要完成以下几项任务: ( 1 ) 向子画面列表添加新的子画面(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论