游戏开发实习生一年实习经历总结
从2015年的6月中旬,到2016年的5月下旬,将近一年的实习生活在愉快而又青涩的岁月中悄然结束,虽然命运的齿轮没有停止转动,但我想还是有必要做一下这一年来的总结,也顺便展望一下我即将开始的毕业后的新生活。
总的来说,这一年的收获比我预期的要多。不仅技术实力有了很大提升,做事的方式也有了很大改变,更重要的,这一年的工作经验,让我更清楚地认识到了自己哪里存在不足,也更清楚了自己未来的发展走向。在这篇总结中,我将分享我这一年来,在技术上,工作上,思考上等诸多方面得到的经验,仅作与君共勉之用。
一直希望开发游戏的我因各种机(命)缘(运)和(的)巧(选)合(择)来到了北京,在一家游戏公司从事客户端开发实习生的工作,也有幸来到了一个新的项目组,有机会体验一款游戏从零到一,再从一到一百的过程。但其实这款游戏到目前为止也还处在从零到一的过程,只有成功公测之时,才能踏上从一到一百的征程。
我刚来到之时,项目还没有立项,客户端只有三个人:我师父,翔老板,引擎妹子,服务器也只有三个人,策划也只有三个人,加上QA和技术主管(其实我也不知道该怎么叫)等也就十几个。平时主要问题就是跟这三个客户端“老人”来交流,恰好他们也很爱玩游戏,工作之余的话题也多了起来。我师父是个有些羞涩又有些正经的人,翔老板很有意思,引擎妹子的年龄一直是个迷,出生日期仿佛会随着时间的推移而提前。 我就在这样一个不大的团队中开始了第一份commit。
在做了几个小功能之后,时间大概是在开始一个月后吧(在我来之后不久我们的立项通过了),我接到了一个比较重要的模块。评审的时候,有人担心我无法很好地完成,因为对于一个新人来说,在还不能完全熟悉自家引擎和框架的情况下,能不能很好地完成一个复杂且重要的模块确实是一个值得担忧的问题。但我师父给予了我极大的信任,坚持让我去做,在这件事情上,我是很感激的。当时的我,也有一点担心,不过更多的是在考虑如何很好地完成,毕竟大学三年我几乎一直在做项目,有大的有小的,做出来对我来说没问题,但我很清楚,这个东西和我大学前三年做的东西的难度是两个级别。
当时我自诩项目经验并不少,所以对策划们并没有完全以新人自居,在做那个模块的时候,有些问题我以坚守程序的底线为目的,和负责该模块的策划妹子产生了一些比较大的分歧,那几天在讨论该模块的时候,总感觉有些尴尬。事后想想,当时我的处理方式确实不对,即使我现在依然认为我坚持的是正确的,但我应该考虑到,一个工作经验比你多的人,坚持一个意见必然有其理由,一个新人并不应该直接下结论去反驳,正确的做法应该是找能正确处理这件事的人去协商解决。但是我当时没有去找我师父,而是直接用我的观点毫不留情地去批判她的观点,造成了短暂的不愉快,我觉得我当时可能并没有充分考虑到她的想法。
不过这件事情终归过去了,我也不算特别顺利地完成了这个模块。当时写完就感觉很多地方设计的不够合理,如果让我现在重新写一遍,可能就不会有那么多设计上的问题了。
其实对于代码结构的把控,会随着经验的增加而不自觉的变好,比如我在实习结束前写的那些功能,和最初写的那些功能,代码的质量是截然不同的,但是中间并没有很明显地感受到能力的提升。走之前要暂时把我所写的功能交接给别人,别人问我你的代码风格是什么样的,我笑说那得看什么时期了。<b>所以并不需要刻意地感受自己提升了多少,多写多练多思考,自然会有提升。</b>
再往后,项目组里陆续加入了许多新成员,在队伍壮大的同时,游戏也越来越完善,代码也越来越多。越大的项目,不管前期设计的多么好,后期总会遇到一些问题,或者,前期你认为好的设计,随着你的经验的增长,你可能会觉得有更好的设计。总之,后期开发对前期开发时的修改几乎是无法避免的。
我在做一些模块的优化的时候,改过自己的设计,也跟别人沟通过,改过别人的设计。改代码的结构是件很头痛的事情,尤其是当这个代码是一些基础类的时候,需要考虑的东西很多,而且也面临着很大的风险。改的时候,难免要耽误一些时间,但我相信在对成本进行正确评估之后决定重构的代码,经修改后会更大地节省你后续开发维护的成本。这就引入了一个重要的话题,如何去评估修改的成本和修改后所带来的收益。本文不是教科书,没法对其做讨论,我所能分享的就是,<b>在你想改的时候,别因为有成本就直接放弃,至少尝试和其他人交流一下,因为既然你想改,那就说明这段代码有些问题。</b>
在做修改的时候,我也明显感觉到了我的代码风格的一个变化。起初,我总是喜欢写最“精致”的代码,让代码尽可能的少运行,使效率达到最大,现在看来这种想法其实是很幼稚的。抛开特殊的情况不谈,大部分情况下,加一个if判断,或者把一个循环里的东西拆到多个循环里,不会影响什么效率,反而会提升代码的稳定性和可读性。但这样写,总觉得有些别扭,好像原本就不需要执行的代码非要执行一次,浪费计算资源。后来我终于明白,有些时候,这并不是不需要执行的代码,而是必要执行的代码。
一个接口,外部传来一个参数,你是否要对其进行空判断呢?不管调用这个接口的人经验多么丰富,你都无法保证这个参数会不会由于各种原因变成了null,加一个if,让代码变得稳定,不会崩溃,并且并不会影响效率(绝大多数情况下),还可以上传错误日志,比直接使用不知道高到哪里去了。现在我的代码,凡是重要的地方,都会进行必要的判断等处理,把代码稳定性放在第一位,结果自然是exciting!
随着游戏开发经验的增加,关于游戏内容本身的需求,其实对我来说已经没有任何障碍了,但我师父给我的一个任务让我意识到,对于一个游戏开发者来说,即使有人给你开发游戏引擎,你要做的也远远不仅仅是处理游戏逻辑。我接到的一个任务是开发安卓和苹果的本地推送(通知),起初我确实比较头痛,因为我从来没接触过安卓和苹果的开发,最多会一点Java,objc对于我这个零基础的人来说真是看都不想再看一眼。但是任务还得做,说好的编程最重要的是思想呢?于是上官网找接口,遇到问题谷歌百度一起用,一天基本把iOS的功能大致实现了,虽然我不会objc,但是苹果这方面的借口设计的比较简单明了,很快就能搞定。但是安卓我就遇到了很度坑,其实相信其他人做安卓也会遇到一些类似的坑吧。
说实话做安卓这个功能是我写这么多年代码第一次感到绝望的时候,因为安卓的开发我真的不懂,也没时间学,也不能把这个东西拖很久(虽然最后确实拖了一段时间)。我明明已经按照demo写了怎么还是收不到?为什么另一个游戏能收到我收不到?为什么我发的推送另一个游戏收到了啊?为什么收到通知不能响应啊?开机自动注册我已经解决了怎么又没有了?点击通知栏怎么没有反应难道要自己写?推送的时间怎么不对呢?还有很多问题,各种问题把我逼到了绝路,当然主要还是因为我不懂安卓。那段时间我有几天晚上独自一人待到11点才走,问了各路人马,公司内的公司外的都有。我还是希望自己能做出来,我也不能把别的项目组的人叫来直接帮我写啊,我今天不写以后也得写,自己努力做一下我相信是有好处的。最后断断续续,折腾了很长一段时间,终于把它全部完成了,当时我真是长舒了一口气。这真是我遇到的最大的麻烦,但是以前我有一个念头,什么事情你坚持做了,都会有解决办法,但其实以前没遇到故这么大的困难。这次能坚持下去,是因为这是工作,必须要做,即使做不出来也要做下去,最后还真的做出来了,从此我更加相信这个念头,<b>只要坚持去做,都会有解决办的。</b>
这个功能的开发过程中还有一个小插曲,我上级的上级,简称为我boss吧(我直接上级应该是我师父,组里的客户端主管,然后上级的上级就是主管这个项目的技术主管,其实我也不知道这个职级对不对哈)。我做iOS端的这个功能的时候,发现接口设计的比较简单,代码也不多,虽然自己没学过objc但是看起来感觉也不难啊,想着要不试试自己边学边写吧。但是写起来发现,真的是照着网上的一个字符一个字符的敲,说实话如果你objc零基础,看objc的代码真的不一定看得懂,但我还是傻乎乎地继续敲着。我boss这时候过来问我,你是在自己写吗?我当时还很不好意思地说“我感觉挺简单的就像自己试试”。然后boss跟我说这东西并不简单之类的,而且现在也没有必要去学,时间也来不及。其实boss说的是对的,时间确实来不及,至于学不学,我不系统地学objc而仅仅只是为了完成一个功能简单看看语法照着网上的抄,这种学有什么意义呢?下次肯定会忘记。于是我直接拿网上的代码,然后参考其他的,最后弄出来了,当时第一感觉就是,幸亏没边学边写,要不然得写到啥时候。有时候还是高估自己了,几行代码只是说简单的实现一个功能,还有应对你的需求做调整,而且,objc那代码,真是学起来很不习惯,我是再也不想碰了,当然有单子过来肯定还是会解决啦,我就是借机吐个嘈。所以我想表达的就是,<b>工作中先以完成任务为主要目标,并千万不要高估自己,毫无把握的事情不要轻易尝试,否则你会被坑的,而且这种坑是无意义的,踩了就只有教训,没有经验。</b>
之后的技术上和工作上的东西就没有太多可以分享的了,也算经历了一些风雨吧,基本上都是家常便饭了,不谈也罢。在北京实习这段时间,也算是经历了一些大事吧,也许是因为自己真正处在了互联网的浪潮里,所以对于一些事情也会发表一些看法吧(其实是为了在知乎上骗粉噗虽然现在才131个粉丝)。我只想谈一件事,就是魏则西事件。
魏则西事件,可谓是把百度再次推上了风口浪尖,一望之下全是各路口诛笔伐,但是有心人一定注意到了,大家的指责最开始都集中于百度,而后才转到了兼管部门或是武警医院。事情一出,始作俑者当然会将矛头指向最面向公众的责任单位,也就是百度,而后一部分人想到了这个锅不能百度背,武警医院三甲资质,行业监管难道让百度来做吗?于是大家纷纷醒悟,都看到了问题的本质。这其实没什么,正常人都会这样做,但是不是人们在不受太多束缚的时候,发表的言论太过于冲动且少了一些思考呢?毫无疑问这是个浮躁的时代,而大部分人却长期无法达到自己的理想状态所以变得暴戾,对于时事习惯于先评价再思考或者只评价不思考,当然在这个时代背景下也许大部分人都有意无意地这么做了,似乎变成了一种合理的方式。<b>总而言之,你也无法要求所有人都经过深思熟虑之后再发表言论,这就是社会现实,所以后来我学会了旁观,不再过多地参与到激烈的讨论中,这些事,说实话,与我的关系真的不是特别大,虽然我也对一些事情感到其气愤,可是想想我也无法做什么,只能静静看着了。</b>
经历了这些,终于让我明白了一个道理,这些事情由他们去争论就好了,跟我自身利益关系不大的,凭什么要求别人进行思考?况且自己思考的也不一定对。我只需要做好我自己,做好我的工作,做好我的游戏,赚好我的钱,爱好我爱的人,至于其他的东西,该怎么样就怎么样吧。
我对游戏有执著,我从小时候就梦想着开发游戏。因为今年毕业设计出了一些事情,导致我现在已经毕业了还在写这篇文章,在写这段的时候我其实明天就要正式上班了。很庆幸大学四年过后我依然对游戏有热情,依然能坚持梦想,也找了不错的工作,家庭也挺和睦,没有什么后顾之忧,所以,还有什么理由不努力奋斗呢?
愿所有人都能安好。
欢迎关注知乎:windsmoon