基于DirecX的Visual C++游戏设计.doc

上传人:精*** 文档编号:830647 上传时间:2023-09-06 格式:DOC 页数:41 大小:826.93KB
下载 相关 举报
基于DirecX的Visual C++游戏设计.doc_第1页
第1页 / 共41页
基于DirecX的Visual C++游戏设计.doc_第2页
第2页 / 共41页
基于DirecX的Visual C++游戏设计.doc_第3页
第3页 / 共41页
基于DirecX的Visual C++游戏设计.doc_第4页
第4页 / 共41页
基于DirecX的Visual C++游戏设计.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、基于DirectX(SDK)的Visual C+游戏设计 摘 要电脑游戏经过短短30年的发展,已经成为影响公众生活,改变公众娱乐方式的重要产业。过去,人们主要是借助电影、电视、音乐等方式来娱乐。而今天,以游戏为代表的电子娱乐正在成为主流娱乐方式。游戏也正在迅速成长为一个庞大的产业。Microsoft Direct X(SDK)是一个基于COM技术的多媒体应用程序开发工具包,它代表了未来多媒体应用程序的开发方向。本文详细介绍了游戏设计基本概念和 Direct X 的构架,包括DirectDraw、Direct 3D、DirectSound,并在 Visual C+6.0环境下使用Direct X

2、(SDK)开发多媒体游戏作为本论文的实例。关键字Direct X;游戏设计;Visual C+ +Visual C+ Game Design Based On DirectX(SDK)Jianghan UniversityStudent Jie Zhou Advisor Prof. Junming ChangAbstractAfter the short 30 years development, the computer games already became an important industry which influences the public life and change

3、s the public entertainment way. In the past, people mainly rely on film, television, music and other means of entertainment. Today, with electronic games for entertainment is becoming a mainstream representative entertainment. Games are rapidly growing into a huge industry. Microsoft Direct X is a m

4、ultimedia application development SDK (Software Development Kit) based on COM technology. It represents the future of multimedia application development. This paper introduces Game Design in detail and architecture of Direct X, including DirectDraw,Direct3D,DirectSound.Then it describes how to devel

5、op multimedia games with Direct X in Visual C+ 6.0 environments.KeywordsDirect X;Game Design;Visual C+ +绪论随着个人电脑以及Internet的普及,游戏业迎来了蓬勃发展的时代。数年之前在486机器上运行的DOS游戏已经让人玩的如痴如醉、兴奋不已。现在,由于CPU以及显卡等设备的飞速发展,为人们开发更加炫目多彩的游戏提供了可能。一块高性能的显卡能在一秒中内完成数千万个多边形的处理,高速的CPU在显卡的辅助下,所营造出的游戏环境几乎可以乱真。 美国一个市场研究机构发表的报告显示,到2002年底,

6、全球电脑游戏产业已经形成一个200亿美元的巨大市场。日本是游戏产业最发达的地区,韩国是新兴的游戏产业发达国家,在这两个国家内,电子游戏已经相继超过以汽车制造为代表的传统制造业而成为国民经济主导产业之一;而在美国,游戏业已经超越拥有百年历史的好莱坞电影业而成为整个电子娱乐产业的龙头。游戏正成为与影视、音乐并驾齐驱的娱乐产业之一。而网络游戏凭借着信息双向交流、速度快、不受空间限制等互联网优势,具有诱人的互动性、仿真性和竞技性,已成为网络业赢利优厚的三大领域之一,游戏产业已被称为“阳光产业”。游戏产业有着丰厚的利润和光辉的前景。而中国的电脑游戏产业才刚刚处于起步阶段,虽然相对落后,但还有很大的潜力可

7、以开发。这就需要国内涌现出更多的游戏制作人和爱好者,大家共同努力开创中国游戏业的明天。本人出于对射击类游戏的爱好,决定制作一个二维平面射击类游戏,玩家在游戏中控制一架飞机,与大量的敌机对战。该游戏最大的特点就是,可玩性很高,操控简单。希望通过该游戏的制作,深入了解游戏制作的过程、方法,并进一步掌握对编程语言的应用,同时也为中国电脑游戏业贡献一份力量。1. 游戏设计概论1.1 电脑游戏的历史在60年代,第一台台式计算机问世,当时运行在Unix机器上的Core Wars,是最早的计算机游戏之一。在70年代的黄金岁月到来时,全世界的台式计算机和小型计算机上流行着文本游戏和粗糙的图片游戏。在PC界,有

