电子游戏设计与实践俄罗斯方块.doc

上传人:文库蛋蛋多 文档编号:2399693 上传时间:2023-02-17 格式:DOC 页数:45 大小:637KB
返回 下载 相关 举报
电子游戏设计与实践俄罗斯方块.doc_第1页
第1页 / 共45页
电子游戏设计与实践俄罗斯方块.doc_第2页
第2页 / 共45页
电子游戏设计与实践俄罗斯方块.doc_第3页
第3页 / 共45页
电子游戏设计与实践俄罗斯方块.doc_第4页
第4页 / 共45页
电子游戏设计与实践俄罗斯方块.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《电子游戏设计与实践俄罗斯方块.doc》由会员分享,可在线阅读,更多相关《电子游戏设计与实践俄罗斯方块.doc(45页珍藏版)》请在三一办公上搜索。

1、电子游戏设计与实践目 录摘 要IABSTRACTII第一章 绪论11.1 电子游戏及其分类11.2 电子游戏发展现状11.2.1 电子游戏在国外的发展现状11.2.2 电子游戏在国内的发展现状21.3 设计工具简介4第二章 游戏设计概论52.1 游戏设计导论52.1.1 为什么使用Visual C+来设计游戏52.1.2 游戏舞台的坐标系统62.2 游戏架构与规划72.3 游戏剧本的规划与设计8第三章 动画的制作113.1 控制动画显示时间113.1.1 定时器的运用113.1.2 显示动画113.2 特殊动画效果123.2.1 镂空动画技巧123.2.2 半透明动画技巧133.3 物体的移动

2、143.3.1 匀速和变速运动143.3.2 动量、重力与重力加速度143.4 物体间的碰撞153.4.1 通过范围检测碰撞153.4.2 通过颜色检测碰撞163.4.3 通过行进路线检测碰撞16第四章 消息管理和人工智能184.1 键盘消息184.1.1 处理键盘输入消息184.1.2 使用键盘控制人物移动194.2 鼠标消息204.2.1 处理鼠标输入消息204.2.2 改变鼠标指针214.3 移动型人工智能214.3.1 固定模式移动214.3.2 追逐移动224.3.3 躲避移动234.4 行为型人工智能234.4.1 物体的动作行为234.4.2 查找最佳路径244.5 策略型人工智

3、能25第五章 “俄罗斯方块”游戏设计285.1 游戏简介285.2 创建界面的主框架295.2.1 用ClassWizard生成CPropertySheet295.2.2 CPropertySheet类成员305.3 显示背景315.4 方块的控制和显示325.4.1 显示区域的创建325.4.2 定义方块的数据结构325.4.3 其他关于方块的操作335.5 显示成绩和排名345.6 游戏演示35第六章 总结与展望366.1 总结366.1.1 选题原因366.1.2 收获366.2 展望37致 谢39参考文献40摘 要在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆

4、宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。论文描述了作者所学习过的游戏设计的几个方面,也是游戏设计中最常用的技术。首先对游戏的概念及其发展过程做了整体的描述;接着介绍了游戏设计的基本思路、架构与规划、游戏剧情等游戏策划方面的内容;随后对贴图、动画、物理动作模拟、消息管理、人工智能等方面以Visual C+为例做了一些描述;还以“俄罗斯方块”游戏为例,具体讨论了实现游戏编程的方

5、法,如游戏界面框架的创建、背景显示、方块的控制和显示、成绩和排名等;最后是总结与展望。此次设计在Microsoft Windows XP系统下,以C+为开发语言,在Visual C+开发平台上进行电子游戏的设计与实践。关键词 电子游戏,游戏设计,消息,人工智能ABSTRACTIn the era of high-speed development of electronic information, computer game has enter peoples daily life, become an amusement adapt to old and young. But Game d

6、esign is a combination of fast-moving technology, the complexity of integrating design、 art、audio and software into a single production, so this technology isnt known by everyone. up-to-date, there are few people work at game design all the same, whereas, the development of game industry more faster

