基于java的改良版超级玛丽
1. 用户需求
1.1 用户希望游戏要有它的创新性,有吸引力
我们的这个游戏考虑到用户的这样的希望有新鲜感的心理需求。所以我们游戏首先有很多创意。从开始构思的时候我们就想基于软件园的实际生活,做一款跟我们每天的生活都息息相关的游戏。这样就产生了《逃离寝室》这样的构思,游戏主人公会从寝室之中逃出,然后越过种种障碍,闯过许多关,最后成功上完一天的课程。像这种冒险类游戏其实有很多,像是超级玛丽、temple run,地铁跑酷等等,一个游戏的灵魂不是他的游戏方法,而是其主题的定位。可以说在创意上面,我们已经占领了先机。
1.2 用户希望有帮助等基本功能
在吸引用户之后,要满足用户的对游戏的探索能力。在编写这个游戏的后期,我们小组给程序设置了帮助功能,将会给用户讲解游戏的规则以及具体的游戏方法,进一步指导用户将这个游戏玩下去。
1.3 用户希望有好的视觉体验
我们小组,为了使用户有更好的视觉体验,在游戏的编写过程中也一直在商讨关于游戏的人物障碍物背景等等的外观,以求使用户在游戏的过程中不会产生审美疲劳。也有更好的体验。
1.4 用户希望有更好的听觉体验
为了实现这个目标我们给游戏增加了背景音乐。
1.5 用户希望游戏过程流畅
为了实现这个目标我们进行了两方面的工作。第一就是游戏的障碍物的出现比例和节奏的调整,如果障碍物太多或者太少,会使游戏太难或太简单,以至于用户丧失游戏兴趣。其次就是运用了多线程的方法,使电脑的CPU合理分配,使游戏的画面更加流畅,不会出现卡机等现象。
2. 系统设计
计划做一个类似于超级玛丽之类的冒险游戏。主人公就是我们作为游戏原型。主要的任务就是主人公会试图从寝室出来赶时间去上课,途中会遇到种种困难阻碍我们上课的道路,我们需要做得就是闯过这些障碍最终顺利到达教室。我们的具体的类的大致设计和构思为:
游戏流程:
3. 系统实现
我们每个周的任务进度:
第一周
- 我们已经想出了大体的设计方向及游戏的某些功能及流程
- 已经初步做了几个像素小人
- 正在做GIF形式的小人,一像素一像素的改
- 做了一些图形界面的学习设计
- 待解决的问题及后续的工作安排
- 怎么样将真人做成人物并融合到程序里面
- 具体的算法流程等还不是非常清楚,正在学习的阶段
- 后续会先开始进行简单的地图的绘制以及人物和障碍物的创建
第二周
- 已完成的工作
- 音效类,游戏中相应的音效
- 精灵类,游戏中存在的人物形象,人物所存在的动画效果以及所拥有的特效;以及人物所产生的相应效果,满足相关的游戏性
- 金币类,实现金币与人物的交互功能,实现金币的基础算法
- 新增素材:下载了一些简单的人物素材和音乐背景,准备先做一个demo,再具体改
- 本周遇到的问题 对GUI用户界面的一些方法还不是很熟悉
- 写精灵的过程中出现精灵不能随着操作的指令做相应的动作,系统指令无效,无法实现交互。通过查阅资料以及不断地改进尝试终于发现了监听器出现了问题,最终改变监听器的错误,得到改进,精灵可以完成用户想让其进行的各种动作
- 在创建金币类的过程中,出现了程序错误,不能正常实现金币的产生,后来经过debug发现是由于金币数组越界产生的,随后改变数组的定义,得到解决
第三周
- 本周完成了map背景类,将从网上搜集的图片元素加入界面中,实现界面的设计,实现界面可以随着指令发生移动而完成相应功能; 精灵碰撞类,实现精灵与地图元素的交互功能,当精灵与元素进行碰撞之后,实现相应的动画效果
- 数据文件及数据库文件还未全部进行加入。正在设计基本类
- 素材:像素小人已经初步捏好。从而实现创建了精灵类
- 音效已经找好并自己录制了一部分。实现了音效类
- 增强了小组成员的之间的融合。经过美工的PS设计,使得我们的界面更加的好看更加的友好。同时增加了交互的功能设计,比如调节音量等。下一步准备增加更多的交互式设计,实现更多的功能选择比如调节速度调节难度等等
第四周
- 进一步优化界面,加强人机交互的功能。人物素材也进行了修改,准备动作、前进动作、跳跃动作等等都进行了讨论并由美工进行了进一步的制作和修改。基本实现了游戏算法类和动画类
- 游戏的完整体系已经基本完成了,大体框架已经形成,接下来进行细节处的改动即可。加入游戏开始页面以及游戏流畅性。游戏的开始界面已经结合我们的具体的功能进行了设计,并进行了编写和实现
- 在编写动画类的时候出现了动画编程中的动画闪烁和图像残缺不全等现象,后来我们从网上发现是多线程的部分方法出现了问题。为了每秒中多次更新屏幕,必须创建一个线程来实现动画的循环,这个循环要跟踪当前帧并响应周期性的屏幕更新要求。应该生成一个独立的动画线程来完成图像的显示和更新。并改变了一些其他的方法,进一步优化我们的动画效果
- 在编写游戏算法类的时候,具体的算法可能还是考虑的不够清楚,常常出一些运行中的错误或者出现编写的某段代码对整个项目无效的情况。经过仔细的思考逐步解决了这些问题
- 初步根据我们的系统设计,写了一个游戏的思路以及规则方法
- 大体的文案已经形成。
第五周
- 进一步优化界面,加强人机交互的功能。人物素材也全部完成,包括各种行进跳跃动作。把美工所有捏的小人都增加到程序中去了。正式更新了部分的原创设计。使整个界面更加人性化有设计性
- 讨论设计了游戏的开始界面及结束界面并进行开发。结合内部的具体构造进行设计,力求准确美观实现各种功能.对人物进行了进一步的修改。逐渐与原来的想法进行拟合。制作开始和结束界面的时候总是有不协调性看起来很奇怪,并且有些想法无法实现。经过不断地努力和修改逐渐解决了这些问题。开始和结束界面初步成型。再做微型调整即可
第六周
- Javadoc进行了部分修改,因难以全部传输上去,此处仅提供大体的构架和截图,我们在其内部进行了具体的修改
- 所做的项目测试工作。项目总体进度
- 仍存在的问题,及待提高的方面
- 还有一些在测试时发现的问题没有解决,接下来需要大家一起解决代码中的bug,共同解决游戏进行的过程中出现的种种问题,种种影响游戏顺利进行或者不流畅的画面等等问题
第七周
- 本阶段的工作主要是项目的系统收尾工作
- 正在进行文档的修改和最终总结报告的书写工作
- 更改了一些界面上面的设计。进行系统的最终完善
- 比如设计了一些夜间场景。最终的成果的效果还没有最终确定。正在进行不断地比较和修改。开始画面希望能更加完善。还未添加帮助等功能,接下来会进一步添加,尽可能的完善。尽早的提交上我们的作品
- 界面、美工、素材的美化。正在进行更改。美工正在进行对素材的梅美化。以求我们的界面更加的美观并且实用,符合我的们的设计的整体风格和思路。下附我们目前的界面,当然我们还会进行不断地改善和调整
4. 美工素材
整体游戏使用了扁平化设计理念。扁平化概念的核心意义是:去除冗余、厚重和繁杂的装饰效果。而具体表现在去掉了多余的透视、纹理、渐变以及能做出3D效果的元素,这样可以让"信息"本身重新作为核心被凸显出来。同时在设计元素上,则强调了抽象、极简和符号化。模拟现实物品的造型和质感,通过叠加高光、纹理、材质、阴影等效果对实物进行再现,也可适当程度变形和夸张,界面模拟真实物体,拟物设计会让你第一眼就认出这是个什么东西。交互方式也模拟现实生活的交互方式。简约而不简单,搭配一流的网格、色彩设计,让看久了拟物化的用户感觉焕然一新;突出内容主题,减弱各种渐变、阴影、高光等拟真视觉效果对用户视线的干扰,让用户更加专注于内容本身,简单易用。设计更容易,优秀扁平的设计只需保证良好的架构、网格和排版布局,色彩的运用和高度一致性。
在色彩搭配方面,颜色是影响整个游戏的重要因素,不同的颜色对人的感觉有不同的影响。整体颜色采用了冷色调, 多为蓝、绿等。游戏主人公使用了与背景有鲜明对比的红、橙。建筑物使用了传统的灰色调,制作了具有使其与背景整体协调。通过对游戏的各种元素、颜色、字体、图形、空白等,使用一定的规格,使得设计良好的游戏看起来应该是和谐的。游戏设计上要保持一致性,这又是很重要的一点。一致的结构设计,可以让浏览者对游戏的形象有深刻的记忆。一致的背景界面设计,可以让浏览者迅速而又有效的进入在软件中自己所需要的部分,一致的操作设计,可以让玩家快速地了解、上手游戏。建筑风格上参考纪念碑谷,给玩家带来新鲜的感觉。
【开始界面】
【第一界面】
【第二界面】
5. 收获体会
以往几周的实验报告摘要
第一周结论分析与体会:
- 每一个项目的进行都需要具体的执行方案和具体的分工合作。
- 好的创意和构思往往来源于生活。
- 在做一个项目之前应该先想好具体的框架及模板模块,以防真正执行起来的时候出现种种难以预料的问题。
- 任何创意的背后都需要强大的技术支持和不断地学习,经验的积累。
第二周结论分析与体会:
- 学习的过程是艰苦的迂回的,所有的代码都不是能够突然写出来突然完成的。
- 不能太急于求成,从小的方面一点点的进行,最终实现整个类的实施,才是比较可行的方法。学习的过程是必须的,不能急躁。
- 在一些容易出错的地方比如数组超界之类的问题要一开始就多加注意。写代码的时候要有给每一个模块增加注释的习惯,这样遇到问题的时候比较好随时回来改。
- debug的时候要有耐心,一遍遍的进行调试更改,不能急躁。
- 要懂得合作。合作的力量是无穷的!
第三周结论分析与体会:
- 每一个程序的实现不能只是简单地大体的做一下,必须要考虑要多种因素的影响,考虑到用户的游戏时的视觉感官体验等等。
- 增强游戏的功能,提供更多的交互功能。在游戏过程中能够随时进行调节。
- 每一个项目的进行都需要经过不断的调试不断的改进,前面做的某些东西要根据实际的项目发展进行改变。制定目标时不能定死。多做一些动态方法。有利于项目的进行。
- 想法也要尽可能完善,尽量在初期考虑到后面的可行性。
第四周结论分析与体会:
- 必须要考虑要多种因素的影响,考虑到用户的游戏时的视觉感官体验等等。
- 每一个项目的进行都需要经过不断的调试不断的改进,前面做的某些东西要根据实际的项目发展进行改变。制定目标时不能定死。多做一些动态方法。有利于项目的进行。
- 有了大体的框架可能更有利于下面的进一步细节的改动,有些细节不用太过拘泥,可以形成基本框架之后再进行改动。要有整体意识。
第五周结论分析与体会:
- 每一个项目的进行都需要经过不断的调试不断的改进,前面做的某些东西要根据实际的项目发展进行改变。制定目标时不能定死。多做一些动态方法。有利于项目的进行。
- 有了大体的框架可能更有利于下面的进一步细节的改动。
第六周结论分析与体会:
- 必须要考虑要多种因素的影响,考虑到用户的游戏时的视觉感官体验等等。
- 游戏基本完成时其测试的安排十分重要,包括测试的规划,如何进行,部署,怎么样才能发现更多的问题并且进行解决,发现问题的时候又应该如何解决,对我们来说都是一些挑战。测试前要事先做好规划,并且测试进行的过程中发现的问题要及时记录并想办法解决。
第七周:结论分析与体会:
- 每一个游戏的完成都是艰难的,只有坚持到底,不断地学习不断地进步才能实现最后的成功。
- 在今后的学习生活中还要不断培养自己的自学能力,遇到各种困难都不能退缩。逐步增强自己解决问题的能力。
最终总体体会:
课设的构想是美妙的,但是真正做起来却是困难的。从组队确定好主题到现在我们遇到了很多很多的困难。刚开始的时候什么都不懂,经过上学期的学习,对于GUI、多线程等等就只是听说过,一点也不懂,难以想象这样的我们有一天会做出这样一个比较完整的作品。回过头来想想走过的路真是感慨万千。经过了课程设计的锻炼,我们总结出了以下这样的几个经验或者说是体会。
- 首先,对于任何事物都要有一个总体的规划。对于大体要做成什么样子,必须有一个整体的规划并且向着那个明确的目标努力,不能无组织的随便乱写。必须有了正确的明确的大方向的指引,才能不断的朝这个目标努力并且最终实现。
- 其次,任何事物的完成要有扎实的基本功做基础。像刚开始的我们什么都不懂。在游戏的编写过程中我们也吃了很多苦。上课的时候认真听讲做笔记,下课之后课下也要不断地对代码进行研究,研究各种资料。我们都深切的感受到,没有深厚的技术基础做保障,所有的都是空谈。
- 实践出真知。很多时候只是上课好像听懂了或者是看视频看懂了其实真正自己敲起来的时候还是觉得很困难,出现了很多的bug,也都得一点点的去改,有时候很多bug发现不了也改不出来的时候特别烦躁,不过也得耐心一点点看。可以说在这个过程中我们每个人都吃了很多苦,不过也正因为这个过程我们的能力也得到了很大的提高,从一开始的什么都不会到现在的可以完成一个完整的游戏,这对我们来说已经是巨大的飞跃和提高。在这个过程中我们极大的锻炼了自己的自学能力。
- 团队的力量是无穷的。自己一个人完成一个大的任务可能是困难的,但是有了小组的合作,有了大家的齐心协力任何困难都会被解决的很好。
- 我们的代码可能还比较幼稚比较简单,但是我们已经付出了很多努力,不管多难,都能努力咬牙坚持去学习去尝试去自己写,而不是简单地copy网上的或者别人的代码。正因为有了这样的毅力有了这样的决心才会有进步才会有提高。我们也知道我们的能力还不足,我们也还有很大的进步的空间。在以后的学习中,生活中,我们还会继续努力,课程设计虽然即将告一段落,但是我们的学习之路还远远没有结束,将来的路还很长。我们会永远记得这段努力完成课设的时光,并继续加油、继续努力。向着我们的未来向着我们的目标不断迈进。