《Flash游戏设计教程》系列文章 导读

      Flash游戏教程 2007-5-19 22:6

     最近,博客的点击率上升的比较快,从过去的每周一两百,到现在的每周八九百,对这个每周八九百的点击,我也比较好奇,大家都在关心哪些话题呢?

    通过文章管理界面查看了一下统计数字,几个热门资源贴子,如:Flash CS3 及注册码下载闪客精灵最新版注册码,点击率较高,此外,大家对 Word流程图制作攻略 似乎也比较关心,关于 Word 办公软件,另外有两篇文章,可能是内容较简单的关系,读的人就比较少了。

     除此之外,大家读得最多的还是我写过的一些游戏教程。之所以说是教程,只是因为自己的写码习惯还算正规,设计过程解释的还算详细(每一步都是自己亲手做出来的),所以鼓起勇气推荐给大家,实际上同一个问题还可以有更多的办法来实现,我所提供的很可能并不是最简化的一个,甚至还隐含了这样或那样潜在的问题,希望大家多多包涵。

   为了方便新来的朋友,现在将过去写过的游戏教程贴子汇总一下,按照先后顺序罗列出来,方便大家的检索,为大家节省一些时间。

   在学习 Flash8 有个大半年之后,我最先写的一个完整练习是模仿贪吃蛇游戏(游戏最终效果),之后将设计过程记下来整理之后就是我的教程的开篇之作贪吃蛇游戏教程(附源代码),贪吃蛇游戏的规则比较简单,因此,这篇教程中侧重于游戏整体结构的设计,从封面、游戏进行、结束,每个界面都有区分,算是结构比较完整的一篇初学教程。

   几乎与此同时,我写了一个拼图游戏(游戏最终效果),这个游戏是从FoxPro 而来的,一直对这个游戏很好奇,终于在Flash里自己实现了。这个拼图的规则是比较简单且严格,只能交换相临的两个图块,最先考虑的是怎么实现按键移动图块及图块的打乱,于是有了第一个拼图教程。接下来为了保证每一局都有解,而不是完全随机的打乱图块,让计算机模仿移动过程,将整齐的图块按照移动规则,随机进行移动,从而得到一个乱序的开局,再让用户来完成游戏。因为打乱的过程是符合游戏规则的,所以必定是有解的,这一个分析过程就是拼图游戏的第二部分了。手动切割图片分成很多小块是个很费时的工作,还好Flash中的遮罩技术帮了个忙,用动态指定遮罩位置的方法,很容易就可以将图片分成需要的很多块了,这样,游戏难度增加时,基本上只需要改动几个数字即可,这部分内容的讨论也在拼图第二部分中实现了。原本以为这个游戏是这么好操作,应该每个人都知道的,没想到一天一个朋友问我,这个游戏点什么啊?怎么都不动呢?于是我知道,不应该做这样的假设,而是尽可能的提供鼠标、键盘同时操作来满足不同习惯的人使用,于是在拼图游戏第三部分中,除了对界面进行分隔,加上声音之外,最大的变化就是加上了鼠标操作。网上类似的拼图也看到过,鼠标操作时只能点相临的块,显然工作效率有点低,其实只要利用一个for循环,就可以实现从行首直接移动到行尾的效果,也就是说在同一行或同一列中不需要限定步数(应该是一个很好的想法吧?),这些内容都在第三部分中了。每一部分的教程都附有源代码下载,如果想送给你喜欢的人,只需要将库中MC的背景照片换一下,再指定一下照片大小就可以了。网上见过动态加载图片生成游戏的,这项技术至今还没学到手(主要问题是不晓得怎么获取图片尺寸,哪位仁兄知道告知一声),只好先这样了。拼图游戏完成之时,《达芬奇密码》热映了,于是想了一个自动拼图的效果,这里面只是利用了一下数组,每移动一次就记录下移动的位置,达到一定步数后,从数组中读取出位置信息,按位置逐步进行恢复,就可以了。这个效果没有写教程,有兴趣的朋友反编译一下SWF文件自己看吧。

    数独游戏似乎开始有些升温,很多手机里开始出现这个游戏,出于对游戏解法的好奇,我模仿着写了一个,并且利用基本规则进行辅助解题,称为数独助手,这个助手不具备猜题的功能,操作也比较简单,先将你的题目写到界面方格里再不断的点Solve 按钮,就能得到符合游戏规则的答案。对于简单的局面,一路点下去就可以得到结果,复杂一点的需要猜的,可以先保存一下当前局,再进行尝试,尝试失败时,把前面保存的内容重新导入进来,再重猜。一直想实现一下自动猜数字的功能,但是程序结构上没考虑清楚,再者就是时间有限,所以就保持现状了,这个游戏中大量的使用了数组行列号的换算,复杂度过高,结构也有不合理的地方,所以未写成教程。

    数独之后,自信心增加了不少,以前没想过的也敢去想了,于是有了模仿Windows挖雷游戏的想法,刚好在学习自定义类,于是就简单的应用了一下类的概念,在类之间的信息传递上,处理方法还是偏简单了些(更高级的实在也是想不出来),点右键可Mark(标识)出地雷所在的位置,并且对该位置起到保护的作用,避免误点,游戏完成之后对设计过程进行总结,写成了挖雷游戏教程。这个教程中涉及的内容一点也不比拼图游戏少,但考虑到想做这样一个游戏的人可能并不多,所以把教程集中写在了一起,文字上可能并不如拼图教程那样解说得非常详细。之后,还有个想法,增加一些辅助功能,比如随机提供一些特殊道具,可以自动开出一片空地、或是在二选一时自动给出答案、又或者在鼠标点击区域的周围随机打开一个空白,还是因为复杂度和时间上的问题搁浅在一边了,时间一久更没有改进的动力了。

    有一天来了一条留言,问我有没有推箱子的教程,自信满满的我立即被这个题目吸引了,于是开始认真的分析总结,从网上找来类似的游戏进行观摩,分析游戏数据,之后有了推箱子游戏分析。也许是喜欢这个游戏的人太多的缘故,一下子来了很多人,也上了5D博客老闻的推荐榜,玩得人一多,里面的BUG就被发现了,于是连着改了好几次,到最后手头的版本是哪一个都有点分不清了(汗啊~)。游戏要好玩,撤消功能是不可少的,为了减少限制(很多游戏都要求前面的玩完,才能玩后面的,本人对此表示深切的痛恨),增加了撤消功能,优化了关卡绘制函数,于是跳关功能也变成非常简单的内容了,这些内容都在推箱子游戏(续中进行了分析。现在很多人一来,就直奔前面的分析,似乎对续文的兴趣不大,或者是没有发现还有一篇续,从点击率上看3:1的比率,很能说明问题(但愿不是看了前面的分析对续文失去兴趣了吧?)。如果要设计自己的关卡数据,那么一个可视化的设计环境是必不可少的,要不然,面对着一堆的数字,很容易就迷失方向了,还好这样的“可视化环境”实现起来并不算复杂,于是有了这个关于可视化环境的设计教程,用来解决类似的问题。

   在某一项技术被掌握之后,最大的想法就是想用这项技术解决类似的问题,于是想起了在闪客帝国中见过的电击方块游戏,本质上说这是另一种类型的推箱子,于是对自己而言就不是很难的问题了。借着之前下过的功夫,先对单色块粘连的效果进行了分析,有了电击方块游戏分析这篇教程。我的游戏界面和原作相比,真是一个在地上一个在天上,界面中一项主要的内容,就是块粘连之后的显示问题,我对这个问题分析了一下,发现可以利用2进制编码的形式来实现,于是有了这个围墙效果的编码实现。如果大家是在做平面迷宫之类的内容,这样的编码形式可能会对你有所帮助,可用来动态实现粘连效果,当然这套编码中也有缺限,表现在大块面积连接时小角落上显示不完整,这个问题可以通过添加边角块并动态设置_visible属性来解决,放到后面的教程中再来讨论吧。

多色块的电击方块与单色块不同之处在于需要分两步走,第一步让完全独立的块移动一步,移动之后该块的属性等同于墙,第二步计算粘连的图块,再将粘连的图块整体进行移动。这里涉及更复杂的集合操作,一直没有时间和精力来验证这个想法,先记在这里,以后有机会再补上。

  在为闪航AS房间准备教材时,写了一篇新拼图的教程,首先是异形拼图块的制作,素材准备好之后添加上代码,添加代码的过程在拼图制作代码实现篇里进行了讨论。代码实现篇中按照游戏设计的各阶段来编排的内容,文章篇幅有些过长,于是另外写了一篇直接讨论代码的文章——拼图代码的进化,这篇文章中直接从拖拽效果开使讨论,直到最后完成全部的代码。

  某天,从网上得到一个灵感,在MC配对比较时,给它们一个数值型的属性,这样比较的环节就容易实现。根据这个思路,写了一个配对消除游戏,这个游戏看上去有点类似于连连看,规则较简单,没有相对位置的限定,只要形状相同就可以消除。顺着这个思路改良了一下代码,完成了另一个游戏,记忆力游戏,这个游戏的规则是翻错一次就得重来,当图片更多时,难度会比较大,综艺节目中经常有这么一种情节。

 有这么一种游戏,出四个不重复的数字,让玩家来猜出正确的数字,这个游戏最早我在小灵通中见过,做为组件的练习,拿来在Flash中实现了一下,于是得到一个猜数字的游戏。这个游戏中使用数字1至9,不含零,通过修改数据,可以比较方便的控制数字的范围,比如再加上几个字母进行组合猜谜。

   在配对游戏的基础上加上连通路径的判断函数,完成了连连看游戏的分析,做了一个自己的连连看,同时也把代码拿出来与大家一起分享。

/********************************************

    不经意间我的博客已经窜到 5d 博客 综合排行前100强了,周排名也是在快速的前冲中,套用一句老话“形势喜人啊!”,于是很想说点感谢的话,谢谢大家对我的博客的关注。

    首先感谢 正天 为我的博客进行的扩容,使我有更多的空间来上传源代码和一些喜欢的图书,同时感谢5d博客,虽然我至今仍搞不清楚5d博客与5d多媒体之间的关系(可能是因为网站界面上差别太大的缘故,而我通常只登陆博客,而不去论坛或是主页),感谢所有未曾谋面的幕后工作者,5d博客的日新月异是有目共睹的。最初选择这里开博,主要的原因是发现这里的博客可以上传Flash文件,并且连接速度也不错,其它的一些大站,却连这样的一点自由都不给,即使他们的空间再大,对我而言也是毫无用处的。

    接下来要感谢闪客启航的朋友们,在那里有我很多的教师朋友,你们乐于分享的精神使我在Flash的学习过程中一直充满着乐趣,我的博客早些时候中绝大部分的点击来自你们。很希望能在课件制作方面对大家有所帮助,但是因为没有从事教师这个职业的关系,只能从理论上来做一些讨论了。“如果课件能像游戏一样让人百玩不厌,那么这一定是个好课件”,本着这样的想法来了解一下游戏的设计过程、操作原理,可能会对设计课件有所帮助吧。

    最后感谢每一位来访的朋友,你们的点击,让我的博客在周排行里和总排行里勇往直前,数字的变化让我非常的开心,也让我增加了写博的信心。虽然我的编程能力尚达不到专业应用的水准,但做为业余爱好,分析一个游戏对我而言就好像解一个迷题一样有趣,希望你们通过我的这些文章,对游戏的设计过程有更多的了解,除了玩游戏之外还能体会到“做”游戏的快乐。

    这篇文章我打算长期置顶了,并且根据文章发表情况随时改动,如果大家对游戏分析感兴趣,观注这个贴子就可以了,如果大家需要转载我的游戏分析文章也可以以这篇贴子做为目录,省去在博客中翻来翻去的麻烦。  

*********************************************************************/

标签集:TAGS:游戏分析 教程 汇总
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}


注册5D通行证,立刻拥有自己的博客Join 5D!发表留言

用户Name:  密码Password: 匿名Guest
内容Comment: 
加粗 下划线 文本颜色 居中 插入链接 建立Google搜索链接 插入图片 引用文本
 
汗 喜欢 骄傲的笑 哭 酷! 愤怒 黑线 什么? 猥琐 偷笑 无语 晕 吃惊 诱惑
smile frown redface biggrin wink rolleyes mad eek 禁止笑脸转换 No smiley
zoom inzoom out
验证Verify: checkcode 换一个change the code