7、 than traditional industry as home appliances and automobile, by the reason of this situation, the education and training of person with ability of game design drop behind the development of game industry.This paper described several aspects in game design which the author have learned, there are mo

8、st popular in game design. First, there is an holistic description on the concept of game and its development; Second, several facets in game plan of game design, include basic idea、overhead construction and plan、game plot have introduction; Moreover, several technologies such as pastes the chart、ca

9、rtoon、physical movement simulation、message management、artificial intelligence have expatiate by way of C+. And then use the game “Russian block”, discuss the method of game programming material. For example, design games interface frame clsss、background display、block control and display、grade and ar

10、range etc. Finally is summarize and prospect.The computer game design and practice are designed on Visual C+ developing platform with C+ developing instrument, under Microsoft Windows XP system this time. KEY WORDS Computer game, Game design, Message, Artificial intelligence第一章 绪论1.1 电子游戏及其分类电子游戏,也就

11、是运行在家用电脑、家用电子游戏机或是掌中宝游戏机及街机上的电子游戏程序。电子游戏是一种结合剧情故事、美术、音乐、动画、程序等技术于一身的互动型娱乐软件,涉及到多个行业1。 从电子游戏的分类来看,有着多种分类方式2。传统的游戏分类是按照游戏类型,将其分为即时战略游戏、第一人称射击游戏、角色扮演游戏、策略型游戏等类别。根据游戏运行平台的不同,可将电子游戏分为游戏机游戏、单机版PC 游戏、互动电视游戏、在线游戏和手机游戏。此外,韩国政府将电子游戏业分为家用游戏机游戏、单机版PC 游戏、网络游戏和街机游戏四大类。考虑到中韩游戏业比较接近,论文采用韩国的分类标准。“网络游戏”也就是人们一般所指的“在线游

12、戏”,是指通过互联网进行的电脑游戏,通过人与人之间的互动达到交流、娱乐和休闲的目的。在互联网(局域网)技术出现之前,电子游戏都可以归于单机版游戏,即“人机对战”游戏,或最多是双人对战游戏。而随着互联网技术的出现,通过连接游戏服务器,上百、上千、乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。从网络游戏的分类来看,目前业界还没有一个比较统一规范的分类。随着计算机设备和网络技术的发展,电子游戏在全球得到了迅猛的发展,取得了巨大的成功,已成为当今世界上不可缺少的精神粮食。1.2 电子游戏发展现状1.2.1 电子游戏在国外的发展现状电子游戏是最初产生

13、于美国,1971年,一个还在MIT就读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间。可以说时至今日,电子游戏仍然是外国的天下。美国至今仍是世界第一大游戏市场,它遵循的是以发行商为主的产业开发链模式,根据美国市场调查公司NPD Group调查统计,美国2004年游戏总销售金额(包括家用、掌上型主机及软件)为99亿美元,占了全球游戏市场的45%。其中游戏软件销售的具体数字是:视频游戏软件的销售额达52亿美元(1.6亿套),PC游戏软件销售额达11亿美元(4500万套),掌机游戏销售额达10亿美元(4230万套)。2004年一共大约有2.48亿套游戏售出。据估计,美国每个家庭平

14、均购买过2部游戏3。日本近20年来疯狂赚电子游戏的钱。从上世纪60年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过30多年的耕耘,终于把电子游戏这棵“摇钱树”,培育成第一时尚娱乐产业,垄断全球业界长达10余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在GDP中占有1/5的举足轻重地位。日本游戏业在最辉煌的1998年,曾经占领全球电子游戏市场硬件90%以上,软件50以上3。韩国号称世界上网络游戏产业最发达国家之一。迄今为止,国内网络游戏市场有超过60%的产品来自韩国游戏软件开发商,韩国网络游戏使国内很多游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的

15、成功。 韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多市场培育方面的工作。韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是将、娱乐产业视为新的经济增长点,开始大力扶持。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了“富国兴邦”的重担。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚

16、至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。 在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。1.2.2 电子游戏在国内的发展现状与电子游戏发达的国家相比,我国在电子游戏方面还存在比较大的差距。目前,我国游戏市场正处于发展阶段,但市场上的游戏软件主要来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成

