Summary of Summer in 2012

自从六月底的助教结束以后,我就来到了UC实习。这段时间不能说学到了很多东西,但也不是什么都没有学到。这段时间感觉很多事务都同时进行着,有点乱,有点充实,也有点彷徨。

主线1:UC实习

贯穿这三个月的主线无疑是在UC的实习生活了。说实话,在UC工作我非常愉快,早上九点半上班,包三餐,并且工作环境也还算不错,我每天在座位上效率都很高,但是这是有代价的,这个容后再说。一进UC给我们的任务就是写一个HTML5的游戏,当然,这只是一个热身的项目,为期一个月,旨在要我们熟悉整个开发的流程,并且让我们体验团队合作以及一股作气专心做一件事情的威力,我也确实感受到了。在每天的编程之中,我都充满激情,那些学习的时候感到非常抽象的设计模式居然能自然地在代码重构的时候运用,这是最令人鼓舞的一件事情了。

其实我本来就没正式写过什么游戏,这次的写游戏经历确实使我受益终生。在之后,我又写了两个小游戏,一个是像素风格的贪吃蛇,另一个是消金币。虽然这些游戏逻辑都非常简单,但是写到就发现,有太多的细节需要斟酌了。比如我们的第一个游戏,在此还是现将其叫做2D版的temple run吧,主角跳的动画,获取道具的动画,以及背景的云雾如何票动,这些都是一些看似微小,但是实际上却非常影响整个游戏的体验。这个游戏最为失败的地方就是没有人帮我们设计主角,以至于到最后,其实也无所谓最后,我们的主角就仅仅是一个没有五官的小人。

在接下来的八月以及九月,就基本上是自由学习时间了。在工作更迭的时候,我被问到是希望做游戏还是希望做应用,我当然毫不犹豫地说是做游戏,但是由于UC主要并不是以游戏开发为主,所以我就变得比较闲了,任务就是研究nodejs,看看它能为服务端的游戏带来什么。其实我本来就想学一下nodejs,这下名正言顺了。但是由于这个东西仍在飞速发展当中,很多东西都在变。说实话,看了一个月的mongodb,socket.io,express等,发现这些东西确实好美,在应用他们的时候,我也用上了coffeescript,这个东西一直没有什么机会用,就是因为我之前开的一些项目都是用javascript的,不是太愿意将几千行的代码转为coffeescript,于是就一直不了了之。但是最近用起来确实是很爽,爽到我基本不去考虑效率了。

在我们团队里,基本上就只有我有那么多的自由学习时间,他们都在为公司做贡献。其实当初我也有点不好意思,但是慢慢地就没什么感觉了。因为我发现他们做的东西我并不是太感兴趣,虽然说为公司做事是不能讲兴趣的,但是我也有点庆幸我不用去做那些事情。其好处就是我的物理引擎进展比较大,当然,在我写这篇文章的时候又遇到了瓶颈,这个后面再说。

既然公司那么自由,待遇又那么好,那究竟还有什么不好的呢?不好之处就是时间浪费比较严重。因为来回车程都浪费了一个半小时以上,并且即使晚上回来才八点左右,但是实际上我已经筋疲力竭了,所以每天晚上回来不是看片就是聊天,并没有太多的代码或者阅读贡献,非常惭愧…

主线2:物理引擎

其实很久以前就想自己写一个物理引擎以及渲染引擎了,但是THREE.js已经做得很好了,于是我就把目光投向了物理引擎。不过说实话,我并不是想要做出什么特别厉害并且效率非常高的引擎,我只是想学习一下引擎的架构,并且对那些碰撞算法感兴趣而已,最后做得如何还不得而知。

这个项目从我做助教的时候就开始了,大概两周的时间就把简单的牛顿力学实现完了。然后剩下的两个多月的日子都是纠结在碰撞检测上面,那本六百多页的巨著现在也只是进行到三分之一多一点点而已,其实我对效率还是有点担心的,因为实在是非常慢,虽然基本上每周都有进展。但是由于只是一个人在做,遇到困难的问题会有惰性,又没有谁可以讨论,所以比较悲剧。不管如何,既然坚持了那么就我就希望我能继续做下去,无论是做成物理引擎还是做成算法的演示系统,我都会感到很快乐的。

主线3:琐碎项目

除了这两条主线以外,还有一些琐碎的项目,但是这些基本上都是没有头没有尾的,例如上面说到的像素风格贪吃蛇,这个小游戏仅仅写了一个下午,但是我觉得这个东西可以做下去的方向挺多,也挺吸引,但是却没有继续了,或者在未来会继续。另外,本来还希望写一个3D的数据可视化,但是后来发现需要的知识和时间是挺多的,所以为了保证物理引擎的进度,也还是暂停了。还有一些比较小的,这里就不说了。

总的来说,这个暑假还是算充实,但由于编码太多,或许真正学到的没有太多,不过我觉得无论在架构方面还是在数学方面都有了不同程度的提高。接下来努力的方向估计还是继续打好数学的基础了,毕竟那才是研究所需的坚实后盾。