您好,欢迎访问三七文档
闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚1第九章通盘看游戏教学提要如何设计一个好游戏如何提高开发效率策划、美工与程序员的协作问题重点与难点流程图设计资源库的设计与应用团队协作教学内容:一、引言编程技能解决的一个问题是怎么做。但是开发游戏,仅仅知道怎么做是不够,我们还要知道做什么,为什么这么做。因此我们需要脱离开一个个技术的具体实现,站在全局的角度考虑问题,思考如何设计出一个好的游戏,如何提高开发效率等等。二、什么样的游戏才是好游戏由于Flash游戏入门门槛低,又非常容易传播,这也导致Flash游戏质量参差不齐。那么到底什么样的游戏才是好游戏呢?所谓众口难调,难以找到让所有人都觉得好的游戏特征,但是以下特征,还是具有一定的参考意义:可玩性可玩性指游戏的完整性、流畅程度和程序的健壮性。不可想象,一个支离破碎的,经常把电脑“卡住”的或者游戏流程错乱甚至突然自动退出的游戏,可以得到哪怕是一个玩家的认可。换句话说,一个好的游戏,必须设计好游戏的故事情节,并切实地安排在程序中,使得游戏完整;必须采用合适的优化策略保证画面的流畅;必须能够处理玩家的任何操作对程序的影响,保证游戏总能按照规定的流程走下去;必须能够处理各种程序异常,避免程序运行错误。趣味性游戏的本质说白了,就是一种给玩家带来快乐体验的一个过程。如果你的游戏能够激起玩家的某种良性情感,那么你的游戏就是一个成功的游戏。这些情感包括成就感、荣誉感、好奇心、获得财富、获得力量、社会交流等等。游戏中的情感如此重要,以至于甚至出现专门研究游戏情感设计的学科和游戏策划公司。富有感染力这表现为场面洪伟、音效出众等等,许多原先属于电影的创作手法,现在都逐渐被转移到游戏中。甚至有人说,未来的游戏就是互动电影。对于Flash游戏来说,互动电影实在是为难Flash了,但是富有感染力的要求对Flash游戏来说仍然适用,并且,由于Flash先天的动画优势,游戏画面往往比其它类型的游戏更加美观。Flash游戏的音效则是通过其它音频特效制作软件来实现,然后轻松地导入Flash中使用。人性化操作这是针对人机互动提出的要求。广为流传的游戏,必定是操作非常简单快捷的。例如经典的街机街头霸王,虽然角色众多,但是几乎所有的角色的操作方法都是一样的,无非就是左、右、跳、蹲、拳、脚以及这些操作的组合。街机中有一个小小的情节,吃鸡腿比赛,玩家只要以最快的速度不停地按一个红色按钮即可,就这么一个简单的操作,玩家也能够从中体验到战胜对手的快感,这个例子说明将操作简化并不失趣味。再例如反恐精英(CS),闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚2A、S、D、F、空格、鼠标的完美结合,充分考虑了人的舒适度,多少玩家乐此不疲啊!快捷操作也是即时对战游戏所必须提供的操作方式。例如星际争霸游戏,在提供完整的鼠标操作功能的同时,还提供了舒适的键盘快捷操作,玩起来左右开弓,不亦乐乎。所以总的来说,与游戏情节设计要跌宕起伏相反,游戏操作要求越简单越好,越顺越好。三、Flash游戏的开发过程前面已经提到,一个典型的游戏开发过程包括创意收集、情节设计、游戏设计文档、详细设计、美工与音效设计、程序设计、测试与发布等阶段。流程图如下所示:创意收集情节设计设计文档其它设计测试游戏发布详细设计迭代美工设计程序设计典型的游戏开发过程这实际上是将游戏开发看成是一个系统工程,参照软件工程的思想来安排游戏开发的过程,这是软件系统开发的共性要求。但游戏设计又是一种艺术的表现形式,所以我们会看到创意收集、情节设计等阶段。在创意收集和情节设计阶段里,设计的工作就像在创作电影剧本一样,可以天马行空。事实上,最后的游戏(故事)情节文档,就像一本充满玄疑的小说。本阶段成果:情节文档。到了设计文档阶段,则将游戏设计引入一个技术规范下的艺术创作空间。设计文档是游戏的重要蓝图,是使游戏以书面的形式(包括所有关键部位)深入地、彻底实现的关键。换句话说,设计文档就是游戏开发的纲领性文档,在游戏开发的整个过程中,开发团队的所有成员都将参考设计文档,根据设计文档开展工作或者探讨修改完善设计文档,再继续根据新文档开展工作。本阶段成果:设计文档。在详细设计阶段,将给出游戏每个组成部分的技术实现、关键部分的技术设计、系统集成框架等等的实施方案。事实上,它是设计文档的延伸,当设计文档足够详细的时候,就是进行详细设计的工作。本阶段成果:详细设计文档。接下来进入游戏实现阶段,即根据详细设计将设想中的游戏变成最终的游戏作品。经验表明,这个阶段中,程序员和美工人员之间的良好合作是成功的关键。本阶段成果:游戏作品样本。接下来则是多次的迭代开发,直到交付使用。当然,游戏开发并不遵循一成不变的开发流程,像游戏开发这样高艺术创作特性的活动,必然有很强的创作者个性因素在内,而且一个学习型的团队应该是不断适应新问题新挑战,不断打破原有格局,创造新格局的团队。所以,以上所述的游戏开发基本过程,仅作为一个参考,借以提高对游戏开发活动的总体认识而已。闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚3由于Flash往往被用于开发小游戏,这些游戏工作量比较小,在现有的创作资源积累下,由一个人就可以完成。这个时候,经验比文档更加实用。此时,更合适的方法是根据个人的经验快速完成开发。但是如果是进行团队开发大型应用,那么就需要严格按照文档进行团队协作。所以应该根据项目的复杂度选择合适的开发过程。四、游戏流程图及算法流程图流程图设计贯彻于游戏总体设计直到程序编码的整个过程。它可以给出了游戏的总体框架,程序走向和关键算法,它是游戏代码的灵魂。流程图又可以分为顶级流程图(总体框架)和各级流程图,确定了流程图也就确定了整个游戏的结构、功能、算法等等。流程图设计是所有软件开发项目都必不可少的过程。这里仅给出流程图的示例,至于有关流程图的设计方法、工具等,有成熟的方案可循,读者可以参考相关书籍。Flash游戏以入门容易,简单快捷著称,流程图的设计也可以不必拘泥于严格的软件工程思想,只要将问题在流程图上描述清楚并易于在Flash中实现即可。由于Flash游戏往往由个人完成,所以有些开发者甚至流程图也不画,只用笔稍微画张草图,就可以立即投入游戏的开发,这也未尝不可。总之,一切以实用为准。现在假设要完成这样一个游戏:游戏描述:游戏名称为九子棋,九子棋是一种回合制棋类游戏,游戏双方各有9颗棋子。游戏分为两个阶段,第一阶段是双方轮流放置棋子,在任何空着的位置都可以放置棋子。当其中一方的棋子在图中的直线上占满3颗时,称为“满线”。此时可以吃掉对方的任意一个棋子。当9颗棋子放完之后进入第二阶段,玩家可以向相邻的空位移动棋子(同一棋子不能连续移动),尽量成“满线”,直到对方只剩下2颗棋子时获胜。游戏的棋盘如下图所示:九子棋的棋盘我们将这个游戏设计成人机对战型的棋类游戏。也就是不仅要完成游戏框架、游戏流程、游戏逻辑,还要设计电脑的智能,使得玩家要花费一些功夫才能战胜电脑。首先设计好这个游戏的总流程图。总流程图包含游戏的开始和结束的总体过程,将游戏分割成几个相对独立的部分,但不涉及具体的实现。这个游戏的总流程图如下图所示:闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚4结束程序加载游戏起始界面走棋中场景胜利/失败场景开始重玩游戏的总流程图将其应用于Flash游戏非常简单,只要将图中的每个过程(方框)对应为Flash中的一个场景或者一帧或者连续的几帧即可,而帧之间的跳跃则通过帧跳转语句来实现。经过这样的分解,程序的总体框架就清晰了。设计好总流程图之后,我们很自然就会把注意力集中在“走棋中场景”部分,因为其它部分已经相当清楚而简单了。所以次级流程图将只包含走棋中场景这一张流程图。走棋中场景的流程图如下所示:进入走棋中场景进入成功/失败场景游戏初始化判断谁先走界面初始化状态检测响应输入智能判断处理响应行为驱动结果判断轮到人走轮到电脑走轮到电脑走轮到人走游戏结束走棋中流程图这个场景的入口和出口与总流程图正好对接上,只是将走棋中场景内部实现具体化了。闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚5这里的每个过程可以是一帧或者连续的几帧,也可以是一段代码。建议将以上的每个过程独立为一帧或者连续几帧,这样的好处是使得流程变得更加直观,而且过程之间的跳转通过帧跳转语句来实现非常容易。接下去的各级流程图就比较多了,比如游戏初始化过程、界面初始化过程、智能判断等等,不一而足。这里仅对其中的部分进行说明。界面初始化过程非常重要,它用来负责安排玩家在游戏的当前阶段呈现出来的视听界面以及人机交互界面。视听界面大家都比较熟悉了,人机交互界面指设置好的当前被允许的操作,例如本例中有些位置允许放置棋子有些则不行,程序应该只在允许放置棋子的位置添加事件侦听器。相对应的,应在处理响应阶段清除界面初始化阶段的侦听器设置,以免玩家做更多的不被游戏规则允许的操作。具体的实现流程需要依据地图编码规则进行,所以这里省去这个流程图。接下来将计算机智能判断流程具体化。智能判断的目的是实现计算机下棋和吃棋决策,使得电脑很“聪明”,这样才能激起玩家的挑战欲,从胜利中获得满足感。游戏分成2个部分,9颗棋子用完和没有用完时采用的走棋方式截然不同,所以使用两张流程图来表示计算机走棋决策。当棋子没有用完时,基本过程就是找到最优的下棋点集合,如果没有最优,就找次优,以此类推,然后从集合中随机选择一个解作为走棋的依据。其流程图如下所示:开始是否非空所有解集合最优解方案最优解集合目标解集合次优解方案否是获取是否非空再次解集合再次解方案是是否非空次优解集合否是随机获取一个解输出解下棋位置智能选择算法的流程图所谓的方案的优劣,即为从对自己最有利到对自己最不利的放置棋子的位置方案的划分。可以对方案的优劣进行不止3个层次的划分,例如本例中对解做了如下几个层次的划分:己方差此位置形成两条满线己方差此位置形成一条满线对方差此位置形成两条满线对方差此位置形成一条满线所在线上只有己方的棋子所在线上只有对方的棋子所有的空位贯彻这个决策即可让计算机在走棋的时候变得非常“聪明”。贯彻决策的方法其实就是一个个嵌套的if判断,这已经非常接近具体的代码了。闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚6当九颗棋子都走完之后,进入移动棋子的阶段,此时的解不再是一个位置,而是由两个相邻位置表示的移动线路,所以需要对决策算法进行一些修改。仍然套用前者的流程图,对方案的优劣层次划分依据修改如下:移动后己方形成一条满线移动后能阻止对方形成满线移动后形成己方差一子满线所在线上只有己方棋子所在线上只有对方棋子所有可移动的线路这个流程图的总体结构也是一个嵌套的if判断。思路与走棋时的判断一样,试图找到最优解。依此类推,可以设计电脑吃棋时的智能决策,这里不再详解。我们还需要再深入完成各个细节的流程图设计,例如如何判断满线,如何判断同线与否等,是实现以上算法的关键子算法。由于这些算法与地图直接相关,所以请参考地图编码章节的内容。总的来说,流程图是代码的灵魂,在进行具体的编码之前,一定要设计好流程图,这样才能“运筹帷幄之中,决胜千里之外”。五、建立游戏资源库无论是美工设计、音效设计还是程序设计,有效资源的积累是降低系统复杂度、提高开发效率的重要途径。有效资源指可以在将来的游戏开发过程中被轻松地多次使用到的程序、角色、动画、素材等等。将大量资源整理归并,即形成资源库。资源库是创作团队可持续发展的推动力,是开发效率提高的最重要的手段,是快速开发的有力保障。资源库的建立重在平时的积累,这需要花一些功夫,但当开发系列游戏时,它的高效运作,将证明你的工作是多么卓有成效。可以分门别类建立多种资源库,例如角色资源库、通用框架资源库、音效资源库、代码资源库、特定项目资源库等等。但建立资源库不仅仅是收集资源这么简单,事实上,这是一个系统工程高度上的问题,只有具有良好的软件工程指导思想并付诸实际的开发团队,才能设计出出色的资源库(
本文标题:第九章通盘看游戏
链接地址:https://www.777doc.com/doc-2184678 .html