按照预定的日期拖了好几天,但最后始终觉得还是写一下的好,经常记录下过去的生活,是个好习惯。
从去年12月16号入职到现在,已经整整一年时间,每当这种时候总是觉得时间过的很快,这一年时间,已经从一个刚从学校里出来的傻小子,变得稍微有了那么点沉淀,只能希望以后越来越好吧,这里就按时间的顺序,来稍微回顾下自己的菜鸟赛季。
凭着大三最后一年学的半吊子的Ogre,成为了现在公司的一员,之后大部分时间都在做UI和3D的相关的工作,可是平心而论,这一年的进入,远远没有达到自己所期望的效果。
进入公司的第二个月,都在跟着老D学习CEGUI,老D是部门里最年长的程序员,经验也很丰富,但是做客户端却是来到这家公司之后因为人手不够才被临时调去学的,不过也还是教了我不少东西,对于我来说,之前在学习OGRE的时候虽然接触过一点点CEGUI,但是很不深入,也没有系统的去学习过,这段时间每天都在学习新的知识,日子过的也很兴奋。不过由于我们都对CEGUI的内部机制了解的不透彻,那段时间做过一些并不是好的设计和编码,在一年后的今天,客户端部分的瓶颈和bug有很多都出现在这些地方,再加上后来UI脚本的由很多同事都多多少少的做过修改,有些部分已经出现了难以维护的问题。磨刀不误砍柴工,这是被说烂的老话,用在我们这里也合适,如果当时可以在花多一些时间去研究一下CEGUI这种第三方库的内部机制,再下手去做的话,可能会有一些更好的效果。这段时间总体都是在学习,相对完整的功能是完善了cegui的中文显示,不过就是前面的提到的原因,所谓的完善,其实都是把google来的代码修修补补的加到我们自己的代码里,好在后来在做字体特效的时候,花了时间去重写了这部分代码。
试用期的最后一个月开始,被调去跟着公司当时的主程结对,都在写游戏的逻辑部分,也就从这时开始,才真正开始体会到了一种新的编码方式------结对编程。
公司在开发过程中使用了结对编程的方式,这一年下来,除了中间赶进度时候短暂的自己拆开写过两个月程序以外,其他时候都在和同事结对,也对这个以前之前书上看到过的概念有了些自己的感悟,结对编程显然始终优缺点都很突出的方法,出错率低,开发伙伴之间沟通充分,也会有很大程度的知识共享在某种程度上可以降低人员流失对公司对项目造成的影响,这些优点或许就足够让我们继续坚持现在的这种方式,尤其对于我这样的菜鸟来说,能够和那些经验丰富的老程序以这样的方式一起工作,对自己是种很大的促进,但是,也必须清醒的认识到,结对编程还是在很多必要的条件都满足的情况下才能发挥的出效果,这一年期间我也有段很不愉快的结对精力,这个后面也会提到。
我还清楚的记得第一次和公司那是的大牛一起结对时候的那种震撼,那时他还在用自己带过来的机械键盘,一整天几乎都觉得他的手指是在键盘上飞舞,那段时间,每天都是大牛写注释我来做具体的编码,还记得低级的错误被大牛指出来后自己的那种羞愧,也就是那段时间的锻炼,让我更快的进入了公司的节奏,也是这一年里的第一个上升期。
现在已经不太记得最开始做3D是从具体什么时间从做哪个功能开始了,但是这毕竟是自己的目标方向,也是在目前的这个团队里,我能做出最大共享的领域(虽然自己的技术还是很菜),这里就简单记录一下这一年在这一块相关的感悟。公司的项目使用了现在很火OGRE作为渲染引擎,我因为来之前使用OGRE做过两个小项目,对这个引擎还有些了解,来到公司的时候,客户端还很简陋,只是简单实现了最基础的功能,程序上基础的框架已经搭好了,不过由于没有相关经验丰富的程序指引着我们做这件事,这一年另一个3D程序Z也好,我自己也好,很多时候都是边学边用的在做功能,也就是因为这个原因,从一开始就没有对游戏的效率投入太多的关注,总是希望能够优先完成某种功能的效果,导致到了现在,游戏的帧率已经完全到了不能接受的范围,等到现在再回头去做优化的时候,每做一点修改都变得很困难。
也是因为磨合的原因,加上我们提供的工具也很不完善(场景编辑器是在开源工具的基础上修改),和美术部门的配合也不够默契,在资源的问题上出过很多bug,即使现在看起来平稳运行的资源,在规格和始终方式上由于要求的不严格,也都存在很多问题,最典型的例子就是对于模型材质的合并。Ogre的mesh中是按照submesh来安排渲染的批次数的,也就是说,如果一个mesh有两个使用相同材质的submesh,那么在渲染它的时候也会有两个批次而不是一个,所以就要求美术在制作的模型的时候要将材质尽可能的合并。这个问题和美术讨论过很多次,也改过很多次,可是过了一段时间,就发现新制作的资源又出现了相同的问题。不过这些都是磨合的问题,希望后面可以变得越来越好吧。
3D目前还有很多事情要做,效果和效率,可是我自己好像已经进入了一个瓶颈期一样,最近在做3D的加载优化,却始终找不出一个能让大家都接受的解决方法,有时候自我总结,还是对OGRE的理解不够深入,其实按说OGRE有源代码可以看,是个很好的学习教程,可以自己却因为这样那样的原因,到现在为止也没有系统的学习过,进步也有限也就是再所难免的了。
不过好在自己还有时间可以去努力,漫长的职业生涯也刚过了第一年,只要从现在开始,就不算晚了。
明年要学习的东西:
1、巩固图形学基础 以后也不可能永远做ogre,如果希望自己的标签是“3D程序员”的话
2、数据结构/设计模式 这些原本是应该在学校里去学习的东西,在学校没学好,就要尽快补上来,对于这一项,时间已经不多了。
3、吃透OGRE 至少目前,这个还是安身立命的根本,吃饭的家伙
4、沉淀自己的代码 没事的时候可以自己写一些通用的模块,对自己是个很好的提升。
5、接触新的引擎