前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏小传五上海起点

游戏小传五上海起点

作者头像
码农戏码
发布2021-03-23 10:23:22
4420
发布2021-03-23 10:23:22
举报
文章被收录于专栏:DDD

上海,到了上海,还没有到面试的时间。就到51job上投简历。 投了很多了,但接到巨人的面试电话。面试过程记不清了,只记得hr很漂亮。

在网上向人询问巨人怎么样?虽然身在游戏行业,其实还不太知道巨人所处的行业地位,只知道征途游戏很火。结果得到了回复都是说巨人加班很严重,我听到这个也是很不理解,为什么做游戏需要加班呢?有那么忙吗?毕竟我也是完整的参与了一个完整的游戏项目,加班从没有概念。

所以我对去巨人有了犹豫。

到约好的公司面试也很快速,不需要多少面,就一面,就通知下周一入职。由于巨人的offer还没有收到,也就不等了,直接去了。结果在入职第二天就收到巨人的offer。人生就是这样,每次都与优秀的公司擦肩而过,在苏州时错过了蜗牛,来上海错过了巨人。当然你也可能不认为这些是优秀的公司,但想想有多少公司,尤其游戏公司存活了几年,多少人因为公司倒闭在利益和身心方面造成了损失。

刚入职,也不再折腾了,就这样拒绝了巨人offer。那时公司还处在上升期,我入了项目组,是一款休闲类游戏,抄袭的《弹弹堂》,只不过我们是空中的,也快准备压测了。

入职后,我就开始迫不及待地看源码,看看有什么新奇之处,结果发现原理一样的,跟我之前写的框架一样,只是加了些线程的处理,的确是有些线程的内容,但我还没有看明白它的意义。

这个休闲类游戏有两块比较核心,一是房间,二是战斗。忘记什么原因了,我开始就接手了房间系统。

成功都是留给有准备的人。在学校时我就学习了设计模式,看完了阎宏《Java与模式》,虽然我没有入魔到事事都想搞成模式。但我也学得扎实,至少当年是的。想想还真是学生时代能沉下心来看些厚书,难啃的书。

看了一下房间系统代码,发现代码里面满满的if else, 梳理了下房间的业务需求,对具体事务的抽象化能力很重要

  1. 创建房间
  2. 销毁房间
  3. 进入房间
  4. 退出房间
  5. 切换位置

不管是什么类型的房间(普通模式,挑战模式,队长模式。。。),这几个功能都是共性。找出共同面,控制不同点是关键。

这样就定义出了房间的接口。再去不同类型的实现,典型的策略模式+适配器模式+工厂模式。这几乎成了我之后处理复杂业务的惯用手法。

这算是在工作中的第一次对设计模式的实践。很到位。


刚开始准备压测时,发生了一件让我对游戏中的线程知识有了深刻的认知。

进入房间的时候,是有资源竞争的,因为房间有座位号。比如房间只有一个空座位了,但同时有两个人要求进入房间。这时怎么处理的。

再比如一个人在进入房间时,里面的人进行位置切换,两个人同时对同一个位置进行抢占怎么处理的?

你可能会说加锁啊。乐观锁,悲观锁。但在游戏中,不推荐加锁,锁太重了,游戏的实时性,可控性要求很高。处理手法是绑定线程。按业务划分对线程进行分类,业务与线程的捆绑。 记得在《java并发实践》中,作者有讲控制并发的方案有加锁,还有就是按策略控制线程。那游戏里面就是后者方案。

上面提到的两个问题,第一个同时进入房间,就是进入房间业务绑定上进房间的专门线程。第二个进入房间与切位置 就是以房间号来绑定线程了。

当时我领悟了这种方式后,有种豁然开朗的感觉。原来线程在游戏中的位置是这样的,游戏中处理线程并发的手法是这样的

之后的一段时间,接受了很多的新知识,再次学习nio,开始看mina源码,ibatis框架,aspectj。。。以前没见过的,没用过的太多了。

当然我也接受了加班一说,刚开始进去没什么事,老大要我在那加班,我就看看别人的代码,后面自己研究技术,再后来有很多的业务需求,开发周期紧张,时间真是不够用。我的网站 java1995.com 给停止开发与更新了,后面直接关闭了。一是没时间,二是他是过去的代表作,从学习技术角度讲,他已经完成了他的使命。


很多知识点,业务都是我自己的兴趣所在,并且做好了准备。

那时我看任务模块很有意思,首先任务很多,一个接一个,业务需求是什么样的?代码怎么实现的。之前看AOP的作用都是书上来的,比如日志记录,使用aop,保证正常业务的专一性。看了任务模块后,发现也是AOP的一个很好的实例。当时我们使用的是aspectj,我就学习了一下。后面去主动接任务模块时,就很顺手。

可以感觉到那时我主观能动性特别的强,对一切都是好奇的,并且付出行动。人们常说,成长是第一位。那么什么是成长,想到做到就是成长。

游戏开发中还有一个后台管理平台,就是GM平台。当时没有经验,尽然是在游戏快上线时,我们才开始开发,上线后,还有很多的功能没有完备。

单单游戏业务是很小的一部分。还有很多的项目支持着他。比如gate项目,GM平台...这些也是在后来才知道的。

当然这个时期我还不太了解。只是把游戏部分做好。

这款游戏还算是成功,至少代理费拿了500W,在那时,对我们公司来讲是相当不错了,在市场上也跑了好久,也跑到海外市场了。上线后的很多细节我不知道了,因为我跑到另一个项目组去了。

后端我们只有5个人,随着公司的发展,需要开发更多的项目。而我算是项目组里面能力的前列,就被选作新项目的后端主程了。

在这个项目组待了一年,可以说是最有成长的一年,成效特别明显,算是我真正游戏行业入门的一个项目。

这一年特别的有成长感,感觉到了自己的进步,也实实在在的成长了。为什么有如此大的感受。

  1. 首先是得到了结果反馈,这个结果是可以量化的。一年前,很多的概念不知道,尤其游戏中多线程模型,从不知道到知道,从知道并进行了实践,这种知道是被实践证伪的认知。
  2. 其次是我带着问题来的,带着问题学习是前人推荐的学习方法,尤其阅读时,常常被要求带着问题,这样不至于抓不住重点,遗漏知识要点。
  3. 最后有运气成分,正好这个项目组也在进化之中,在摸索,很多的不成熟,在第一现场踩坑绝对比他们分享踩坑经历更有冲击感

当然了,最核心应该还是内因,好奇,主观能动性,并脚踏实地去实践对游戏开发的认知。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农戏码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档