谈一谈个人在接下来几年的游戏技术方向
周四 08 一月 2015我对目前火爆的手游和之前火爆的端游、页游通通不感兴趣。除非项目非常nice,或者团队的人非常有趣,否则我不太会积极地回到游戏行业中。理想的状态是,我是一群酷爱游戏且专业的人的之一,做着一款看着就好玩的电视、电脑游戏。虽然Xbox ONE已经来中国了,PS4也要上市了,但是中国电视游戏的春天恐怕还要等上几年。所以,我考虑在这几年积攒一下技术。
所谓的积攒技术,就是做一个2D引擎,其实也就是造轮子。如果是即刻投身商业开发,那么造轮子,一定是件可耻的事情。Unity或者cocos2d-x已经足够好了。而这对于我来说,只是个人私事。理由不具体直接解释了,反正我就是爱折腾。
我个人很喜欢Unity的快捷和强大,但也感到如果Unity和cocos2d-x一样开源,很多事会好办很多。而对于后者,我不太喜欢它的设计。cocos2d吸收了很多Cocoa的特点,但对于一个游戏引擎来说,有些地方还是简洁点好。
对于一个2D引擎来说,图形底层并不复杂,只要把Sprite做出来,这个引擎就能用来做游戏了。一个成熟的2D引擎,必不可少要有一套动画系统。以前的2D游戏多采用序列帧,现在基本上是实时演算的关键帧插值动画。动画编辑器的开发量是不小的,我考虑使用Flash作为动画编辑器,用JSFL做数据导出。Flash可做的事情非常多,比如还可以作为UI布局器使用,甚至粒子特效编辑器也省了。使用通用编辑器来取代内部编辑器,是节省成本的一个好方法。
我个人是很喜欢Unity的,尤其是它的Editor,和Component系统。UnityEditor级别的开发,不是几个人能完成的,所以就不是我要借鉴的对象。我要学习的是Component系统。游戏是OO设计最经典的应用场景之一(另一个是GUI),Component系统是我见过的最好理解的游戏OOD。好理解意味着好用,开发快捷方便。
我考虑在这个引擎中深度应用Lua语言,而不是像我以前的项目那样,只是把Lua作为写回调功能的工具。我偏向C/C++只为Lua提供回调功能,单纯去解决真正的性能问题。引擎应用程序员是面向Lua工作的,C/C++只需要做好核心的即可。
以上说的是2D引擎技术,此外,我还对服务端技术感兴趣,这是我没有真正做过的,需要去常识的。我曾经了解过一段时间node.js,并且网易的一群人还弄出了一个Pomelo,但我不考虑node。JavaScript的爱好者很喜欢摆弄异步回调,node上也充满了这种风格的东西。但异步毕竟是个烧脑的东西,我更喜欢简单直接的。我对go和云风的skynet很感兴趣,尤其后者是我喜欢的“C+Lua”。