8、史可考的最早的一款PC游戏是斯考特亚当斯1978年为TRS-80开发的文字冒险游戏冒险岛,正是这款不起眼的游戏开启了今天近百亿美元的电脑游戏市场。80年代是电脑游戏升温的年代。第一台16位计算机问世,如IBM PC及其兼容机、Mac、Atari ST、Amiga 500等等,这时候,游戏已变得很好看,甚至有了一些3D的游戏如Wing Commander、Flight Simulator等。但是,PC机仍然落后于游戏主机。在1985年以前,Atari ST和 Amiga 500作为游戏机占有绝对的支配地位。在90年代初期,IBM PC及其兼容机渐渐成为主流,伴随着Windows 3.0的发布,A

9、pple Macintosh寿终正寝。用户从此可以真正的在PC上尽行游戏、编程、开发并连接其他的东西。但是,PC在图像和声音上还依然落后。在1993年的后期,随着Id Software 发行了DOOM作为Wolfestein 3D的换代产品,PC机开始成为家用微机市场玩游戏和编程的选择。DOOM的成功表明了微机上是可以做任何事情的,而Microsoft敏锐的发现了这一点,并开始制定巨大的计划涉足游戏,由此,DirectX 1.0为游戏而生。但是,一直到DirectX 3.0,DirectX才在游戏开发中被广泛的使用,而在此之前许多公司仍然采用DOS32平台进行游戏编程。此间,也诞生了如红色警戒

10、、暗黑破坏神、VR战士这样的使用DirectX 2.0技术的经典游戏。90年代中后期,伴随着计算机硬件技术和软件技术的发展,经典游戏接连不断,仙剑奇侠传、英雄无敌、星际争霸、暗黑破坏神2等等都是长盛不衰的经典游戏。与此同时,互连网的发展促使网络游戏也在90年代后期兴起,并发展成为一个蕴涵巨大商业价值的新兴产业。图11所示的是星际争霸的游戏画面截图。图1-1星际争霸截图进入21世纪,使用大型3D引擎架构的游戏逐渐成为市场的主流,并以绚丽的画面和逼真的场景一次又一次的吸引着人们的目光。这时候,代表游戏有DOOM 3、文明4、使命召唤2、魔兽世界等等。DirectX技术也成为当今图形处理及多媒体处理

11、的主流技术,目前版本已经发展到了DirectX 9.0C。图12所示的是魔兽世界的游戏画面截图。图1-2魔兽世界截图1.2 游戏的类型与视角1.2.1 游戏的类型1ACT (Action Game) 动作游戏 ACT游戏讲究打击的爽快感和流畅的游戏感觉,这类游戏提供玩者一个训练手眼协调及反应能力的环境及功能,通常要求玩者所控制的主角(人或物)根据周围情况变化做出一定的动作,如移动、跳跃、攻击、躲避、防守等。在2D系统上来说,应该是在卷动(横向,纵向)的背景上,根据代表玩家的活动块与代表敌人的活动块以攻击判定和被攻击判定进行碰撞计算,加入各种视觉,听觉效果而成的游戏。其中经典有快打旋风,龙与地下

12、城系列。到3D游戏发展迅速的今天,ACT类游戏获得了进一步的发展,3D技术在游戏中的应用使实现更真实、更流畅的动作成为可能。代表作品为Konami的合金装备系列,Ubisoft的分裂细胞系列。 2AVG(Adventure Game) 冒险游戏AVG才出现时,指的是类似神秘岛系列那样的平面探险游戏,多根据各种推理小说,悬念小说及惊险小说改编而来。在当时,其系统基本就是载入图片,播放文字,音乐,音效,然后循环。或者会有玩家的互动,但是也很有限。玩家的主要任务是体验其故事情节。直到生化危机系列诞生以后才重新定义了这一新类型,产生了融合动作游戏要素的冒险游戏(AAVG),最具代表性的作品就是CAPC

