历时一周,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、截个图纪念下:
历时一周,unity3d+xtion打造我的第一个休闲体感小游戏《空降奇兵》的更多相关文章
- 使用unity3d和tensorflow实现基于姿态估计的体感游戏
使用unity3d和tensorflow实现基于姿态估计的体感游戏 前言 之前做姿态识别,梦想着以后可以自己做出一款体感游戏,然而后来才发现too young.但是梦想还是要有的,万一实现了呢.趁着p ...
- Unity3D游戏贪吃蛇大作战源码休闲益智手机小游戏完整项目
<贪吃蛇大作战>一款休闲竞技游戏,不仅比拼手速,更考验玩家的策略. 视频演示: http://player.youku.com/player.php/sid/XMzc5ODA2Njg1Ng ...
- OpenNI结合Unity3D Kinect进行体感游戏开发(转)
OpenNI结合Unity3D Kinect进行体感游戏开发(转) 楼主# 更多 发布于:2012-07-17 16:42 1. 下载安装Unity3D(目前版本为3.4)2. 下载OpenN ...
- 体感设备:因特尔 Intel RealSense R200,乐视LeTV Pro Xtion和Orb奥比中光bec Astra比较
最近调试三个个厂家的体感设备,第一个是Intel的RealSense R200(参数规格:分辨率:1080p,深度有效距离:0.51-4,USB3.0),第二个是乐视LeTV Pro Xtion(参数 ...
- XP+Android手机DIY家庭视频点播系统-历时3周全力打造吊丝的幸福生活
需求场景(纯熟虚构): 1. 哥电脑里有200G电影copy到手机上看没那么大空间,copy一部看一部删除一部,很是不方便也费时间. 2. 小林同学需求比较旺盛但是媳妇总有不方便的时候,家里有 ...
- 使用Golang+Mongodb打造你的第一个站点
很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到了js的嵌套回调的话你就会想换换别的办法了.虽然 ...
- (转)【风宇冲】Unity3D教程宝典之AssetBundles:第一讲
自:http://blog.sina.com.cn/s/blog_471132920101gz8z.html 原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 ...
- Unity3d修炼之路:载入一个预制体,然后为该对象加入组件,然后查找对象,得到组件。
#pragma strict function Awake(){ //载入一个预制体 资源必须在 Resources目录下 Resources.LoadLoad(); //载入后 必须演示样例化 Ga ...
- 历时一年,我的著作《第一行代码——Android》已出版!
前言 事实上我当初决定開始写博客的想法挺简单的,认为自己搞技术这么多年了,总应该要留下点什么.既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发人员们,毕竟我也从前辈们的 ...
随机推荐
- js中关于数据类型的转换
* 一.转化为数字*/console.log(‘123123’*1.0); /* 二.从一个值中提取另一中类型的值,并完成转化工作 */console.log(parseInt(‘1233zxhag’ ...
- struts2框架的第一个程序
helloworld.jsp在base目录下 <a href="${pageContext.request.contextPath }/base/HelloWorldAction.ac ...
- Windows命令行中使用SSH连接Linux
转自 http://www.linuxidc.com/Linux/2014-02/96625.htm 1.下载: openssh for Winodws: 免费下载地址在 http://linux.l ...
- Flex前台和后台WCF服务之间数据的接收与传输
1.首先在flex程序中通过添加webservice,方式是主菜单Data->Connect to WebService,然后输入wsdl文档的地址.如果输入地址后始终添加不进了,或者报错,一般 ...
- 2015影响因子Excel版
现在终于有影响因子2015的Excel版了,这个版本除了还包括杂志全称和缩写等基本信息还,包括中科院分区, 应该是迄今2015影响因子最奢华的版本了吧. 看了这个版本,发现中国的SCI杂志还是不少的, ...
- git 合并本地代码到分支
本地代码合并到dev分支 在local分支提交git add .git commit -m "playbuy" 切换到dev分支git checkout devgit pull合并 ...
- IE8浏览器跨域接口访问异常的解决办法
IE8版本以下浏览器绝对是一个神奇的存在,忙碌好久,万事具备,居然在ajax调用接口的时候直接爆炸 陈述一下问题 首先是有这样一个接口,请求类型POST,入参JSON,出参JSON,jQuery aj ...
- 【Qt】Qt环境搭建(Qt Creator)【转】
简述 上一节中介绍了如何进行Qt和Visual Studio的下载安装,随后演示了如何将Qt集成到Visual Studio中,并完成了我们第一个Qt小程序-Hello World.下面主要讲解如何利 ...
- AngularJS(17)-Angular小程序
现在可以开始创建您的第一个 AngularJS 应用程序,一个 AngularJS 单页 Web 应用. <!DOCTYPE html> <html lang="en&qu ...
- jquery如何通过name名称获取当前name的value值
本文为大家介绍下jquery通过name名称获取当前name的value值的具体实现,感兴趣的朋友可以参考下. 复制代码代码如下: $("*[name='name']").val( ...