动画与游戏设计陈俊.docx
《动画与游戏设计陈俊.docx》由会员分享,可在线阅读,更多相关《动画与游戏设计陈俊.docx(24页珍藏版)》请在冰豆网上搜索。
动画与游戏设计陈俊
中国矿业大学计算机学院
11级本科生课程报告
课程名称动画与游戏设计
报告时间2014.6.27
学生姓名陈俊
学号
专业计算机科学与技术
任课教师张辰
任课教师评语
任课教师评语
(①对课程基础理论的掌握;②对课程知识应用能力的评价;③对课程报告相关实验、作品、软件等成果的评价;④课程学习态度和上课纪律;⑤课程成果和报告工作量;⑥总体评价和成绩;⑦存在问题等):
成绩:
任课教师签字:
年月日
中文摘要
飞机大战是滚动屏动作类游戏的一种,其中融入了很多动作类游戏特有的技术,并且画面流畅、声音震撼。
当今网络发展迅速,益智类游戏被广泛运用到网络各大平台上。
但是编码对于一个编程能力较弱的人来说不太容易实现,可是这又是否意味着不能实现自己第一款游戏呢?
Gamemaker的出现解决了这个问题。
这款软件是可视化的操作,很容易上手,按照教程学习,一个星期就可以完全设计出一个属于你自己的游戏
本文利用Gamemaker开发思想对飞机大战游戏系统的分析、设计及实现过程。
本论文的前半部分将简要介绍系统相关的行业信息及基础的技术知识,后半部分将对本人在系统各模块中所使用的关键技术的实现进行了全面的介绍。
关键词(字):
Gamemaker,可视化,飞机大战
ABSTRACT
WorldWarIIaircraftisascrollingactiongame,whichareintegratedintoauniquemanyactiongamestechnology,andscreensmooth,soundandshock.Intoday'srapiddevelopmentofthenetwork,puzzlegamesarewidelyappliedtovariousnetworkplatform.Butthecodeforaprogrammingabilityweakpeopleisnoteasytoachieve,butitalsomeanscannotachievetheirfirstgame?
Gamemakersolvedthisproblem.Thissoftwareisvisualoperation,easytouse,inaccordancewiththetutorial,wecandesignabelongtoyourowngameaweek
Inthispaper,usingGamemakerdevelopmentthoughtanalysis,anddesignofaircraftwargamesystemimplementationprocess.Thefirstpartofthispaperwilltechnologybasedonrelevantindustryinformationandgivesabriefoverviewofthesystem,thesecondpartwillrealizethekeytechnologyusedinallmodulesinthesystemwereintroduced.
Keywords(words):
Gamemaker,visualization,WorldWarIIaircraft
1.前 言6
2.GameMaker的背景介绍7
2.1系统的可行性8
2.1.1经济可行性8
2.1.2技术可行性8
2.1.3法律可行性8
2.1.4市场可行性8
3.游戏素材8
3.1开始界面游戏素材8
3.2第一关游戏素材8
3.3第二关游戏素材10
4.游戏功能11
4.1初始界面设计11
4.2第一关游戏设计13
4.3第二关游戏设计13
5.设计具体操作15
5.1创建精灵15
5.2创建对象15
5.2.1创建事件对象15
5.2.2创建对象中的事件16
5.2.3游戏动作的设计17
5.2.4游戏各个关卡中用到的触发器分析19
5.3设计游戏关卡25
6.软件生成26
7.发游戏过程中遇到的瓶颈26
8.实验总结27
9.参考文献27
1.前 言
随着3G移动网络应用的推广,手机游戏的规模、复杂程度日益增强;其技术手段、设计思想、系统体系结构都发生了深刻的变化。
操作系统正朝着高处理能力、多功能、智能化的方向发展。
近年来,网络文化市场发展很快,随着互联网的迅速普及、宽带的接入社区和家庭,我国网络游戏市场发展迅速并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展。
现在,游戏的类型也由最初的动作游戏和简单益智游戏向更复杂、更高智力,更具真实性的游戏发展。
目前的游戏种类繁多,包括角色扮演、仿真模拟类、人工智能、休闲渲染类、网络类等等,甚至有的游戏包含了好几种类型。
机战类游戏一直以来都很多。
但仿真模拟类的游戏却有不少,现在休闲类的技术广泛的应用到很多游戏里面等等。
飞机大战游戏是广泛人士喜爱的游戏,通过WSAD键控制方向SPACE键发射子弹,游戏中有加血道具与子弹升级道具。
并有关卡BOSS等着与你死战。
鉴于游戏的对社会的巨大影响力和光辉的发展前景,以及我们自己对游戏爱好,这次我决定尝试设计和制作一个具有一定可玩性的游戏。
期间,我收集相关资料、研究同类型的游戏、阅读有关这类型游戏和相关技术性的书籍,通过制作游戏项目来熟悉游戏的制作思路、过程,加深对面向对象编程语言的掌握,培养自己的耐心、细心和考虑问题的全面性,同时解决本课题要完成的问题,如游戏框架如何构建,如何完善游戏的各种功能,如何能让游戏有音乐和音效的实现,如何能让游戏过关,如何能让游戏界面美观,看起服的感觉。
2.GameMaker的背景介绍
GameMaker是一款拥有图形界面,可灵活编程,以2D游戏设计为主的游戏开发软件。
GameMaker软件由MarkOvermars使用Delphi语言开发,现最新版本为GameMaker8.1。
游戏制作工具GameMaker的开发商YoYoGames于日前推出了旗下游戏制作工具GameMaker的HTML5版本。
(可在官方网站查看)该版本将支持用户在任何平台上开发出能在任意HTML兼容浏览器上可运行的游戏。
此次新版本被命名为GameMaker:
HTML5。
GameMaker:
HTML5将会输出游戏到与HTML5相兼容的JavaScript,无需额外的插件或者额外的安装。
这个新版本采用了与前GameMaker版本相同的用户界面以及拖放功能。
此外,新版本中还加入了一些新的功能,包括TeamCollaboration。
TeamCollaboration将可以支持多团队成员同时进行一个项目开发。
GameMaker最大的价值在于其内置的一套编程语言——TheGameMakerLanguage(GML)。
GML高度概括了2D游戏设计能用到的共通编程语句,往往浓缩为一个简短灵活的函数,是“文字版的按钮”,使设计游戏更为灵活。
其与图形界面中的按钮有对应关系。
使用按钮入门游戏制作的用户,可以从“我熟悉的按钮所对应的GML”来进阶学习。
举例:
我们要做一个跟踪导弹。
只需在导弹的循环动作中添加一行move_towards_point(Enemy.x,Enemy.y,Speed)
这样便做好了对Enemy跟踪的导弹,跟踪速度为Speed。
GML的潜在价值是不可估量的。
在世界游戏开发领域,我们经常碰到这样的事情:
大家在设计同一种游戏,却用的是不同编程语言,怎么交流呢?
如同真实世界中,人们出现语言隔阂,可以用手势、表情与图画表达心意,程序员之间也可以用大家都理解的“伪代码”交流。
GML与这种“伪代码”相似甚至相等。
从某种意义上讲,用GML表述出来的程序逻辑已经简洁到极端。
当从事复杂的游戏设计时,使用GML来描述结构,其明晰程度可谓首屈一指。
随着独立游戏制作界整体水平逐步提高,这种潜在价值将愈加明显。
这些特色,使得一个GameMaker高级用户,即便是应付复杂游戏,也能以难以置信的高速制作;即使把游戏设计作为业余爱好,也能相对轻松步入最高阶段——对游戏引擎结构进行优化调整。
这都归功于GameMaker作者出色的设计才能。
2.1系统的可行性
2.1.1经济可行性
本程序设计游戏所需要的资源和图片都可以从网上免费下载,不需要成本。
因此具有经济可行性。
2.1.2技术可行性
本程序对操作系统没有什么要求,是XP系统,Window7/8/8.1皆可,对技术操作要求不高,但是需要很好的逻辑思维,现在的技术能够很好的实现。
2.1.3法律可行性
本游戏设计关卡模块都由自己独立开发,不会出现侵犯版权等问题。
不存在不良资源,因此具有法律可行性。
2.1.4市场可行性
本程序全面免费,可以推广使用,具有市场可行性
3.游戏素材
3.1开始界面游戏素材
●名称:
background5
简单描述:
作为游戏开始界面背景;
●名称:
yinxingwuti
简单描述:
一个开始游戏的贴图,当玩家鼠标左击此图片时会自动跳转到第一关;
3.2第一关游戏素材
●名称:
wanjiafeiji
简单描述:
玩家所要操控的飞机,用于发射wanjiazian击毁敌机得分,与敌机子弹或者敌机碰撞会受到伤害;
●名称:
diji1
简单描述:
从屏幕上方向向下移动,与玩家飞机碰撞会造成伤害并且销毁,速度为3.5,自动循环出现
●名称:
diji2
简单描述:
从屏幕上方向向下移动,会自动向前发射direnzidan,与玩家飞机碰撞会造成伤害并且销毁,速度为2.5;
●名称:
diji3
简单描述:
从屏幕上方向向下移动,会自动向前发direnzidan2,与玩家飞机碰撞会造成伤害并且销毁,速度为2.5;
●名称:
wutibaozha
简单描述:
当敌机被摧毁的时候应用在敌机身上,产生爆炸的效果;
●名称:
zijibaozha
简单描述:
当玩家飞机被摧毁时应用在玩家飞身上,产生爆炸效果,与敌机爆炸效果不同;
●名称:
direnzidan
简单描述:
以速度7向下匀速运动,碰到玩家飞机会造成伤害;
●名称:
direnzidan2
简单描述:
以速度7向下匀速运动,碰到玩家飞机会造成伤害;
●名称:
background2
简单描述:
作为第一关的关卡地图背景,以速度1向下匀速滚动;
●名称:
yinxingwuti
简单描述:
一个隐形物体,用于设置一个音乐播放器,循环播放背景音乐;
●名称:
tirgger
简单描述:
作为第一关的一个触发器,在里面设计飞机循环调用,构建玩家飞机的生命值和血槽还有得分。
除此之外还有什么时候开始游戏,什么时候结束游戏,什么时候重新开始游戏;
●名称:
UI
简单描述:
用于存放显示得分,血槽和生命值等;
3.3第二关游戏素材
●名称:
wanjiafeiji2
简单描述:
第二关中玩家所要操控的飞机,用于发射wanjiazidan击毁敌机得分,与敌机子弹或者敌机碰撞会受到伤害;
●名称:
wanjiafeiji3
简单描述:
第二关中玩家吃到绿色弹药时产生的飞机,用于发射wanjiazidan1和wanjiazidan2击毁敌机得分,与敌机子弹或者敌机碰撞会受到伤害;
●名称:
diji11
简单描述:
从屏幕上方向向下移动,与玩家飞机碰撞会造成伤害并且销毁,速度为3.5,自动循环出现
●名称:
diji22
简单描述:
从屏幕上方向向下移动,会自动向前发射direnzidan11,与玩家飞机碰撞会造成伤害并且销毁,速度为2.5;
●名称:
diji3
简单描述:
从屏幕上方向向下移动,会自动向前发direnzidan22,子弹会自动追踪玩家飞机进行射击,与玩家飞机碰撞会造成伤害并且销毁,速度为2.5;
●名称:
diji4
简单描述:
从屏幕上方向向下移动,会自动向前发direnzidan3,子弹会自动追踪玩家飞机进行射击与玩家飞机碰撞会造成伤害并且销毁,速度为2.5;
●名称:
wutibaozha
简单描述:
当敌机被摧毁的时候应用在敌机身上,产生爆炸的效果;
●名称:
zijibaozha
简单描述:
当玩家飞机被摧毁时应用在玩家飞身上,产生爆炸效果,与敌机爆炸效果不同;
●名称:
direnzidan11
简单描述:
以速度7向下匀速运动,碰到玩家飞机会造成伤害;
●名称:
direnzidan22
简单描述:
以速度7向下匀速运动,会追踪玩家进行射击,碰到玩家飞机会造成伤害;
●名称:
direnzidan3
简单描述:
以速度7向下匀速运动,会追踪玩家进行射击,碰到玩家飞机会造成伤害;
●名称:
xue
简单描述:
以速度2向下匀速运动,与玩家飞机碰撞会补充飞机的生命值。
●名称:
danyao
简单描述:
以速度2向下匀速运动,与玩家飞机碰撞会使玩家飞机升级成玩家飞机3,发射不同方位的子弹。
。
●名称:
background3
简单描述:
作为第二关的关卡地图背景,以速度1向下匀速滚动;
●名称:
yinxingwuti2
简单描述:
一个隐形物体,用于设置一个音乐播放器,循环播放背景音乐;
●名称:
tirgger2
简单描述:
作为第二关的一个触发器,在里面设计飞机循环调用,构建玩家飞机的生命值和血槽还有得分。
除此之外还有什么时候开始游戏,什么时候结束游戏,什么时候重新开始游戏;
●名称:
UI
简单描述:
用于存放显示得分,血槽和生命值等;
4.游戏功能
4.1初始界面设计
初始界面比较简单,就是利用文本框写了游戏的名字飞机大战,在开始游戏这个文本上方设计了一个隐形物体,设置为不可见的,当鼠标左键开始游戏,其实是隐形物体时,游戏就会自动跳转到下一关。
4.2第一关游戏设计
在本关中,玩家飞机可以通过WSAD键来进行控制玩家飞机的上下左右移动,按下空格键就会射击出子弹攻击摧毁敌机,当玩家子弹和敌机子弹发生碰撞时会相互抵消;
这是敌机1,不会发射子弹,会以3.5的速度向下匀速飞行;
这是敌机2,会自动向前发射子弹,,以2.5的速度向下匀速飞行;
这是敌机3,这是敌机2,会自动向前发射子弹,,以2.5的速度向下匀速飞行;
当玩家飞机与这三种飞机碰撞到时会摧毁这些飞机,但是自己会受到伤害。
当玩家飞机被敌机子弹击中时也会受到伤害。
玩家飞机击杀敌机1获得10分,击杀的敌机2获得20分,击杀敌机3获得30分。
当玩家分数超过200分的时候,游戏将会自动跳转到关卡2.
4.3第二关游戏设计
在本关中,玩家所操控的飞机鸟枪换炮了,换上了新的外形,但是功能和第一关的飞机本质上是一样的。
本关卡设计比第一关要复杂了有些,在其中加入了一些随机生成的道具,比如说血球和弹药球:
当玩家吃到血球时可以增加之前因为受到伤害而损失的生命值,当玩家吃到弹药的时候,玩家飞机2将会变成玩家飞机3,此时的玩家飞机3不仅会向前发射子弹,还会向左上和右上方向发射子弹。
第二关总体来说要比第一关要难一些,具体表现在现在的敌机3和敌机4不再只向前方发射子弹了,它会自动向玩家所在的位置发射自子弹,瞄准玩家射击。
于此同时,敌机4不再像其他飞机一样一下子就会被打死,玩家需要攻击很久才会摧毁敌机4.同时为了美观,我还设计飞机阵列,当一定时间后,飞机将会排着整齐的队伍一起飞过来,很油没干当玩家积分超过1000以后,本游戏自动结束,又或者当玩家生命全都消耗完了游戏就会结束,显示高分榜。
以下是部分游戏截图:
5.设计具体操作
5.1创建精灵
右击Sprite可以创建精灵,点击loadsprite选择你要导入的精灵图片,点击ok即可完成精灵的创建。
5.2创建对象
5.2.1创建事件对象
右击objiect事件对象,导入刚才创建的精灵
5.2.2创建对象中的事件
在创建的对象中添加一个新的事件,操作如下:
●创建事件:
创建时间是当对象的实例被创建时触发的时间。
他是对象实例第一个执行的时间,一般用来为实例设定特定变量,定义实例开始时的动作。
●破坏事件:
破坏事件是当对象实例被删除时触发的时间。
●计时器事件:
每个势力可以有12个记事起事件,可以精确控制对象实例在某个时刻发生某个动作,可以给时钟设置一定的动作,再给使职工设置一个倒数计时的步数,当步数到达时开始触发相应的时钟中的事件。
●步事件:
步事件发生咋游戏的每步。
可用于防治在哪些连续执行的动作。
例如如果要使一个对象总是跟随另一个对象,可以在步事件下的动作里设置。
●碰撞检测事件:
当两个对象实例发生碰撞时触发撞击事件。
碰撞检测是游戏中非常重要的一部分,比如玩家子弹和敌机碰撞后就要用得到碰撞检测事件,可设置玩家子弹消失,被碰撞的敌机消失。
●键盘事件:
当按下键盘键时触发相应的事件。
每个按键可设置不同的事件。
注意:
当按住键盘不放手时,按键事件下的动作会一直执行。
在本游戏设计过程中用到的最多的就是碰撞检测事件了,因为飞机不可能无限制的在生成,玩家要做的是利用子弹击毁敌机得分,那到底什么时候才开始击毁敌机呢,玩家飞机又怎样吃到弹药补充生命和弹药呢,这时候利用的就是碰撞检测了。
举个例子,我在敌机12身上就设置了两个碰撞检测事件,一个是敌机12与玩家子弹发生碰撞时,要做的事件就是销毁敌机12,同时把玩家的子弹也销毁,然后利用创建动作在敌机被销毁的时候在相对敌机位置创建一个爆炸效果,同时改变玩家的得分。
5.2.3游戏动作的设计
●固定移动
方向:
单击箭头按键选中某方向,按键由蓝色变成棕色,确定移动方向,该选项窗口中还有移动速度的设置,如图:
●朝制定方向移动:
该动作使用可朝着指定的方位移动,在游戏中的第二关中用到过,让敌机的子弹朝着玩家飞机的方位发射,如图:
●随机函数:
random(room_width)
以云朵为例,为加深游戏的美观性,添加两片云朵使得游戏美观。
云朵向下移动,当云朵从游戏画面最下方消失后会自动销毁,然后在x坐标随意,y=0处随机生成,再继续周而复始的出现下降,具体如图:
5.2.4游戏各个关卡中用到的触发器分析
●第一关trigger如图:
●创建一个事件,执行的动作是建立分数为0,建立生命值为3,建立血液值100,设置时钟0在15步后触发,触发后创建wanjaifeiji;设置时钟1在15步后触发,,触发后建立diji1,750步循环一次;设置时钟2在45步后触发,触发后建立diji2,1200步循环一次;设置时钟3在300步后触发,,触发后建立diji3,4000步循环一次。
●设置一个检测每步分数的事件,当分数大于200时就自动跳转到第二关。
●当没有生命值时:
显示排分榜,然后重新开始游戏。
●如果飞机生命值为0时:
删除玩家飞机,重新建立玩家飞机,地点相对于消失的飞机位置不变;同时生命值减一,血槽加满。
●建立血槽,计分板和生命值的位置。
●第二关trigger2如图:
●创建一个事件,执行的动作是建立分数为0,建立生命值为3,建立血液值100,设置时钟0在15步后触发,触发后创建wanjaifeiji2;设置时钟1在15步后触发,,触发后建立diji12,300步循环一次;设置时钟2在45步后触发,触发后建立diji22,300步循环一次;设置时钟3在800步后触发,,触发后建立diji4,300步循环一次;设置时钟4在500步后触发,,触发后建立三架并排的diji22;设置时钟5在520步后触发,,触发后建立两架并排的diji33。
设置时钟6在100步后触发,,触发后建立xue,400步循环一次。
设置时钟7在120步后触发,,触发后建立danyao,1500步循环一次。
●创建玩家飞机2,同时设置全局变量wanjiacunhuo为1:
设置全局变量的作用是当玩家死亡时发射自动寻找玩家位置的子弹找不到玩家从而出现问题。
●如果分数大于1000分时执行结束游戏命令,游戏直接结束。
●没有生命值时:
显示排分榜,然后重新开始游戏。
●如果飞机生命值为0时:
删除玩家飞机,重新建立玩家飞机,地点相对于消失的飞机位置不变;同时生命值减一,血槽加满。
●建立血槽,计分板和生命值的位置。
5.3设计游戏关卡
首先你得构建好你这个游戏要设置几个关卡,像我由于时间仓促只设计了两个关卡。
右击rooms创建一个新的房间,作为你的关卡,然后需要将你之前设计那些精灵物体添加到关卡之中,你现在所添加的位置将会是到时候游戏启东时物体所在的位置,因此你可以考虑一下,控制好距离。
由于我是利用的时钟来调用创建物体,所以在此关卡之中你是看不到我所设置的物体的。
在此我说下利用时钟调用的好处,那就是你不必特意去设计物体位置,毕竟地图也就这么点大,你不可能一下子就将所有希望它出现的物体全部排列在地图上。
比如像是一些boss机,大家也都知道boss机肯定要到游戏快要结束的时候才会出来的。
如此一来,用传统的排列位置是实现不了这个功能的,因此只能使用时钟调用,你可以在触发器里面设计一个时钟0,在4500步也就是150秒以后调用该时钟,该时钟的作用是创建boss机,每3000步循环一次,也就是每100秒循环创建一架boss机,增加了游戏的可玩性。
6、软件生成
6.1软件生成
单击“文件”菜单中的CreateExecutable命令,弹出保存文件窗口,在窗口中输入youxizhizuo,制作的游戏将会被自动生成为.exe的游戏程序。
至此为止,一个完整的游戏已经设计好了。
7.开发游戏过程中遇到的瓶颈
当电脑游戏被称为第九艺术,也许我们可以因此期待手机游戏会得到一个冠冕堂皇的称号——因为手机游戏已经渐渐成为游戏业继网络游戏之后,又一座富饶的“金矿”,成为游戏市场中一颗冉冉升起的新星。
但是现在,用“简陋”一词来形容现今的手机游戏并不为过,因为玩家大多无法对那个手掌里的小屏幕集中太多的注意力,特别是手机游戏的分辨率还很低,很容易让人想到十几年前的红白机游戏时代。
这是以时尚标榜自己的年轻人无法接受的。
而且现在很多手机用户对于手机游戏的认识还停留在经典的“贪吃蛇”,所以那些所谓的手机游戏实在让人提不起什么兴趣来。
虽然新手机还不是最理想的游戏平台,但它已经是个良好的开端。
处理器、内存和色彩深度提供了游戏开发所需的因素。
开发者正努力把其它游戏平台上的质量标准运用到这个平台上。
当然了,一些问题仍然存在,然而这些问题终将被解决,就像PC平台游戏开发者使用不断改进的DirectX一样。
开发移动游戏与传统游戏的开发有很多不同,想开发有吸引力的移动游戏尤其困难。
这比开发控制台游戏或PC游戏更困难,因为众多的设备具有不同的存贮器、声音和显示性能。
这个平台有许多种硬件和软件的组合,并且在硬件厂商之间没有多少共同点。
像我自己在设计游戏过程我也遇到一些问题,比如说像BOSS机怎么才能和其他飞机不同,不可能被玩家一发子弹就销毁了吧。
按照常理来说,boss机一般都