13、OM的生化危机 系列,鬼泣系列,鬼武者系列。 3FPS (First Person Shooting)第一人称视角射击游戏第一人称视角射击游戏顾名思义就是以玩家的主观视角来进行射击游戏。玩家们不再像别的游戏一样操纵屏幕中的虚拟人物来进行游戏,而是身临其境的体验游戏带来的视觉冲击,这就大大增强了游戏的主动性和真实感。FPS游戏在诞生的时候,因3D技术的不成熟,无法展现出它的独特魅力,就是给予玩家及其强烈的代入感。DOOM的诞生带来了FPS类游戏的崛起。随着3D技术的不断发展,FPS也向着更逼真的画面效果不断前进。可以这么说,FPS游戏完全为表现3D技术而诞生的游戏类型。代表作品有虚幻系列,半条命

14、系列,DOOM系列,雷神之锤系列。4FTG (Fighting Game) 格斗游戏FTG游戏的系统在固定背景画面下的活动块碰撞计算。玩家通过一定的组合健形成特定的攻击方式,攻击对手,以打倒对手为目的。FTG游戏是动作游戏的战斗部分的进一步升华。FTG游戏应该可以视为我国“文斗”概念的最终形态,无论玩家在游戏中如何打个你死我活,游戏外的玩家除了出身汗,手脚酸痛外并不会有实际的伤害。2D FTG游戏的系统就是在固定背景画面下的活动块碰撞计算,是动作游戏的战斗部分的进一步升华。2D FTG最具代表性的作品就是街霸系列和格斗之王系列 。5MUG (Music Game)音乐游戏MUG游戏的诞生以日本

15、Konami公司的Dance Dance Revolution为标志,初诞生便受到业界及玩家的广泛好评。其系统说起来相对简单,就是玩家在准确的时间内做出指定的输入,结束后给出玩家对节奏把握的程度的量化评分。这类游戏的主要卖点在于各种音乐的流行程度。这类游戏的代表作品有Dance Dance Revolution系列,太鼓达人系列,DJ系列。 6PUZ (Puzzle Game) 益智类游戏PUZ游戏多需要玩家对游戏规则进行思考,判断。系统表现相当多样化,主要依游戏规则制定。由于对游戏操作不需要太高要求,是现在受众面最广的游戏类型之一。代表作品为俄罗斯方块系列,泡泡龙系列,战球王系列。 7RAC

16、 (Race Game) 赛车游戏 RAC以体验驾驶乐趣为游戏述求,给以玩家在现实生活中不易达到的各种“汽车”竞速体验,玩家在游戏中的唯一目的就是“最快”。2D RAC的系统就是系统给定的路线(多为现实中存在的著名赛道)内,根据玩家的速度值控制背景画面的卷动速度,让玩家在躲避各种障碍的过程中,在限定的时间内,赶到终点。由于2D的制约,很难对“速度”这一感觉进行模拟,所以成功作品相当有限,日本任天堂公司的F ZERO应该是其中最有代表性的作品。到3D RAC时代,RAC在3D技术构建的游戏世界中终于充分发挥了其速度的魅力。代表作品有:EA的极品飞车系列,NAMCO的山脊赛车系列,SCE的GT赛车

17、系列。 8RPG(Role Playing Game ) 角色扮演游戏 RPG游戏是最能引起玩家共鸣的游戏类型。其诞生以ENIX的勇者斗恶龙发售为标志,开创了漫长的RPG时代。RPG游戏能把游戏制作者的世界完整的展现给玩家。架构一个或虚幻,或现实的世界,让玩家在里面尽情的冒险,游玩,成长,感受制作者想传达给玩家的观念。RPG游戏没有固定的游戏系统模式可寻,因为其系统的目的是构建制作者想象中的世界。但是,所有的RPG游戏都有一个标志性的特征,就是代表了玩家角色能力成长的升级系统,而程序构建的世界就是各个RPG游戏的个性所在。与其他游戏类型不同,虽然RPG游戏的表现是立体,多元的,但其根本都是为故