17、为游戏的主流。中国的游戏产业经过80年代初期台湾厂商的探索至90年代,开始了自己的研发、发行的历程,直至网络游戏的风行,让中国的网络游戏开始有了飞速的发展。 1983年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售合约的公司,2000年智冠在台湾股票上市, 2002年其控股的中华网龙在台湾上市。1996年底,UBI SOFT上海分公司暨上海育碧电脑软件有限公司成立。同年,全球游戏软件领军企业EA在中国上海成立办事处。1997年,由尚洋公司制作的血狮正式上市。 1997年,北京新天地互动多媒体技术有限公司成立,该公司引进了古墓丽影III(TombRaider III

18、)、盟军敢死队等著名欧美游戏,并在1999年在中国率先掀起“游戏软件价格革命”,全面推行50元的价格体系,从此正版游戏价格开始贴近大众消费者。 1999年,业内估算中国电脑游戏市场(正版)约1.5亿元人民币。 2000年,大陆华彩软件代理发行第一款中文MMORPG万王之王正式推出,该游戏于1999年在台湾发行,由台湾雷爵资讯(Lager)开发。也在2000年,继万王之王、石器时代、网络三国在台湾上市之后,游戏桔子推出了天堂,游戏桔子成立于1995年,1999年以便利店在台湾奠定了地位。天堂这款由韩国著名游戏公司Ncsoft研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。 2001年初,北京

19、华义在中国大陆地区正式推出了石器时代,华义国际股份有限公司于1993年在台北成立,2001年在台湾股票上市。石器时代成为大陆当时最流行的网络游戏。2001年,天人互动软件技术有限公司在北京成立。当年与SEGA结成PC游戏业务的战略合作关系,发行了樱花大战文明无冬之夜等经典游戏,2002年,引进在欧美网络游戏魔剑(Shadow Bane),这是首款在中国测试的欧美网络游戏。 2001年5月,“联众世界”经过3年多的迅速成长,以同时在线17万人、注册用户约1800万的规模,成为当时世界用户数量第一的在线游戏网站4。2005年1月21日,中央电视台报道:我国网络游戏产业当年增加了50%,今后几年都将

20、以50%以上的速度增长;第一届中国网络游戏年会报道:中国国内网络游戏2004年规模达24.7亿元,2009年规模将达到109.6亿元4。国内游戏市场份额如图1.1所示,大部分为国外游戏所占据,其中韩国游戏占了一半以上5。图1.1 国内游戏市场结构图51.3 设计工具简介本次设计以Visual C+为设计工具进行。C语言是一种高效率的计算机程序设计语言,而Visual C+则是在C语言基础的基础上开发从出的一套功能强大的程序设计工具6。C+是一种通用的程序设计语言,其设计就是为了使认真的程序员工作的更愉快。除了一些小细节之外,C+是C程序设计语言的一个超类。 C+里的最关键概念是类。一个类就是一

21、个用户定义类型。类提供了对数据的隐藏,数据的初始化保证,用户定义类型的隐式类型转换,动态类型识别,用户控制的存储管理,以及重载运算符的机制等。对于追求速度与表现效果的游戏程序,Visual C+可以说是最佳的开发工具。在目前的商业游戏程序设计领域中,大多是使用Visual C+作为开发工具。因为Visual C+有优异的运行速度,还可以直接访问内存。 刚开始形成的是C语言,那些想建立更快更有效的代码的程序员非常欣赏C语言,有一位名叫Bjarne Stroustrup的人却不满足于仅仅是生产快速代码,他想创建面向对象的C语言编程。他开始对C语言的内核进行必要的修改,使其能满足面向对象模型的要求。

