.net程序员转行做手游开发经历

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

这篇主要是讲下自己的一些经历。

我出生在河南的一个小村庄里,小时候是跟着爷爷奶奶一起生活的,捉蚂蚱,套马蜂窝都干过,有时候没还跟爷爷奶奶一起下地干活,现在回想小时农村的体验还是很有趣的,也听说和爷爷奶奶生活的孩子比较聪明,不知道是不是真的,不过确实很多人说我比较聪明。接着6岁左右的时候,随爸妈一起到了青岛。由于对新的环境不熟悉,不愿与人交流,性格特别内向,那时候就愿意自己做点小发明,爱玩航模、四驱车,用个冰糕棍削个兵器大全啥的,想想那时候就有一颗工匠的心,哈哈。

高中时期有了人生第一台电脑,不过一开始都是用来玩游戏,后来喜欢上了Flash动画,就看完了一本书,也做了几个小动画,当时也是特别有成就感的。大学我是在我们老家上的,一本吧,自己当时也懵懵懂懂的就上了大学,自己也没有什么明确的目标,4年大学就在游戏中度过了,现在回想那段时间如果能有点什么兴趣,做一点有意义的事情,会更好的,比如自学点游戏开发、动画制作之类的。

09年去了北京,第一份工作就是做.net开发,算是了解了.net的开发过程,也做一些JavaScript的一些工作,也学会了jquery和Ext(现在叫Sencha)的前端框架。第二家公司是做信息化的公司,去了主要是教一些毕业生使用了Ext框架,也做了2个项目吧。第三家公司是做线下o2o的小公司,自己负责一个系统的开发,不过由于市场的原因,项目没有得到更好的发展,后来听说公司拉了投资,人也多了,最近这位老板还让我给他推荐.net开发人员。第四家公司是一家电商公司,前面主要做CPS广告联盟,后面做彩票,彩票技术是我负责的,在这里知道了自己负责一件事情的时候,对个人的能力提升是很快的。6年的时间一共待过这四家公司,当时的离职原因也是这几点,薪资、兴趣、部门变动,现在想想确实也有点频繁了,没有更深入的了解每一家公司。

7月份从最后一家公司离职,回家待了2月时间,主要是休息,处理家里的一些事情,还有想以后的路怎么走。

9月份和几个同学一起商量,决定做一款小的益智手游,不过他们都是兼职。人员组成:2个开发  1个策划 1个美术,可以说都不是游戏制作专业的,也都没有移动的开发的经验,2个开发也都是之前做.net开发的,包括我,美术也是因为这个同学懂点ps,就拉过来一起做了,就是这样我们还是行动了。

我和另一开发商量,为了更快速的上线和尝试,决定优先上线iOS平台,语言采用苹果自己家的swift,游戏引擎选择Spritekit,接下来的一个月我们开发就是学习这门新语言和引擎的过程,这期间策划也在进行游戏设计。

(二)

上篇主要介绍自己个人的经历,这篇主要讲下学习新语言的过程。

上次说到最终选择的语言是swift,框架用spritekit,上次有网友对为什么选择用这俩呢,为什么不用cocos和unity呢,cocos和unity我觉得相对来说比较成熟,但是一开始觉得要接触的东西会比较多,对我来说学习的成本要大点,spritekit 本身集成在xcode中,对新手来说会省去很多的配置工作,可以很快的进入开发工作,spritekit目前用的人确实不多,现成的开发库也比较少,遇到问题也不好解决,这个在我们后面开发中也能感受到了,不过swift在xcode的中的编码和调试还是蛮顺畅的,所以有想法自己做游戏的朋友,根据自身特点,选择合适的框架。

接下来进入正题,讲下自己是怎么学习swift和spritekit的。

苹果推出新语言的时候,就很感兴趣,也一直想做移动的应用,所以一直关注,期间也看了一本中文的swift的语法书,觉得这个语言其实跟C#和JavaScript很像的,当时的也没觉得有什么特别之处,就是一些形式的改变,但比起object-c的语法感觉要容易理解多了。

刚开始学习spritekit的时候也是网上找书,可是讲spritekit的中文书确实很少,也没买到。然后就是在一个技术网站上发现了有一套入门教程,感觉比较适合,那套教程原价好几百吧,不过在淘宝花了几十买了学习码,可以直接学习,不过只能看一周的时间,所以那几天一直没有停歇,一天看几课,每课的我都照着事例写一遍,有时候看到凌晨几点,觉得除了高考没有这么努力过,就这样把这套视频完整的看下来了,也写了几十个小例子,可以说对游戏开发和spritekit有了初步的了解。

因为学习spritekit的过程中,发现自己swift语言的有些不足,觉得语言的基础也要再了解一遍了,就下了官方的swift的教程(The Swift Of Programming Language),那时候正式赶上十一期间,看朋友群的朋友各种发出去游玩的照片,自己确在小屋里看书,程序员的孤独谁能懂,当时给自己定的目标是十一期间看完这本书,每天逼着自己看几章,而且是英文的,自己英文水平也是一般,想想是有多费劲,但就这样还看了一大半吧,后面的章节觉得对我游戏编程影响不是很多,而且光看语言,没有实际的操作,觉得提高不是很大,也不好理解,就没继续看了,不过这本书写的确实有水平,后面遇到的一些问题也在此书里找到一些解决办法。

之后找到两个Spritekit的QQ群,从群里找到一本比较新的Spritekit的英文教程(Game Development with Swift),花了2天时间给看完了,也更加清楚了游戏开发的一些事情,这其中包括精灵、摄像机、动作、控制、物理引擎、碰撞、菜单、声音、GameCenter、上传Appstore等等,慢慢发现自己英语水平也有所提高了,书中大部分意思也都能看懂了。另外加群还有很多好处,后面会讲。