18、事情节的表现。标准RPG游戏类型的经典游戏,以软件之星的仙剑奇侠传系列,大宇资讯的轩辕剑系列,智冠的金庸群侠传, ENIX公司的勇者斗恶龙系列(被誉为日本的国民RPG),SQUEAR公司的最终幻想系列为代表。由于战斗表现形式的不同,还有融合了动作要素的ARPG游戏,代表作品有NAMCO的XX传说系列,KONAMI公司的恶魔城X月下夜想曲系列(恶魔城系列的作品多为ACT游戏类型,只有其中的月下夜想曲,晓月圆舞曲,月轮是ARPG类型,BLIZZARD公司的暗黑破坏神系列;融合了SLG(策略战棋式游戏)要素的SRPG游戏,如SEGA的光明力量系列。图1-3为仙剑奇侠传的截图。图1-3仙剑奇侠传截图9

19、RTS(Real-time Strategy Game)即时战略游戏RTS游戏是战略游戏发展的最终形态。玩家在游戏中为了取得战争的胜利,必须不停的进行操作,因为“敌人”也在同时进行着类似的操作。就系统而言,因为CPU的指令执行不可能是同时的,而是序列的,为了给玩家照成“即时进行”的感觉,必须把游戏中各个势力的操作指令在极短的时间内交替执行。因为CPU的运算足够快,交替的时间间隔就非常小。RTS游戏的代表作品有目标的傲世三国,BLIZZARD星际争霸,魔兽争霸系列,WESTWOOD的命令与征服系列。图1-4为魔兽争霸3的截图图1-4魔兽争霸3截图10SLG (Simulation Game)模拟

20、/战棋类战略游戏 SLG游戏有多种含义,一是指对飞机,坦克,机器人等一般玩家接触不到的设备的虚拟体验,以及对某种现实生活的体验,也是指策略战棋类游戏。就系统而言,模拟类是对设备(或某类型的现实生活)的各种操作及其产生的结果进行模拟,根据模拟对象而定;而战棋类游戏的系统主要是在模拟地图(棋盘)上,玩家根据行动顺序的指定自方角色行动,与敌方角色进行虚拟战斗。模拟类型的游戏,具有代表性的有微软的模拟飞行系列,NAMCO的王牌空战系列,KONAMI的空中三角洲系列;经营模拟类的有SIM的模拟城市系列,模拟人生系列,微软的动物园大亨系列;战棋类有宇峻的超时空英雄传说系列,INTELLIGENT的火焰之纹

21、章系列,ENTERBRAIN的泪之指环传说系列。11SPG (Sport Game) 体育运动游戏 SPG游戏就是现实中各种运动竞技的模拟。从系统上来说也是五花八门,有靠玩家点击频率,节奏取得胜利的,也有像动作游戏一样要求玩家精确操纵的。这种游戏类型的代表作品是KONAMI的实况足球系列,EA的体育游戏系列,SEGA的ESPN体育系列,汤尼霍克滑板系列。 12STG (Shooting GAME) 射击游戏 现在一般指的是卷轴式射击游戏,是出现频率的很高的游戏类型。纯2D STG的系统是在卷动的背景图片上,玩家自己战机的活动块与敌方子弹(和战机)的活动块,玩家飞机子弹的活动块与敌战机的碰撞计算

22、。玩家在游戏中的目的就是获得最高分数的记录,或者是在敌方的枪林弹雨中成功存活。代表作品有彩京的194X系列,CAVE的首领蜂系列,IREM的雷电系列。伪3D的作品有R-TYPE战机系列,雷霆战机系列。 13TAB (Table Game)桌面游戏 一般是现实生活中的玩具的模拟。以大富翁类游戏最具有代表性。如寰宇之星的大富翁系列,明日工作室的虚拟人生系列。 14POLG (Playing Online Game)网络游戏这里所讲的网络游戏并不是可以上网玩的游戏。而是单指那些只能通过互联网进行,不能独自在家里玩的单机版电脑游戏。其最大的优势在于它的“互动性”,在同一个虚拟社会里朋友们可以互相聊天,

23、在进行游戏的时候有其他的玩家可以帮助你,大家一起战斗,所要面对的也不只是电脑里的对手,而是和玩家们一样真实存在的人。网络游戏的代表作品有传奇、奇迹、魔兽世界等 1.2.2 游戏的视角1. 第一人称视角第一人称视角,即在游戏中,玩家视野内的游戏环境就如同角色眼睛所能看到的一样。这种视角的代表作有Id Software的DOOM 3。由于第一人称视角增加了世界的可信度和全身心投入的因素,所以常常受到欢迎。图15所示的是DOOM 3的游戏画面。图1-5 DOOM 3截图2. 第三人称视角第三人称视角也成为任意视角。第三人称视角就是玩家可以在屏幕上看到自己所扮演的游戏角色,它的优势在于能够看见更多的游

24、戏环境,以及可以看到角色所采取的措施,而这在第一人称视角中是不可能的。游戏古墓丽影是使用第三人称视角中最叫座的游戏之一,它有一个智能的照相机紧跟着女主角劳拉。图16所示的是古墓丽影的游戏画面。图1-6 古墓丽影截图3. 俯视角俯视角由上向下观察游戏环境,就像照相机停留在游戏者的正上方。使用这种视角的游戏多是策略类回合制和即时形式的游戏。这是由于战斗场景中一切琐碎的管理细节和部队的战术布置需要,玩家必须能够控制单位,并一眼就能察看到形势。4. 等轴斜视角等轴斜视角被称之为3/4视野,因而有一些3D效果。BLIZZARD公司的暗黑破坏神2正是基于等轴斜视角的动作/RPG游戏,游戏玩家可以同时看到角

25、色和四周的情况。图17所示的是暗黑破坏神2的游戏画面。图1-7暗黑破坏神2截图5. 平面横向视角平面横向视角是传统的二维的横向视角,随着3D成为游戏的标准,所以使用这种视角的游戏现在已经很少了。6. 文字游戏(无视角)完全不使用或很少使用图形的文字游戏,它不含任何的视角。这些游戏多诞生于二十世纪80年代。1.3 游戏的组成与结构一个游戏基本上是一个连续的循环,它完成逻辑动作,并在屏幕上产生一个图像,通常是30幅图或更多。图1-8所示的是简化的游戏循环结构:图1-8游戏循环结构第一步:初始化在这一步中,游戏运行的初始化操作和其他Windows 应用程序一样,如内存单元配置、资源采集、从磁盘安装数

26、据等等。第二步:进入游戏循环在这一步中,代码运行进入游戏主循环,此时各种游戏动作和情节开始运行,直到用户退出游戏主循环。第三步:获取玩家的输入信息 在这一步中,处理玩家的输入信息并将其储存到缓存以备下一步人工智能和游戏逻辑使用。第四步:执行人工智能和游戏逻辑这部分包括游戏代码的主体部分,执行人工智能、物理系统和常规的游戏逻辑,其结果产生下一帧屏幕图像。第五步:渲染下一帧图像 本步中,用户输入和游戏的人工智能和逻辑执行的结果,用来产生游戏的下一帧动画。这个图像通常放在后备的缓存区内,因此无法看到它被渲染的过程。随后该图像被迅速复制到显示区中。第六步:同步显示使用定时器和等待函数确保游戏和最大帧速

27、同步,通常认为 30 FPS 是可以接受的最低速率,而大多数动作游戏玩家将他们的图形调整为不低于 60 FPS。第七步:循环返回到游戏循环的入口并重新执行以上步骤。第八步:关闭 这一步结束游戏,表示用户结束主体操作或游戏循环,用户在进行结束前释放所有资源并刷新系统并返回操作系统。在大多数情况下,游戏循环是一个包含了大量状态的FSM(Finite State Machine, 有限状态自动机)。所有的游戏大都按照这样的结构执行。如图1-9所示,状态的转换是非常连贯的。图1-9循环的状态转换图1.4 游戏的元素游戏中的元素包含:界面(图像),操作界面,声音,游戏性。1. 界面(图像)当玩家在的进行

28、游戏时,界面(图像)的风格和具体形式将会在第一时间告诉玩家游戏的大致轮廓。这其中主要包括两点:1. 图形技术:2D图形技术,3D图形技术。2. 游戏视角:第一人称视角,第三人称视角,俯视角,等轴斜视角,平面横向视角。2. 操作界面操作界面是玩家和游戏间联系地纽带。良好的操作界面可以提高游戏的品质。其具体表现为:1.输入设备:键盘,操纵杆和游戏手柄。2.控制键:任何界面系统都包括若干控制键。每个键都有它独特的功能。控制键越多,游戏就越难以掌握。因此简化和优化操作是游戏性的保障。3.键位的可设置:现实情况复杂多变,玩家口味各不相同。如果游戏有很多选项,允许玩家自己来调整以适应实际情况,这就比固定参

29、数,不可调整的做法要好得多。4.操作界面的AI:界面和AI的接合点就是游戏是怎样解释并处理玩家的输入的。3. 声音声音在游戏中用来给予听觉上的反馈,例如音效,背景音乐,对话等等,在游戏中使用高品质的音乐能够增强游戏的表现力。4. 游戏性游戏性是玩家和乐趣间的桥梁。它不仅体现在单机上玩家与电脑的对抗中,也体现在多人游戏中二个或更多个人进行的竞争中。游戏性体现了一种游戏与玩家的交互,良好的游戏性是游戏具有可玩度的前提。游戏性常表现在以下方面:游戏的平衡性,游戏的可操作性,游戏的AI。1.5 游戏系统的层次游戏系统可分为三个层次:游戏层,引擎层,系统层。如图1-10所示:图1-10戏系统(Game

30、Software System)2. DirectX技术简介2.1 DirectX概述DirectX为程序员提供了一套完美的基于COM(Component Object Model,组件对象模型)的游戏和多媒体应用程序编程接口(API,Application Programming Interface),该接口为设计高性能、实时的应用程序提供了所需的资源。从内部原理探讨, DirectX 就是一系列的 DLL (动态连接库),通过这些 DLL,开发者可以在无视于设备差异的情况下访问底层的硬件,DirectX 封装了一些COM对象,这些COM 对象为访问系统硬件提供了一个主要的接口。使用Dire

31、ctX的目的在于,可以使应用程序(特别是游戏)在Microsoft Windows下的性能可以达到甚至超过在MS-DOS下的性能,并且为之提供一个强壮、标准化以及文档化的编程环境。DirectX 优势主要表现在两个方面:1.为软件开发者提供硬件无关性 Microsoft开发DirectX的初衷就是增强Windows下的游戏开发环境,在DirectX之前,多数的游戏开发都是基于MS-DOS的,那时游戏开发者不得不自己判别硬件的种类并逐一适应。有了DirectX,游戏开发者就可以享受DirectX给他们带来的设备无关性,而丝毫不受影响地直接访问硬件。DirectX 的首要目标即是将 MS-DOS

32、下的许多特性移植到Windows平台上来,在提高应用程序的性能同时,清除个人电脑不断更新的硬件给程序设计带来的障碍。另外,通过提供应用程序和硬件之间一致的接口,DirectX让基于Windows的应用程序能对现有及未来的硬件系统进行高性能的、实时的访问,发挥了硬件的最大潜能,也使应用程序安装和设置的复杂度大大降低。使用DirectX 提供的编程接口,软件开发人员能充分的利用硬件特性,却不用操心硬件的具体实现。基于 Windows 的高性能游戏将从下列技术中获利:a) 专门为提高速度而设计的加速卡b) 即插即用及其它 Windows 硬件和软件c) Windows 内建的通信支持(包括Direc

33、tPlay)2. 为硬件开发提供的规范 DirectX建议硬件设计遵循一定的规范,这个规范的制订基于高性能应用程序的开发者和独立硬件供应商的反馈,因而,DirectX程序员参考的有关内容甚至可能对现在尚未出现的加速硬件的特性进行描述,另一方面,软件也可能仅仅关心在规范所限范围之内的硬件能力,而略过那些不被规范所支持的特性。DirectX分为普通的安装包和开发工具包。安装包提供了对DirectX程序的支持,安装了Windows操作系统的PC机,一般都需要安装DirectX的普通安装包,从而支持使用DirectX游戏。DirectX开发工具包,即DirectX SDK(DirectX Softwa

34、re Develop Kit),它提供了开发DirectX程序所需的库文件、头文件、开发文档、还有代码例子。2.2 DirectX的基本结构及组成2.2.1 DirectX的基本结构DirectX需要以设备无关的方法提供设备相关的性能,所以DirectX 的结构是由两个驱动程序构成:硬件操作层(HAL)和硬件模拟层(HEL),当DirectX对象创建时,会同时建立一张“兼容表”,其中记录了当前硬件系统支持的功能,当DirectX需要实现某个功能时就查询该表,得到硬件对功能的支持信息,如果功能能够得到硬件支持,则向HAL发出请求 ,以得到硬件的支持,否则就向HEL发出请求,以模拟方式实现该功能。

