这次就主要讲讲我们开发的过程。

  策划是我们团队的一个人成员专门负责,我们几个算是出谋划策。我这边的理解是,策划首先需要对所做的事情一定要有一定的把握,意思是尽可能的想到这件事情的影响范围,类似项目管理里的确定项目的范围,知道了范围了,就可以很好的制定相应的目标了。

  画原型这个我觉得也是很有必要的,我们做的时候,就没有制定很明确的原型,以至于在开发的时候就现讨论一些界面是什么样子,交互是怎么样的,影响项目的进度。

  计划是我制定的,从开发到上线定的是25天,包括美术设计、程序开发、制作音频素材、测试、上线、宣传这几个步骤。虽然后面计划在开发的时候有变动,但是这个计划也是很有必要的。

  计划制定好了一定要严格的执行。我们执行中也是遇到了一些问题,比如美术方面的,因为我们美术不是专业的美术,还是兼职,所以美术的工作相应就有很大的挑战,这边也是一直的积极帮助美术寻找素材,商量美术的风格,也下了很多的游戏,做学些和参考,64G空间的手机硬是把应用给装满了。这段时间我还要负责整个项目的进度把控,还有一部分技术的实现,确实压力挺大的,这时候就是多多想想上线后的样子。推荐个国外的开源游戏素材网:http://opengameart.org/,可以找到一些免费的设计素材和声音素材。

  代码管理用的国内的开源中国的Git方式进行托管,因为两个开发不在一起,挺方便的。

  开发的时候确实也遇到了很多问题,比如寻路算法比较慢、精灵删除内存没有释放、播放声音内存一直升高导致闪退、子弹轨迹导致没法选中宝石等等。接下来详细的讲下我们怎么解决的,这个可能技术会比较关心。

  1、寻路算法效率慢是因为用了swift自带的数组,就是直接用[]生成的数组,里面放的对象,我是觉得苹果对swift的数组查询效率还没有很好的优化,在数组里数量达到上万的时候,每次查询的效率在几十毫秒,因为A*算法的每次节点的判断,都需要进行查询的操作,当查找节点数量比较多的时候,有可能需要几十秒钟,这样肯定没法满足需求的,偶然间的尝试用了object-c的数组对象 NSMutableArray,发现效率明显提升,每次寻路都不会超过一秒钟。比较方便的是swift里是可以直接使用之前object-c有的对象的。

  2、精灵删除内存没有释放的这个问题,是这样的,子弹对象有攻击目标这个属性,当把攻击的对象的精灵移除的,相应子弹的引用的这个攻击目标的这个对象并不等于nil,这是因为swift也是根据引用计数来进行内存的自动释放的,但swift默认就是强引用,只要在引用的对象的时候前面加weak关键字,就是可以表示我不持有这个对象了,这个还是多亏看了swift的官方教程里有写到,有印象才知道这么解决的。

  3、播放声音内存一直升高导致闪退这个问题,一开始用的这个方法SKAction.playSoundFileNamed(),我觉得是SpriteKit的一个bug,就是用这个方法在多声音一直播放的时候,内存会不断的盘升,直到闪退,这个问题我也是各个网站去找解决办法,去了Stackoverflow网站和苹果的官方论坛,也看到有相应类似的问题,但是都没有找到很好的回答,我也是在这两个论坛都发了帖子,也是在Stackoverflow上跟国外朋友第一次用英语进行交流。这个问题也试了其他的一些办法,最后是还是用了Swift底层播放声音库AVAudioPlayer来实现多声音的播放。

  4、子弹轨迹导致没法选中宝石的问题,这个问题因为用到了粒子效果做子弹,当子弹多的时候盖住相应的宝石,导致宝石没法选中,这个最后解决的办法是根据触摸的坐标来寻找选中的宝石,而不是直接用nodeAtPoint(location)这个方法根据点击直接获取节点了。

  其实还有其他的一些问题在这就不说了,就觉得这几个还比较印象深刻,记得当时解决的时候,有时候折腾一天,一直到晚上凌晨几点了还很有精神,就是觉得这个问题一定要给解决了,这个心态可能跟很多做技术的人员一样吧。

  下面来讲讲测试吧,由于没有专业的测试,就是有我们策划负责测试了,测试我觉得最后别自己程序自己测试了,尽量找其他人来测试,这样可以多角度的发现一些问题。

  还有就是多人开发的时候有什么问题,尽量及时的沟通。

  我们项目计划执行上,总体来说一致的,不过中间也会根据实际执行情况有一些变动,比如美术的问题,更改了计划,延迟了2天,还有考虑到测试完直接上线的话,也是有风险的,因为毕竟我们只是小范围的测试,没有进行大范围的进行测试,肯定还是有一些问题没有想到的。所以计划上又增加了内测环节,上线日期再往后延迟。

  内测我们从各个途径成功邀请到了200位玩家,内测阶段确实发现了很多的问题,玩家们也给了很多的合理的建议,游戏性和稳定性都有了很大的提升。下期我再详细讲下内测的我们如何操作,还有线上发布的一些事情。

  开发的事情今天就先写到这里吧,欢迎大家的阅读。

  最近应用排名从付费总榜200多名降到了总榜500多名,确实有点力不从心哈。

  上次小伙伴让我建的群,方便大家的沟通交流,我建好了,大家可以加了,以后大家可以在里面讨论技术,探讨人生了。群号: 372385920

  还有上次很多小伙伴想玩下我们做的这款游戏,先简单介绍下,这是一款益智游戏,上手稍微有点难度,但是确实非常考验想象力和智商的一款游戏,需要建筑狭长的迷宫和合成高等级的特殊宝石,才能通关。目前已经上架了iOS平台,下载地址:宝石塔防,或者在AppStore里搜索宝石塔防,第一个就是。

  未完待续,敬请期待!

  