22、C+从此产生。Bjarne Stroustrup是C+的最初设计者和实现者。它自诞生以来,经过开发和扩充已成一种完全成熟的编程语言。现在C+已由ANSI、BSI、DIN、其他几个国家标准机构和ISO定为标准。ISO标准于1997年11月4日经投票正式通过。 C+标准演变了许多年。C+模板是近几年来对此语言的一种扩展,模板是根据类型参数来产生函数和类的机制,有时也称模板为“参数化的类型”。使用模板,可以设计一个对许多类型的数据进行操作的类,而不需要为每个类型的数据建立一个单独的类。标准模板库(Standard Tempalte Library,STL )和微软的活动模板库(Active Temp

23、alte Library,ATL )都基于这个C+语言扩展。第二章 游戏设计概论2.1 游戏设计导论在游戏所创造初的虚幻世界里,我们可以进行一趟惊心动魄的冒险行动,或者是与众多武功高手对决,或者是为了保卫地球与外星入侵者打场星际大战等等。本文将揭开游戏程序设计的序幕。2.1.1 为什么使用Visual C+来设计游戏C语言是一种高效率的计算机程序设计语言,而Visual C+是在C语言的基础上开发出的一套功能强大的程序设计工具。对于追求运行速度与表现效果的游戏程序,Visual C+可以说是最佳的开发工具。在目前的商业游戏程序设计领域中,都是使用Visual C+作为开发工具,下面就来说明Vi

24、sual C+在游戏程序开发上所具备的优点6:1优异的运行速度如果您使用过Visual Basic,那么当您在刚开始使用Visual C+来编写程序的时候,可能会不知从何下手,因为Visual C+没有像Visual Basic一样有许多现成的对象函数可以使用。Visual Basic中的现成对象和函数,都是为了让Visual Basic程序员们能够更轻松地开发程序而实现准备的,但这些功能完整的对象函数在执行时会占用很多计算机资源,降低程序运行效率。而Visual C+因为没有这些通用的对象和函数,所以开发出的程序运行速度非常快。在后面的章节中,您将发现即使时需要进行复杂的计算机的图形处理程序

25、,在运行时仍然非常流畅。2直接访问内存在C语言中可以直接用指针来读写计算机内存,而且还提供了许多有关内存处理的函数,直接读写内存的最大好处就是速度快。因为任何程序都必须读取内存,只不过其他程序设计语言都为了防止发生内存读写不当而使用间接管理内存的方式,这样虽然安全,但却比较耗费时间,读写内存的过程如图2.1所示。Visual Basic程序直接读写内存内存直接读写内存内存Visual Basic程序Visual Basic编译程序直接读写内存读写内存间接读写内存图2.1 内存读写过程示意图直接读写内存的方式可以说是一把双刃剑,使用的当将大大提升程序的运行速度,但若是使用不当,将会造成程序运行出

26、错或者计算机死机。3MFC函数库MFC函数库(Microsoft Foundation Class)是Visual C+中的一套完整的函数库,使用MFC可以让程序员很轻松地构建应用程序框架,降低使用Windows API开发应用程序的难度,非常适合初学Visual C+或者游戏程序设计的人。4使用Windows API在Visual C+中使用Windows API是相当容易的,只要在项目中设定所要使用的函数库并引用正确的头文件,就可以使用Windows API的函数与数据类型。有关设定项目链接的函数库以及引用头文件的方法,将在后面介绍。在Visual C+开发环境之下,可以用具有完整面向对象

27、属性的C语言作为程序设计的主体,而且可以很容易地使用MFC、Windows API,甚至整合其他技术(如DirectX和OpenGL)来开发游戏程序。因此,在未来的一段时间之内,Visual C+仍然会是开发程序的最佳工具。2.1.2 游戏舞台的坐标系统 在开始设计游戏时,就要先确定游戏中各对象的位置,这都是通过确定其坐标来完成的,所以在编写游戏程序之前,先说一下有关程序中的窗口区域与坐标系统的概念。1屏幕区、窗口区与客户区任何一个游戏程序,不论是使用全屏幕模式还是窗口模式,都要建立一个窗口。当窗口建立之后,对程序而言,显示屏幕被划分为三个区域:屏幕区(Screen)、窗口区(Window)、

