您所在的位置:小祥子 » 编程 » 程序猿 » 正文

子龙山人访谈:从游戏开发到Cocos引擎开发

时间:2015-04-23 编辑:佚名 来源:本站整理

子龙山人,资深cocos2d游戏开发工程师和Cocos引擎开发工程师,Emacs狂热分子,精通C++,Git,交叉编译及Linux命令行,对Java、Objective-C, Javascript, Lisp以及.NET等技术也有一定的了解。子龙山人是Cocos2d-iPhone时代的代表人物之一,长期活跃于国内外多家技术论坛,翻译和发表过大量技术文章,为游戏开发者和cocos2d-x学习者提供了值得借鉴的经验。

1.讲讲您个人的经历吧,什么时候开始做游戏开发?后来为什么会转到触控Cocos引擎的开发上来?

我从2008年的时候开始接触到游戏开发的,那时候我还在读大三。当时游戏开发基本上全部是自学,在Windows平台上面利用GDI制作了一些小游戏。后来研一的时候,我开始接触cocos2d(当时cocos2d-x 1.0都还没有发布)。

当时cocos2d最流行的分支是cocos2d-iphone,我那时还在长沙一家小公司做iOS游戏开发实习生,一个月800块。期间我发现cocos2d的资料几乎没有中文的,于是乎我开始翻译国外的优秀cocos2d的教程,并且把它们发布在博客园上面。

后来,Android起来了,cocos2d-x也日渐流行起来了。由于当时cocos2d-x跟cocos2d-iphone的API几乎是1:1的,所以大批的

Cocos2d开发者开始转向cocos2d-x。我也是在这时候认识王哲的,我热衷于做一些对整个社区有意义的事情。于是,我还没有毕业便以cocos2d-x技术推广经理的身份加入cocos2d-x团队了。

2.此前您负责Cocos引擎GUI的设计和维护,目前负责哪一块儿的工作呢?期望达到什么目标?

去年我开始接手Cocos引擎的GUI框架的维护,经过一年多时间的打磨,GUI目前趋于稳定了。但是,它还是存在一些让人诟病的地方。比如ListView不支持Cell复用(建议用TableView取代)

比如TextField不支持光标,RichText功能不完善,PageView不支持竖向滚动等。

我目前主要负责引擎的持续集成(Jenkins), 第三方库自动交叉编译,api文档和cocos白皮书文档工具,GUI框架。

目前问题比较多的是GUI,因为架构不是太好,而且代码相当复杂,今后还需要花大力气去解决一些遗留的问题。当然,这些都要在考虑不破坏兼容性的前提下进行。

4.您从Riqcardo(Cocos 2d-iPhone的作者)身上学到了什么?

Greate or nothing. Riqcardo对于代码质量的追求是非常高的,即便是一个小的脚本工具也会力求代码结构清晰,数据与代码分离,方便扩展和维护。

这种完美主义会让人更深入地思考自己写的代码,当然,这也许并不适合国内某些以产品为导向的团队。

另外,区别一个好的程序员和一个坏的程序员,有一个很重要的标准,就是他们对于“模块化”的追求,以及对于软件复杂度的控制能力。

5.技术人在工作中不止会用到一种语言,你平时喜欢用什么编程语言?你是如何进行多种语言学习的呢?

我工作中主要使用c++,平时喜欢用Lisp, python和shell,我会用Lisp去不断地改进我的Emacs编辑器,同时我也会使用shell和python去制作一些命令行工具,我是一个重度命令行用户。

对于编程语言的学习,我坚持实用主义。我喜欢打磨自己的工具,改善现有的工作方法,让自己的工作和编程变得更加高效。

关于编程语言学习。我一般是先了解一门语言的primitive以及怎么组合这些primitive,然后我会学习该语言提供了哪些抽象方法,是面向对象还是函数式。

最后,如果要深入理解一门语言,还是要在实际的项目和使用之中去不断积累和强化。

另外,我学习新东西喜欢看书和教程(主要是英文教程)。书籍的选择方面,我推荐看pragmatic bookshelf和head first出版的书。

8.谈谈您对国内开源环境的看法,开源的精髓是什么?

国内的开源环境与国外还是存在很区别。国外的程序员在使用开源代码的过程中会不断地给你反馈,并且会愿意给你提交patch.

而国内程序员一般是拿来主义,发现有问题,也很少去提issue, 能够主动给开源项目贡献代码的人也不多。

至于开源的精髓,其实我也不知道。但是,有2点我觉得是非常重要的。

1.开源协议的选择。现在一些大型项目基本上都采用了MIT协议,如果协议选择不当,可能导致项目很难被广泛应用。

2.开源社区的构建。cocos2d-x从诞生之后就非常注重全球社区的建立,现在有很多国外开发者在给cocos2d-x贡献代码。

6.从您自己的经历和经验看,程序员应当如何做技术分享。

程序员做技术分享我觉得主要是两类:

一是对于国外优秀原创内容的本土化和推广,虽然国内程序员的英语水平都还不错,但是优秀的翻译同样能给社区带来巨大的价值。

为什么特意提到推广呢?因为国内技术氛围有时候太浮躁,缺乏好的内容的沉淀,而社交网络和游戏又剥夺了很多人的业余时间。

二是对于自己过去经验的思考和总结。如果感觉可以总结和分享的东西不多,可以尝试通过学习笔记的方式去分享也是不错的。

当然,做技术分享,贵在坚持。

7.您有哪些兴趣和爱好?除去一些现实因素,你最想做什么?

我可以说我的兴趣和爱好就是折腾Emacs么,happy hacking, 哈哈。当然,我还想每周都去游泳。

9.2015年有什么新计划需要实施。

主要是进一步改进和完善现有GUI,继续学习3D,OpenGL和DirectX,还有当然也要学习一下Unity3D和Unreal4。

关键词:游戏
本类热门