35、图21所示的是DirectX的基本结构。图2-1 DirectX的基本结构2.2.2 DirectX的基本组成DirectX SDK是微软所开发出的一套API函数库,最初用于游戏的开发,如今许多的多媒体软件都是使用它所开发出来的。DirectX中包含了各种组件用来处理2D和3D图像、声音、网络连接以及控制各类输入装置,是游戏开发中不可缺少的主角。它包含了编制计算机游戏和多媒体应用程序的最新技术和工具,为广大的程序员提供了一整套的应用程序接口API,使程序员能够设计高性能实时的应用程序。图2-2描述的是DirectX的基本组成:图2-2 DirectX 基本组成DirectX 目前主要由表21所

36、示的七个主要部分组成:组件描述DirectDraw为程序直接访问显存提供接口,同时和其它的Windows应用程序保持兼容。Direct3D为访问3D加速设备提供接口。DirectInput为各种输入设备提供接口,比如鼠标,键盘,力反馈游戏手柄和操纵杆等DirectPlay为游戏提供网络功能接口,比如支持通过IPX, TCP/IP,P2P等协议进行游戏中的数据传输。DirectSound为访问声卡提供接口,支持WAV、MIDI 等文件的直接播放。DirectMusic此接口主要是生成一系列的原始声音采样反馈给相应的用户事件。处理基于消息的音乐数据。它支持乐器数字接口(MIDI)并为创建交互式音乐