28、客户区(Client)。2坐标点与坐标转换以屏幕左上角为原点,屏幕上的任何位置皆可以用一个坐标来表示,称它为屏幕坐标。当程序中调用某些以坐标点为实参的函数时,都要传递相应的屏幕坐标。如果只知道该点在客户区中的位置,则必须先将它转换为屏幕坐标。转换客户坐标的方法实调用ClientToScreen函数。此外,还可以调用ScreenToClient函数将某一屏幕坐标点转换为其在客户区中的坐标6。2.2 游戏架构与规划在开发游戏之前,先介绍一下一个成功的游戏应该具备的基本要素。与现在的游戏相比,早期的游戏不论在画面的表现上,或是剧情安排上,都显得比较粗糙。在创造一个游戏的时候,为了使游戏尽善尽美,首先

29、要确定下列六项重要的基本要素:游戏主题的确立、剧情的发展过程、主要人物的突出、悬念的安排、节奏的快慢、风格的呈现。下面详细介绍上述几个要素:1. 游戏主题的确立在开始制作一款游戏时,首先要确定游戏的主题。一般而言,可以针对不同文化群的玩家来对游戏主题进行分类,例如以格斗的呈现方式为主题,或者以团队合作一起攻击对方为主题等等。明确的主题可以引起玩家的共鸣,使游戏受到玩家的喜爱。游戏主题可以分为两个部分,一种使以旧题材来带动新观念,另一种是以新题材来牵引旧题材。2. 剧情的发展过程电影中,可以看到两个极为重要的要素:障碍和解决,正是这两种要素推动整个电影故事情节的发展。将这两种要素具体地表现在游戏

30、中时,“障碍”就是游戏过程中,玩家必须解决的难题,而“解决”就是让玩家在排除游戏中的障碍时,根据玩家目前游戏角色的能力情况,来寻求一些有效的解决方法。简单的说,“障碍”就是游戏中的迷题系统,而“解决”就是游戏中的解题系统。在游戏中,可以适当地加入这些要素,为游戏设置障碍和冲突,他们将成为玩家在游戏中不断克服困难前进的动力,因而带动游戏中故事情节向前发展。3. 主要人物的突出游戏中的主人翁时一套游戏里的主要灵魂所在。只有出色的主人翁,才能演绎出动人的剧情故事,使玩家一直流连忘返在游戏故事的剧情中。当成功地设定一名出色的主人翁时,游戏就向成功迈进了一大步。这里有一点需要注意,设计主人翁的时候,不需

31、要将他的特点太脸谱化、流俗化、原形化。简单地说,就是不要将主人翁设定成大众化的人物。游戏里的主人翁如果没有自己独特的个性与形象,就很容易使玩家感到非常无趣和乏味。4. 悬念的安排悬念可为游戏带来紧张和不确定性,其目的是让玩家无法轻易地猜出游戏下一步将会发生什么事情,而且适当地加入悬念可以让游戏更加吸引人。通常悬念的成分会放在游戏故事发展前的内容上。一般而言,会先告诉玩家事情发生后的后果,就好比在一般的侦探小说里,侦探已经知道事情发生的结果了,自己的生命也可能会受到威胁。这一切的安排,就是为了增加读者对故事的紧张气氛。5. 节奏的快慢在制作一款游戏的时候,首先就应该明确地指出游戏的时间观念与现实

32、生活中的时间观念的差别。在游戏中,它的时间是由定时器所控制的,而定时器有两种,分别为事件定时器与真实时间定时器。6. 风格的呈现在一款游戏中,应该从头到尾都保持一致的风格,这非常重要。游戏风格的一致性包括人物与背景的属性,游戏风格的定位等。在一般的游戏中,如果不是为了满足游戏剧情的特殊需要,都会尽量不让游戏中的人物说出超越当时历史时代的语言,尤其是时代的特征。2.3 游戏剧本的规划与设计在开始设计一款游戏的细节时,应遵循一下几项特定的细则:界面的设计、道具的设计、真实与虚构、游戏的死角、游戏的交互性、游戏中的奖励、游戏中的对话。下面详细介绍这几点细则:1. 界面的设计在游戏中,可以把玩家所操作

