做android版水果忍者有感

来源:互联网 发布:算法怎么入门 编辑:程序博客网 时间:2024/04/27 16:25

做android版水果忍者有感

       大三下学期选了门专选叫动漫和网络游戏原理,课程设计我们小组选了做android版的水果忍者。有些小组是用之前做过的游戏改进一下来提交,但我不想这样,一来是对之前的作品不满意,二来是想学一下android,于是选了这个作业。这也是我第一次接触手机开发。

       刚开始其实是很迷茫的,不知道怎么做。其实关键是自己没有查资料,也没有请教同学。这次作业我也不想当主力。后来杰哥在5月份叫我建水果模型。刚开始我真是无从下手,后来请教了一下-10,她们组做的事webgl版的水果忍者,进度比我们快,于是前人种树后人乘凉,建模方面就请教-10了。后来在也结合网上的资源,学了一下3dmax。发现做水果还是挺简单的。在此感谢-10的指导。

       再后来,我还没插手代码。杰哥在读入obj和贴图方面遇到了问题。于是project拖到期末之后做,幸好老师延迟了截止日期。最后也是剩下2到3天的时间做。

       显示水果模型都有问题,这离目标太远了。我觉得我自己开始写肯定写不了。后来想起了做计算机图形学的作业,也是有显示3d模型和贴图的,当时我也不会写,网上找了第三方封装的函数,可以加载和显示3d模型。

       于是我开始搜索android方面加载obj和显示3d模型,以及贴图方面的资料。刚开始找到libgdx的游戏引擎,后来发现该引擎不能自动加载obj附带的材质文件mtl,更不用说自动贴图了。于是放弃这个,找到了一个min3d的游戏引擎。是开源的,于是我下载了源代码。用了一个水果模型测试了一下,可以啊。

       后来告诉了杰哥,他也同意改用这个框架来写。这意味着他之前所做的都白费了,也许会有一些隐性作用,但作用不大。于是开始了2到3天开发的一个android版水果忍者。

       做的时候发现,其实该引擎就是对底层openges做了一层封装,让开发者更容易调用。不过发现由于它对某些方面的细节隐藏起来了,所以编程时也有一些限制。现在才明白,这就是传说中的游戏引擎。

       刀锋的实现老姐负责,它在一个android中的view里实现了。我翻了一下书,书上有说surfaceview比view更适合做游戏,于是我手贱改了一下。后来测试发现改了后效率更慢,好卡,于是又改了回来。此外,在android世界里,水果是在glsurfaceview的3d世界中,而刀锋是在一个view的2d世界中。最后找到方法,就是2层glsurfaceview和view重叠,view在glsurfaceview之上,view背景透明。

水果模型的运动主要是先分析obj和mtl文件,把水果模型加载进去和贴上适当的纹理,这部分会占用许多时间,所以游戏开始之前会出现“loading”这个环节。水果从下方发射,我们模拟了一下重力势能,如果不切水果的话,水果的运动轨迹是一条抛物线。如果水果被切,水果会分为两半水果,分裂的方向由刀的轨迹决定。

水果果汁喷溅的效果是用2d贴图模拟3d效果。之前我们找了一些很有立体感的小球的图像。水果被切之后,生成很多个这样的小球,然后每个小球以一定范围的随机的速度向随机的方向散开,散开过程中不断变小。然后是果汁喷在墙上的效果,也是用2d贴图。在水果被切地方的背后贴上图片即可。

最后做出的效果是,基本可以玩。但是水果模型做的不太好,不是很好看,此外还有点卡,可能是因为在模拟器运行。不过总算搞完了,也是一次项目体验。

此次开发,虽然结果不是很好,但已经超越了当初的预想,当初我很怀疑是否能成功搞定。也许是我大局观不够好,高估了项目的难度。此次开发收获是,第一,领悟到有些东西没有想象中难,要开阔自己的视野,培养大局观;第二,游戏的创意比游戏本身的技术有价值,因此,不该陷入只研究技术的陷阱,还要研究创意;第三,学了一下android,感觉那模拟器真的是影响开发效率,本来是要买部android机来搞一下android小程序的,但现在犹豫了,难道去学phonegap?不过估计phonegap还有许多功能不能实现。

 

 

 

原创粉丝点击