37、提供创作工具。DirectSound3D通过此接口,可以模拟出某一个声音在三维空间中任何一个位置的播放所产生的效果,从而达到逼真的环绕立体声。表2-1 DirectX主要组件2.3 DirectX主要组件介绍2.3.1 DirectDraw组件DirectDraw是DirectX SDK的主要组件之一,它允许直接对显示内存操作,支持硬件位块传输、硬件覆盖、表面翻转,并且保持同目前基于Windows的应用程序和驱动程序兼容。DirectDraw是一种软件接口,除了能直接对显示设备存取外,还保持了与Windows图形设备接口(Graphics Device Interface,GDI)的兼容性。D

38、irectDraw主要提供了完成以下任务的工具:管理多页面 、直接访问视频RAM 、换页(Page flipping)、后台缓存(Back buffering)、管理调色板(Palette)、裁剪(Clipping)、视频端口(Video port)。图2-3显示了DirectDraw, 图形设备接口 (Graphics Device Interface,GDI), 硬件操作层(Hardware Abstraction Layer,HAL), 硬件抽象层 (Hardware Emulation Layer,HEL) 及硬件(Hardware)之间的关系。DirectDraw 组件与 GDI 位

39、于同一层次,都通过一个与设备相关的抽象层来直接处理硬件设备。与GDI 不同的是,DirectDraw会尽可能的利用硬件的加速特性。如果硬件不支持某种特性,DirectDraw会使用硬件抽象层 (HEL)试图将该特性进行软件模拟。DirectDraw可以以设备环境(DC)的形式提供页面存贮器,使得开发者可以使用 GDI的函数操作页面对象。 图2-3 DirectDraw与GDI、HAL、HEL、硬件的关系(1)硬件操作层(Hardware Abstraction Layer,HAL)DirectDraw 通过硬件操作层(HAL)提供设备索引。HAL是特殊设备接口,由硬件厂商提供,DirectDr