33、的建模设计成简单明了的文字或图标,这样玩家就比较容易理解与使用,而且玩家会对这些界面感到相当体贴和使用。可以采用符号或图像的界面来表达游戏指令的输入,并且尽量少采用单调呆板的文字菜单方式。如果非要使用文字的化,也不一定要使用菜单来表现,可以使用更为新潮的图形界面来表达。2. 道具的设计游戏中道具的属性是最单纯的,因为道具没有个性与情绪上的变化,将它设定成什么样,它就是怎么样,例如补血道具,它只是为主角补血而已。一次在设计道具的时候,只要去注意道具的合理性就可以了。另外,在设计道具的时候,也要考虑到对象的全面性。例如在游戏中,玩家需要使用弓去打猎。诸如此类,道具设计最困难的地方就是在于它的全面性

34、。3. 现实与虚构当玩家在玩游戏的时候,主要是希望可以从游戏中体验到不同的虚幻生活经历,并且希望从游戏中得到一些心理上的解放。所以游戏的世界观可以是虚构的,不必在乎它的合理性与真实性,而在游戏中所设定的人物、感情或道具等因素则可以是真实的。简单地说,如果游戏的本质核心与现实生活的步调比较接近,这类游戏就比较容易让玩家所接受。4. 游戏的死角在游戏的设计规划中,很容易犯下两种错误,那就是让玩家的主角造成“游走”和“死路”的情况。游走指的是玩家在广阔的地图上任意移动时,他们很难发现游戏下一步的发展线索和途径。因为游戏中的地图太过于宽广,并且游戏中的提示又不是很明显,玩家就很容易在游戏中随意地游走,

35、游戏也就很难再继续进行下去,这不仅会使玩家感到困扰,而且会大大地减少游戏的娱乐性。要避免产生这种游走现象的方法就是在故事发展到一定程度的时候,把游戏世界的范围缩小,让玩家可以到达的地方减少,并且使游戏的发展线索更加明显地显示出来,让玩家可以从中得到更多的提示,这样玩家就能够轻松地找到故事发展目标。死路是指玩家在游戏进行到一定程度后,突然发现自己进入了游戏的死路,而且没有任何可以继续进行下去的线索与场景了,这时候游戏便会卡住。如果遇到的是那些那些需要到储存点才能储存的游戏,玩家可能真的会欲哭无泪,活活给气死。通常出现这种情况的原因是游戏设计者没有做到游戏的全面性,而且没有将游戏中所有可能的流程全

36、部计算处理,这时如果玩家没有按照游戏设计者所规定的路线前进时,玩家就会很容易造成游戏过程中出现死路。5. 游戏的交互性交互性指的是游戏剧情或人物对玩家在游戏中所做的动作或选择产生某些特定的反应。,举个例子来说,当主角在一个洞穴中遇到一个世外高人,在游戏早期时,这个世外高人对主角的态度是不屑一顾,所以每次主角与他对话的时候,他总是爱理不理。知道有人告诉主角说那个世外高人是因为与他所爱的人走散之后,他的个性就变得相当的奇怪。主角为了帮助这个世外高人寻找到他所爱的人,与怪物进行了一场厮杀,最后虽然找到了世外高人所爱的人,但主角也因此受了重伤。当这个世外高人得知消息之后,赶紧向主角答谢,并且帮助主角疗

37、伤,甚至传授高强的魔法给主角。如上所述,当注脚解决了世外高人的难题之后,世外高人对于主角的态度则一百八十度的大转变,主角也因此而得到了室外高人高强的魔法,甚至还可从世外高人的口中得知进行游戏下一个任务的提示,这也就是游戏的交互性。 6. 游戏中的奖励在游戏中,当玩家进行到一定程度的时候,就要给玩家一些奖励,例如精彩的过场动画、漂亮的画面,甚至还可以让玩家所操控的主角得到一些有用的道具或一些可以提升能力的武器装备等。在游戏中,奖励也可以包括隐藏的因子在内,例如隐藏关卡、隐藏人物,甚至于隐藏的过关密码等等。这些无厘头的设计非常有意思,这也是现在的游戏都会加上的功能,但值得注意的是这些设计不可以影响