.net程序员转行做手游开发经历(三)的更多相关文章

  1. .net程序员转行做手游开发经历(二)

    上篇主要介绍自己个人的经历,这篇主要讲下学习新语言的过程. 上次说到最终选择的语言是swift,框架用spritekit,上次有网友对为什么选择用这俩呢,为什么不用cocos和unity呢,cocos ...

  2. .net程序员转行做手游开发经历(一)

    从辞职到自己开发游戏也有几个月的时间了,游戏也已经在AppStore上线了,我觉得我有必要写点东西,算是留下的一些记忆,也可以和广大博友分享下自己的创业经历,这可能不是一篇成功的创业经历,因为故事还在 ...

  3. .net程序员转行做手游开发经历(四)

    今天是大年初二,在这里先给大家拜个年,祝大家在新的一年里能事事顺心. 年前的时候更新了一版,先发了内测,没有想到过年这几天,有的小伙伴们还在玩,还给我们提了很多建议和意见,让我们觉得非常温暖,给我们很 ...

  4. .net程序员转行做手游开发经历(五)

    大家好,真的是好长时间都没有更新博客了.上来博客园发现很多朋友还在关注我们,那给大家汇报下最近的一些进展. 收费版上线了,但是下载量不是很多,刚发布的时候下载每天的下载还是挺多,我们几个小伙伴在论坛. ...

  5. 1奶茶店创业成本: 2发饰品加盟店创业成本 3眼镜行业店创业成本 从“程序员转行卖烧饼”想到IT人创业

    总结: -------奶茶店创业成本: 而这个奶茶店初期投资是:3万元加盟费+1万元保证金+8000装修+两万设备(冰柜.展示柜.收银机等等).别说赚钱,什么时候把初期投资赚回来呀! 一个店的利润就是 ...

  6. 从“程序员转行卖烧饼”想到IT人创业

    我的一个朋友最近总在跟我念叨着“我不想做开发了,整天累死累活写程序,也攒不下几个钱.我想辞职搞点啥!” 我问他:“你想搞点啥?”. 他说:“搞啥都比做开发强,做个网站赚广告费,接私活……实在不行我去卖 ...

  7. Cocos2d-x 3.X手游开发实例详解

    Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰 ...

  8. 程序员带你学习安卓开发-XML文档的创建与解析

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:程序员带你学习安卓开发系列-Android文件存储 因知识连贯性推荐关注头条号:做全栈攻城狮.从头开 ...

  9. 程序员带你学习安卓开发系列-Android文件存储

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充 ...

随机推荐

  1. MySQL数据类型——数值类型

    1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...

  2. SQL Server调优系列基础篇(索引运算总结)

    前言 上几篇文章我们介绍了如何查看查询计划.常用运算符的介绍.并行运算的方式,有兴趣的可以点击查看. 本篇将分析在SQL Server中,如何利用先有索引项进行查询性能优化,通过了解这些索引项的应用方 ...

  3. chrome浏览器首页被hao123劫持解决办法

    在chrome浏览器设置里面将新标签页地址改为www.baidu.com, 不过一般来说这个办法完全没用,因为我们面对的是史无前例的大流氓. 查看桌面chrome的快捷方式是否被篡改.右键快捷方式,点 ...

  4. MySQL事务学习-->隔离级别

    MySQL事务学习-->隔离级别 6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 数据库是要被广大客户所共享访问的,那么在数据库操作过程中 ...

  5. Centos和Redhat的区别和联系

    网上看到的,转载给大家 CentOS与RedHat的关系: RedHat在发行的时候,有两种方式:二进制的发行方式以及源代码的发行方式.无论是哪一种发行方式,你都可以免费获得(例如从网上下载),并再次 ...

  6. Java【小考】

    课上, 老师出了一个题: 考察:1.类的定义 2.类的属性 3.类的方法.重载.构造方法.代码块 题目是这样的: 设计 一个 类:Tree 要求: 1.包含main方法 2.属性:静态: String ...

  7. [译] OpenStack Kilo 版本中 Neutron 的新变化

    OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些 ...

  8. 【转】【收藏】LINQ学习心得分享--------(二)LINQ语法详解

    原地址:http://blog.csdn.net/xuemoyao/article/details/8053444   通过上一章节的学习,相信大家已经掌握了学习LINQ的前期的准备知识.在这一节里, ...

  9. NOIP2010提高组乌龟棋 -SilverN

    题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...

  10. 06章 Struts2国际化

    1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素.换言之,应用程序的功 ...