40、aw可以直接操作硬件,程序无须与HAL进行接触。相反,通过HAL提供的基础结构,DirectDraw 使用相同的结构让应用程序来显示图形。 硬件制造商在Windows下实现的HAL包含16-bit及32-bit的代码。在Windows NT下,HAL则是纯32-bit的代码。HAL可以是显示卡驱动程序的一部分或单独的动态衔接库,以驱动程序的接口来通信,接口是由驱动程序设计者定义的。(2)硬件抽象层 (Hardware Emulation Layer,HEL)当通过硬件操作层(HAL)硬件无法支持某些特性,DirectDraw 就试图对其进行模拟,这个功能是通过硬件抽象层来实现的。HEL提供的与

41、HAL相同的功能。还有,在HAL, 程序并不直接与HEL工作。在主要功能上其结果大体相同, 而程序不必理会是由硬件提供的还是HEL模拟的。2.3.2 Direct3D组件Direct3D提供了在窗口操作系统上运行3D互动游戏的可能,它提供了独立于各种3D图形加速硬件的一些独立调用函数。用户可以在两种模式下使用Direct3D,即立即模式(Immediate Mode)和保留模式(Retained Mode)。Direct3D立即模式适合于快速开发,Direct3D保留模式为高级、实时的三维图形提供了更高层的支持和为层次结构和动画之类的图形技术提供内在支持。Direct3D保留模式建立在 Dir