38、到游戏的正常运行,毕竟这些设计只是一个噱头而已。7. 游戏中的对话游戏中故事剧情的主要表现方式就是对话,可以将游戏中的对话种类分成下列三种:(1)无剧情的游戏,如德军总部游戏。(2)特定对话剧情的游戏,如角色扮演游戏对话游戏。一般而言,角色扮演游戏都会以特定的对话方式来表现游戏中的故事剧情发展,通常这种游戏的故事剧情是以单线的方式来进行的,其故事的交互性较低。(3)选择性对话剧情游戏。在这类游戏中,对话的设计带有情绪性和选择性,玩家可以做出他想选择的对话内容。如果玩家选择其中一个对话,那么其他的话题就会消失,而以后的话题机会依据他第一次所选择的对话而引发。在这里,要注意不要使对话对于单调和重复

39、。一般而言,一款游戏中至少要出现60句以上无意义且常用的对话,而且它们之间又可以互相组合,这样玩家才不会觉得游戏中的对话过于单调无聊。还有也要尽量避免使用太过于简单的字眼,例如“唉!”“早!”等太过于平凡的对话,因为在玩家看来,显得过于草率,而且要尽量采用与目前游戏中情景有关的话题,以提升游戏的娱乐性与真实性。游戏设计是一门非常特殊的学问,它不但是许多技术的组合,而且还包含电影、戏剧、历史、文化等重要的因素,所以如果想要好好地掌控游戏的规划与构架,不仅仅要有创造力、文学功底,甚至对于这些重要的因素都要有一定程度的认识与了解,这样才可能成为一名成功的游戏设计人员。第三章 动画的制作3.1 控制动

40、画显示时间一般而言,游戏中所显示的动画按其呈现的方式可分为两种:直接播放方式和连续贴图方式。直接播放方式经常被用来播放游戏的片头和片尾,例如AVI或MPEG媒体文件。连续贴图方式的成像技术可用来制作动画的效果。3.1.1 定时器的运用定时器(Timer)每隔一段时间就发出一个WM_TIMER消息,当程序接收到这个消息的时候,便可以决定接下来要做哪些事情,通常用在控制动画显示速度上,它是一个使用方便且功能强大的好帮手。建立定时器:CWnd:SetTimer()函数可以用来为窗口建立一个定时器组件,并且每隔一段时间就会自动发出一个WM_TIMER消息。其原型如下:UINT SetTimer( HW

41、ND hWnd, /窗口句柄 UINT nIDEvent, /计数器编号 UINT uElapse, /时间间隔 TIMERPROC lpTimerFunc /回调函数);程序说明:第二个参数是计数器的编号,这个编号是唯一的,在同一个窗口中可以设定多个编号不同的定时器。第三个参数则是定时器发出WM_TIMER消息的时间间隔,以千分之一秒为单位。也就是说,若将此参数设为1000,则每隔1秒就会发出一个WM_TIMER消息。第四个参数则是设定当定时器发出WM_TIMER消息时所要执行的回调函数。如果不使用回调函数,这个参数就可以设为NULL,并在窗口的OnTimer()函数中定义所要执行的程序代码

42、。删除定时器:当建立了一个定时器之后,它就会一直依照所设定的时间间隔发出WM_TIMER消息,如果要停用某个定时器,可以使用下面这个函数:BOOL KillTimer(int nIDEvent);其参数就是要停止的定时器编号。3.1.2 显示动画在显示动画时,可以使用单个定时器,也可以使用多个定时器,还可以使用回调函数来显示动画。在程序中,可以利用Visual C+的Class Wizard功能来加入OnPaint()、OnCreate()以及OnTimer()。当程序接收到WM_TIMER消息时,所要执行的程序代码则定义在OnTimer()函数中。还可以试着调整定时器的时间间隔,这样便可以控

