zoukankan      html  css  js  c++  java
  • 历时一周,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要翻墙;
    • 配置体感环境,测试了下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、截个图纪念下:

  • 相关阅读:
    高并发网络编程之epoll详解
    位操作实现加减乘除四则运算
    堆和栈的区别
    IT思想类智力题
    C/C++基础总结
    数据库总结
    面试网络总结
    Windows内存管理和linux内存管理
    面试操作系统总结
    数据结构与算法
  • 原文地址:https://www.cnblogs.com/wangchengfeng/p/3651124.html
Copyright © 2011-2022 走看看