42、ect3D立即模式之上。 Direct3D 为程序开发人员提供了许多高级功能,如:可切换的三度缓冲(使用 z-buffer或w-buffer),平面和Gouraud阴影,多种光线和光线类型,丰富的素材和纹理支持功能,可靠的软件仿真驱动程序,变换和裁剪,与硬件无关性,在 Windows NT上的完全硬件加速(提供合适的设备驱动程序时),对专门的 CPU 指令集的内嵌式支持,其中包括Intel 的MMX和Pentium III结构以及AMD 3DNow!结构。2.3.3 DirectSound组件DirectSound提供了程序和音频适配器的混音及播放功能之间的链接。还支持波形声音的捕获和播放。D

43、irectSound 为多媒体应用程序提供低潜伏混合、硬件加速以及直接访问声音设备。在维护与现有设备驱动程序的兼容性时提供该功能。Direct Sound的设计目标是提高声音的输出速度实现多路声音混合播放。2.3.4 DirectInput组件DirectInput为Windows环境的游戏和实时多媒体应用程序处理输入设备信息,尤其对游戏控制器和力反馈设备提供了完备的支持。DirectInput和其他DirectX组成部分一样,是通过硬件抽象层和硬件仿真层来实现,但是一般来说,所有的游戏控制器都有合适的驱动程序来支持,所以一般来说使用硬件仿真层的内容并不多,大多数的控制器是通过DirectX调

44、用驱动程序来完成。DirectInput可识别三种基本设备类型:1.键盘,标准系统键盘。2.鼠标,这一类中包括所有类似于鼠标的设备,如触摸板、跟踪球以及相应的按键。3.游戏杆,相对于其它类型的控制器和力反馈设备而言,这是易于产生误解的名称,其范围从简单的游戏杆直至虚拟现实的复杂设备。2.3.5 DirectPlay组件DirectPlay是为了满足现在流行的网络游戏而开发的API,它是一个用于连接传输协议和网络设备之间的接口程序。DirectPlay支持多通信协议,可以运行在采用TCP/IP或者是IPX协议的网络上,甚至也可以使用Modem进行连接,而且DirectPlay还为将来的协议预留了

45、很好的扩展空间。DirectPlay 提供了高级的传输层服务(例如,有保证或无保证的传递,慢速链接上的通讯扼杀,以及放弃连接检测等),也提供了会话层服务(包括玩家名称表管理和点对点主机转移)。图2-4显示了DirectPlay体系结构,以及它如何提供与通讯服务提供程序无关的独立性。图2-4 DirectPlay体系结构3. 游戏的内容3.1游戏简介目前的游戏种类繁多,包括角色扮演、模拟经营、即时战略、射击、体育运动等等,甚至有的游戏包含了好几种类型。由于我自己比较喜爱操控简单的射击类游戏,对二维平面射击类游戏也比较了解,因此制作了一个基于二维平面的飞机射击游戏。玩家在游戏中控制一架飞机,与敌人

46、的飞机对战。游戏中玩家的飞机可以进行多个动作,通过射击,扔炸弹等多种手段消灭敌人的飞机。敌机的各种行为是通过简单而有效地人工智能来控制的。在游戏中包含的主要的内容如下:1:在游戏中主要有:敌机,玩家的飞机,子弹,炸弹等。2:游戏的状态有两种:战斗,加速/减速。3.2游戏中的元素1.敌机敌机在游戏中扮演的是一个极为重要的角色。在游戏中敌机的目标只有一个攻击玩家的控制的飞机,最终完成占领任务。当然,在游戏中,敌机的数量肯定是很多的。这些敌机在为了消灭玩家的飞机,不惜任何代价,主要的攻击方式有二种:1. 射击。这是敌机攻击玩家的主要手段,敌机射出子弹后,并非会立即终结玩家的飞机。单纯的这种射击行为是不会对玩家造成任何威胁的。只有当敌机射出的子弹,击中玩家所控制的飞机时才有对玩家的飞机起作用,并一次性地将玩家的飞机击毁。2. 撞击。这也是敌机进行攻击的一种手段。敌机的数量多,而且不择手段地攻击,所以敌机在必要的时候会选择撞击来攻击玩家控制的飞机。一旦这种攻击行为成功的话,这是致命的,可以直接地将玩家的飞机的撞毁。当玩家的飞机数量为0时,游戏会自动结束。当然,为了

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922