现在基本知识学习的差不多了,游戏设计也快成型了,已经清楚做什么类型的游戏了,可以开始做一个游戏DEMO出来了。

我们这次做的是一款迷宫类型的游戏,最主要涉及到的核心算法就是寻路算法。接下来两天就一直在网上开始找和学习寻路算法,最后找到有两个算法用的比较多,一个是Dijkstra算法,一个是A*算法。Dijkstra算法是比较有代表性的寻找最短路径的算法,A*算法引入了估价函数,估价值与实际值越接近,估价函数取得就越好。游戏中多用A*算法比较多,效率也更好点,所以我们也是选择了A*算法,并用这个算法写出了一个的寻路的小DEMO。

今天就写到这里吧,写到这里的时候我们正在推广自己的小游戏,推广确实不太容易哈,后面会讲我们推广的一些方法和途径。

(三)

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

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

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

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

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

代码管理用的国内的开源中国的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位内测的玩家,在短短的不到一个月的内测时间里,我们游戏就更新了好几版,游戏稳定性和平衡性都得到了很大的提升。

内测的技术操作是通过苹果自带的内测功能实现的。苹果的app应用不像android的应用一样,打包出来在哪都能安装,苹果这方面控制比较严格,但是还是有几个途径是可以不用必须发到Appstore上就能安装的。主要以下几个:

1、通过添加开发者测试设备进行安装,一个开发者账号能添加每种设备最多100个,这个是在开发者后台进行添加设备的uuid,下载证书,在Xcode打包应用的时候把证书打包进去,把打包好文件发给测试人员,测试人员通过itunes就可以直接安装应用了。

2、通过苹果的官方应用TestFight添加内部测试,只能发给内部人员,应用不需要审核的。

3、通过苹果的官方应用TestFight添加外部测试,每个应用上限是1000个,需要经过苹果的审核,一般是1-2天,就第一次审核慢,后面的版本就比较快了,我们的内测就是通过这个方式进行的。具体的操作步骤是,在iTunes Connect里先添加应用信息,xcode里打包上传构建版本,添加测试版本,苹果审核,审核通过后,开始测试,给内测用户发送邀请邮件,用户打开邮件通过TestFight安装应用。

怎么邀请内测的玩家呢?我觉得这个方式是很多的,可以从身边的朋友、论坛发帖邀请内测、加qq群、朋友圈、微博、qq空间。

我们这个算是小众的一款游戏,上手比较难,邀请身边朋友尝试的时候,大家都觉得好难,不好上手,后面我们进行改进,分了3个模式,大幅降低了简单模式的难度。

论坛发帖的方式,发帖可以说抢先进行试玩,内测给予一定的奖励之类的,很多用户都会踊跃的报名参加的。发帖最好也是根据游戏的类型特点,有针对性的选择论坛发帖,这个用户的契合度还能更高。发帖的时候要注意言辞变换一些说法,我们的很多帖子都被当成广告进行了屏蔽。

我们专门创建了一个用户交流的qq群,内测的用户我们会优先选择加入qq群里,这样用户有什么建议和意见通过qq群很好的沟通交流。

就是通过这种方式,内测的玩家们提了很多意见和建议,我们进行了修正和改进,这块的重点就是一定要搭建好跟用户沟通的桥梁。

由于我们也是经验也不是很丰富,内测的时候暴露了很多问题,像版本问题,一开始我是觉得苹果用户一般会自动升级,所以我们开发的时候,就只支持ios9.0上,内测的时候很多小伙伴说系统不支持,后面我们又自己实现了一些ios9.0自带的一些功能,让系统支持到了ios8.0。还有比较大的问题就是崩溃的问题,每次有玩家在群里有崩溃问题,我的心情也是一样的,也是崩溃的,因为很多崩溃我们这边无法复现,我的做法是,每个发用户只要发崩溃信息我都是亲自找用户单聊,详细的询问崩溃发生的一些情境,然后再检查可能发生崩溃的地方程序。

内测的时候还有一个问题是比较严重的,是游戏难度和平衡性,这个直接关系到用户的体验,很多用户反映。我专门拿出了一周的时间,将游戏的难度和平衡性做了调整,记得那一周,天天就是想着做这一件事,吃饭时,躺着床上都在想这件事,一本画本让我用了一半,就是研究和计算数据,那段时间真的觉得自己的脑细胞都用到极致了。

记得每次发测试更新的时候都基本上在凌晨了,还要先把程序上传到苹果服务器,然后经过苹果的自动审核通过后才能再发测试,由于苹果的自动审核时间一般是几个小时,发上去了自己就比较困就是躺床上先睡了,但是还总是睡不好,总想着苹果审核完了第一时间发到测试上,就一会醒来一次点点看看审核通过没。

虽然现在的界面也说不上很好,但是比起内测前也有了很大的改进,记得那时候天天我催着我们的美术做图片,那时候他自己的工作也是非常忙,还天天被我逼着做图到很晚,周末也得不到休息。我们的策划还要兼任测试的工作,每次做完了,先发给他进行测试,经常也是聊到凌晨几点钟。我们的另外的一个开发,经常看到他代码提交的时间是凌晨1、2点钟。因为我是全职,就算我干的很晚,第二天还可以晚点起,他们不一样都有自己的工作,第二天还要早起去上班,去挤地铁,真很辛苦,所以我给他们说,我一定要尽自己最大努力要这个游戏挣钱,给他们回报。


很多小伙伴想玩下我们做的这款游戏,先简单介绍下,这是一款益智游戏,上手稍微有点难度,但是确实非常考验想象力和智商的一款游戏,需要建筑狭长的迷宫和合成高等级的特殊宝石,才能通关。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值