43、制范例中动画的显示速度了。除了使用单个定时器来控制单个动画的显示之外,还可以建立多个定时器来控制多个动画的显示。显示多个动画有两种方式:1、在OnTimer()函数中,根据发送WM_TIMER消息的定时器编号决定要显示哪个动画。2、为每个定时器设定回调函数,由各个回调函数来处理动画的显示。回调函数通常运用在由多个定时器的情况下,分别用来设置各个定时器发出WM_TIMER消息时所要执行的程序。要使用回调函数,必须在类中将其声明为静态成员函数。3.2 特殊动画效果学会了定时器的使用,以及了解了在程序中利用连续显示图像来产出动画的概念之后,将学习镂空、半透明等技巧在动画中的应用。3.2.1 镂空动画

44、技巧镂空图就是将图片中的一部分显示在另一张背景图上,而且除去图中不需要显示的部分。要产生镂空图,只须使用BitBlt函数与Raster运算。制作镂空图的方法很多,不过都是利用不同的Raster运算进行转换,而产生相同的镂空效果。简单来讲,镂空动画就类似于一个人在背景图案上走动的样子。要制作出这样的动画效果,首先必须要有一张背景图片,然后还要有人物走动的连续图案以及相应的蒙版图。接着再利用镂空的技巧,并配合连续显示图片的方式,就可以产生镂空动画的效果了。可以利用设定的定时器在OnPaint()函数中定义代码,便可以显示镂空动画的效果。首先选择背景图,再贴上背景图,然后选择人物图案,根据奇数偶数判

45、断要贴上哪张图;将蒙版图与背景图做AND运算,再将蒙版图与背景图做OR运算,如果时间达到某个设定值,就停止计时器。这样,每当定时器发出WM_TIMER消息时,便会再窗口中重新显示一张跑动的图案,产生镂空的效果,直到定时器停止,动画便停止。上面所示的动画会出现动画闪烁的问题,这是因为直接在窗口中连续贴图的缘故。要解决这样的问题,就必须要建立一个内存的DC,然后将所有的贴图的动作都在这个DC上进行,最后才把结果显示到操作窗口中,其流程图如图3.1所示。 蒙版背景人物暂存DC1暂存DC2操作窗口图3.1 用DC实现贴图照着图中的步骤依次处理背景、蒙版与人物图案,而所有贴图与Raster运算的动作都是

46、在内存DC中执行,直到最后才将结果贴到操作窗口中,这样便可以解决镂空动画闪烁的问题3.2.2 半透明动画技巧半透明效果在游戏中使用也相当频繁,如透明的人物或者是一些画面特效等。这些都要利用到制作半透明效果的技巧。要制作半透明效果,必须先决定图形所要显示的透明度,例如透明度100就是完全透明,透明度50就是半透明。制作半透明效果的步骤如下:1、取出位图的各个象素点,将各象素点的RGB值乘以透明度百分比,然后将它放入到一个内存数组中。2、取出背景图与位图重叠部分的象素点,将各象素点的RGB值乘以透明度百分比,然后再将其放入另一个内存数组中。3、将前两个步骤做产生的数组相加,就产生了所有半透明图的色

47、彩值了。假设要制作透明度为30的半透明图,则大致的计算公式如下:半透明图色彩来源图色彩30背景图色彩70。制作半透明动画是一件浩大的工程,因为每次图案移动时,它就必须重新取出背景与位图所有象素的RGB值,再依公式相加组成新的位图,然后再把图案显示出来。构想一个程序,一开始在窗口右边出现一个人物,接着人物往左边移动,每次移动的时候就会渐渐变得透明,最后消失不见。步骤如下:1. 将要贴上人物的背景图部分取出,放入一个内存DC中。2. 将人物与内存DC中的背景图做镂空处理。3. 取出步骤2中内存DC中最后所产生位图的所有RGB色彩值,并乘以透明度,放入一个数组中。4. 再次取出如步骤1中背景图的所有RGB色彩值,并与步骤3的数组做半透明的计算机,最后产生半透明图片的RGB色彩值数组,依此数组设定位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号