上海,到了上海,还没有到面试的时间。就到51job上投简历。 投了很多了,但接到巨人的面试电话。面试过程记不清了,只记得hr很漂亮。
在网上向人询问巨人怎么样?虽然身在游戏行业,其实还不太知道巨人所处的行业地位,只知道征途游戏很火。结果得到了回复都是说巨人加班很严重,我听到这个也是很不理解,为什么做游戏需要加班呢?有那么忙吗?毕竟我也是完整的参与了一个完整的游戏项目,加班从没有概念。
所以我对去巨人有了犹豫。
到约好的公司面试也很快速,不需要多少面,就一面,就通知下周一入职。由于巨人的offer还没有收到,也就不等了,直接去了。结果在入职第二天就收到巨人的offer。人生就是这样,每次都与优秀的公司擦肩而过,在苏州时错过了蜗牛,来上海错过了巨人。当然你也可能不认为这些是优秀的公司,但想想有多少公司,尤其游戏公司存活了几年,多少人因为公司倒闭在利益和身心方面造成了损失。
刚入职,也不再折腾了,就这样拒绝了巨人offer。那时公司还处在上升期,我入了项目组,是一款休闲类游戏,抄袭的《弹弹堂》,只不过我们是空中的,也快准备压测了。
入职后,我就开始迫不及待地看源码,看看有什么新奇之处,结果发现原理一样的,跟我之前写的框架一样,只是加了些线程的处理,的确是有些线程的内容,但我还没有看明白它的意义。
这个休闲类游戏有两块比较核心,一是房间,二是战斗。忘记什么原因了,我开始就接手了房间系统。
成功都是留给有准备的人。在学校时我就学习了设计模式,看完了阎宏《Java与模式》,虽然我没有入魔到事事都想搞成模式。但我也学得扎实,至少当年是的。想想还真是学生时代能沉下心来看些厚书,难啃的书。
看了一下房间系统代码,发现代码里面满满的if else, 梳理了下房间的业务需求,对具体事务的抽象化能力很重要
不管是什么类型的房间(普通模式,挑战模式,队长模式。。。),这几个功能都是共性。找出共同面,控制不同点是关键。
这样就定义出了房间的接口。再去不同类型的实现,典型的策略模式+适配器模式+工厂模式。这几乎成了我之后处理复杂业务的惯用手法。
这算是在工作中的第一次对设计模式的实践。很到位。
刚开始准备压测时,发生了一件让我对游戏中的线程知识有了深刻的认知。
进入房间的时候,是有资源竞争的,因为房间有座位号。比如房间只有一个空座位了,但同时有两个人要求进入房间。这时怎么处理的。
再比如一个人在进入房间时,里面的人进行位置切换,两个人同时对同一个位置进行抢占怎么处理的?
你可能会说加锁啊。乐观锁,悲观锁。但在游戏中,不推荐加锁,锁太重了,游戏的实时性,可控性要求很高。处理手法是绑定线程。按业务划分对线程进行分类,业务与线程的捆绑。 记得在《java并发实践》中,作者有讲控制并发的方案有加锁,还有就是按策略控制线程。那游戏里面就是后者方案。
上面提到的两个问题,第一个同时进入房间,就是进入房间业务绑定上进房间的专门线程。第二个进入房间与切位置 就是以房间号来绑定线程了。
当时我领悟了这种方式后,有种豁然开朗的感觉。原来线程在游戏中的位置是这样的,游戏中处理线程并发的手法是这样的
之后的一段时间,接受了很多的新知识,再次学习nio,开始看mina源码,ibatis框架,aspectj。。。以前没见过的,没用过的太多了。
当然我也接受了加班一说,刚开始进去没什么事,老大要我在那加班,我就看看别人的代码,后面自己研究技术,再后来有很多的业务需求,开发周期紧张,时间真是不够用。我的网站 java1995.com 给停止开发与更新了,后面直接关闭了。一是没时间,二是他是过去的代表作,从学习技术角度讲,他已经完成了他的使命。
很多知识点,业务都是我自己的兴趣所在,并且做好了准备。
那时我看任务模块很有意思,首先任务很多,一个接一个,业务需求是什么样的?代码怎么实现的。之前看AOP的作用都是书上来的,比如日志记录,使用aop,保证正常业务的专一性。看了任务模块后,发现也是AOP的一个很好的实例。当时我们使用的是aspectj,我就学习了一下。后面去主动接任务模块时,就很顺手。
可以感觉到那时我主观能动性特别的强,对一切都是好奇的,并且付出行动。人们常说,成长是第一位。那么什么是成长,想到做到就是成长。
游戏开发中还有一个后台管理平台,就是GM平台。当时没有经验,尽然是在游戏快上线时,我们才开始开发,上线后,还有很多的功能没有完备。
单单游戏业务是很小的一部分。还有很多的项目支持着他。比如gate项目,GM平台...这些也是在后来才知道的。
当然这个时期我还不太了解。只是把游戏部分做好。
这款游戏还算是成功,至少代理费拿了500W,在那时,对我们公司来讲是相当不错了,在市场上也跑了好久,也跑到海外市场了。上线后的很多细节我不知道了,因为我跑到另一个项目组去了。
后端我们只有5个人,随着公司的发展,需要开发更多的项目。而我算是项目组里面能力的前列,就被选作新项目的后端主程了。
在这个项目组待了一年,可以说是最有成长的一年,成效特别明显,算是我真正游戏行业入门的一个项目。
这一年特别的有成长感,感觉到了自己的进步,也实实在在的成长了。为什么有如此大的感受。
当然了,最核心应该还是内因,好奇,主观能动性,并脚踏实地去实践对游戏开发的认知。