历时一周,unity3d+xtion打造我的第一个休闲体感小游戏《空降奇兵》
1、游戏介绍
本游戏属于休闲小游戏,主要操作如下:
菜单控制:举起左手或右手,点击左边或者右边的菜单;挥动左手或右手,选择关卡;
操作方式:玩家跳跃,游戏中的伞兵从飞机开始降落;玩家通过控制伞兵的左右移动。特别注意游戏中一小段有风的区域,结合风速的提示,千万不要失去平衡哦;
核心玩法:玩家控制伞兵,使其落地位置尽可能接近靶心,同时在降落过程中不得超出屏幕范围;游戏进行3次,取得分平均值。
游戏视频:http://www.xtionpro.com/plugin.php?id=sosv_vote:look&acid=1&nid=25
游戏截图(右下角的小人是我):
图1 游戏截图
代码量:
图2 代码量
特点
·使用挥手动作进行关卡选择操作;
·举起左手或者右手选择菜单;
·跳跃动作和游戏中的跳伞动作配合;
·考验肢体平衡,既健身又动脑。
PS:前两个操作我个人认为比现在很多体感游戏的控制方式更简单,算是一个小小的创新吧。
不足
·美工美工,一个程序猿开发的,美工真的已经尽力了……
·缺少新手引导:初始界面缺少挥手举手菜单操作提示,游戏中没有跳跃提示、风力提示、以及要落到靶心的提示;
·若玩家超出xtion的识别范围,没有提示;
·胜利界面只有星星飘过,没有超越最高分提示,没有星星落下的声音以及星星落下后画面没有震动;
·游戏内容不够丰富,体验时间太短。
2、制作点滴
2014.03.28(周五)
- 观察局势,确定可行性。看到又提交了一组作品,菊花一紧,心中祈祷不要再有人提交了,让我混个第六吧……
- 找美术资源
1、飞机
2、游戏背景
3、跳伞小人
4、靶
5、声音
6、显示分数脚本
7、成功和失败界面
- 规划进度:
1、周六下午开始写代码;
2、周日白天搞定所有功能;
3、周日晚上整体测试外加修bug;
4、周一做视频,并提交。
耗时:半个晚上。
2014.03.29(周六)
- 学习unity3d的2D功能,强烈推荐官网7分多钟那个视频,可惜YouTube要FQ;
- 配置体感环境,测试了下SDK功能,运行Sample没问题;
- 梳理流程,一共4个场景,发现比我原先想象的要复杂,如图3;
- 继续查找资源,梳理流程之后,发现昨天找的资源缺的太多太多了。
本以为今天可以开始开发,没想到太轻敌了,实际的工作量超出我的想象,到了晚上11点,前期准备工作才基本完成。事后证明,今天太悠哉了,晚上还和同学聚餐,看天气不错还去跑步了,以至于明天和后天忙成狗了……
PS:Unity3D的Asset Store是一个不错的地方,现在资源比以前丰富多了,相信以后会更丰富的,我下载的资源如图4所示。
耗时:半个下午+一个晚上。
图3 草稿
图4 Asset Store下载的资源
2014.03.30(周日)
- 微调美术资源;
- 完成初始界面的体感菜单点击;
- 完成跳跃检测算法;
- 完成游戏主体:飞机来回飞,跳跃后出现跳伞小人,落地后计算分数;
- 完成4个场景:初始菜单、游戏场景、成功场景和失败场景。
中午才开始写代码, 到了晚上7点多,终于开始做最后一个场景,如图5。本以为图5这玩意比较简单,没想到还是耗了不少时间,不过最后总算是在12点前把整个游戏流程串通了,但是没时间测试了。由于时间紧迫,public、static多用了一些,另外程序里还有大约3~5个magic number。
耗时:全天!
图5 Stage Cleand制作界面
2014.03.31(周一)
- 纪念下去年 + 今年最早起床时间:6点半;
- 游戏整体测试,遇到两个问题:
1)2D的碰撞能用,但是触发器老没反应;
2)体感有bug,关卡间跳转2次以上就报错。
- 加入“风”的功能;
- 录制视频。
整体测试的第一个问题是因为我用了OnCollisionEnter,正确的是使用OnCollisionEnter2D;第二个问题,只要在跳转关卡的时候不释放体感资源,感谢华硕帮忙解决。然后整体又测试了几遍,修复了一些小bug,最后终于在晚上10点多的时候,开始录视频。用Fraps录了段很粗糙的视频,没精力进行后期制作了。而且,由于有莫名其妙的bug(周三修复),在第二次跳跃的时候识别精度降低,录了好多次才OK。
终于,在快12点的时候提交作品,第一次传优酷,发现还要审核?!只能等明天了……想看今晚提交的视频点这里,比较差:初始界面不好看,玩法少,不能选关卡。
此外,最悲剧的事情是这两天突然冒出了4个作品,也就是说现在不是稳拿8000,而是10选6了,蛋疼……
耗时:基本全天(除了下午导师那边有点事)。
2014.04.01(周二)
游戏整体测试,修改bug:
1)从结束界面回到初始界面,选中的关卡和星星数量不对;
2)最高分记录不对。
耗时:一个晚上。
2014.04.02(周三)
- 跳跃检测进行两处修改:
1)原先使用头部关节,改为根骨,因为有的时候头部会超出摄像头;
2)体感配置里有个smooth,默认值太大,导致游戏运行一段时间后动作检测灵敏度降低,重要bug!极度影响游戏体验!
- 加入挥手动作,控制初始界面的菜单,算法和跳跃动作的一样。
耗时:一个晚上
2014.04.03(周四)
- 修改UI,换了一个小清新版本的蓝色UI,如图6;
- 修改选择关卡的bug(因为加入了手势选择关卡功能,程序又出毛病了);
- 重新录制、并发布视频,这个视频就是本文开始提到的视频。
到此为止,休闲体感小游戏《空降奇兵》告一段落,恢复正常生活。本来只打算花一个周末的时间,结果现在看来,估算时间严重不准确。
耗时:一个早上
图6 修改后的UI
3、感受
1、不懂美工的程序不是好策划。
2、周六到周一做了3天游戏,好久没这么爽了,虽然有点累。
3、本以为2天能完成的差不多,但是很明显我错了,而且后期修改细节还花了很多时间;代码量估计也错了,开始以为200-300行,最后写了600多行。和以前一样,估算时间和代码量总是会少一半左右,所以……以后估算的时候翻一倍。
4、美工很重要,比较图7的两个初始界面,很明显,右边那个好多了。虽然我还想继续修改结束界面,但是一个程序猿……真的是心有余而力不足。
图7 初始界面对比
5、细节很重要,这算产品经验吗,Who can tell me? 有些看着习以为常的东西,作为程序猿很容易忽略,例如不能没有音乐,游戏结算界面的星星要飘过,分数要从0往上涨(不能直接给个分数界面啥都不动)。不知道别的程序猿怎么样,反正以前我只注意游戏的核心玩法的游戏逻辑,对其他方面严重忽略,导致的直接结果就是游戏不像游戏了。最糟糕的是忽略了以后自己还难以察觉,就像自己做的菜实际很难吃,但就算别人都说难吃,自己还觉得好吃。
虽然这次还有很多方面不完善,但是至少比以前有进步了,比如突破了无声游戏,不再无视界面,肯在菜单选项上多花时间。做的多了,错的多了,总结多了,才能做得更好,虽然每次都做的很差,但我相信总会有一天能够做好。
6、双屏有助于提高开发效率。
图8 双屏
7、unity3d的2D功能真心强大,而且学习曲线极低,20分钟内学习完毕直接上手;另外其他方面也更完善了,用得非常顺手。另外,在这里严重鄙视unity3d的中文网站,好端端的Tutorial就这么不见了。英文官网里有各种优秀的视频教程,到了中文官网,就成了广告的天下……
8、《游戏引擎架构》一书的译者叶劲峰在他的博客提到的unity3d的缺点,说的挺有道理的,我也确实感受到了:
Unity 的脚本系统给我的感觉是使用非常简单。透过很少的代码就能写一些行为,甚至把行为组合到对象中。但是,通常容易的东西都会有相对的缺点,例如在效能上或是 Scalability 上。后者可能是一个很大的问题,当游戏规模扩大,Component 和联结就会变成一个很复杂的 graph,由于连结是发生于执行期 (而非静态),可能要作改动会变得困难。换句话说,就是改几十个类别容易,改它们的几千个 实例就会很困难。 软件设计世界里当然没有银子弹,每个方案都适合不同的情况。我认为 Unity 的一个设计目标是容易使用,就是像 Virtools 之流,可以给没有程式底子的人做游戏,相对来说做比较复杂的项目可能会遇到许多问题。但参考一下总可以给予对事物新的观点,或分析另一个科案的优越之处。
9、截个图纪念下: