又是一年毕业季,马上就要步入"程序猿"行列的"小鲜肉们"是否已经做好准备了呢?今天我们有幸邀请到了一位90后的开发者薛芃,请他来为即将毕业的鲜肉级开发者,来点属于90后的经验谈。
提到薛芃,估计大家都没听说过,但是经常泡cocos论坛的亲们,也许会对"寒江孤叶"这个名字有所耳闻,他可是名副其实的cocos铁杆粉丝。
近日cocos团队有幸邀请到了cocos论坛里的热门90后开发者薛芃,请他来聊聊游戏开发前后的故事。
Cocos:第一次与cocos接触是什么时候呢?为何会选择cocos;
薛:接触cocos引擎是在cocos发布Cocos2d-2.1 beta3-x-2.1.1版本的时候,那时候在学校里几个朋友想一起开发个小游戏参加学校的CodeJam。我们在制作游戏的时候,也在几款引擎间纠结过,但经过横向对比cocos引擎脱颖而出,他开源、上手容易、并且免费的优势让我们果断选择了它。也正是这次选择,让我走进了cocos的殿堂。
当我们开始学习cocos这套引擎的时候,我们发现cocos上手真的很容易,寥寥几行代码,就可以实现非常炫酷的功能效果。3.x开始发布的cocos一站式解决方案,将游戏整体从项目的创建、UI设计、逻辑编写,到最后的项目调试、打包发布一整套流程都变得轻松简单。
Cocos:您为何会成为cocos论坛里的当红人物?
薛: 刚刚开始使用cocos的时候,自己绝对是菜鸟一个,各种无所适从,于是我就泡进了cocos论坛。论坛里的学习、互助的氛围非常好,在学习和开发过程中遇到的一些疑惑,总能在这里通过大家的讨论得到解决的办法。可以说,我是在这些论坛朋友的帮助下成长起来的,cocos论坛,就是我最初的老师。
同时,论坛中经常会有一些大牛分享自己的开发经验和代码,在他们的文章中,总能学到很多知识,增长自己的见解,希望学弟们也养成来论坛学习技术的好习惯,学习知识,帮助他人也是提升能力的一种捷径。
Cocos:跟大家分享下你学习cocos的过程和经验吧!
薛: 有一些朋友总是问我该怎么学cocos引擎,希望我的这些经验谈,可以帮助到大家。
首先我假设你已经掌握C++语言了(没掌握的速度去补课!)学习一个引擎,首先需要对其有一个整体的认识,如果一上来就学Sprite怎么用,Label是什么会有一种盲人摸象的感觉。这个整体的认识包括,如何搭建cocos的开发环境,cocos的工具链,cocos主要功能,Cocos2d-x的源码的目录结构。接下来便是Cocos2d-x的核心类了,例如Node,Scene,Layer,Director,Sprite等,然后通过这些基础类尝试去写一些比较简单的UI界面,下一步则是学习各种Action、Scheduler和事件处理机制,这时候你就已经可以完成一些简单的小游戏了,例如贪食蛇,2048等。(成就感爆棚有木有?)下边你可以通过阅读Cocos2d-x build目录中的Test去掌握其他各式各样的类以及在项目开发中非常常用的UI控件。每个人都会有自己不同的学习方式,找到一个适合自己的方式就是最好的。
在学习过程中,当你遇见不懂的问题的时候,你可以考虑去我上边提到的CocoaChina论坛提问,亦或者去cocos的中文站查看一下教程,或者通过开发者平台提问一下引擎开发团队和CVP团队,善用这些资源会让你学习和使用cocos变得更加容易。
Cocos:目前您有哪些开发实例可以分享呢?这个项目目前是什么状态,在这个过程中,遇到了哪些问题,如何解决的呢?
薛:我现在正在开发一款棋牌项目,不久之后就可以和大家见面了。他是将一些常见的棋牌玩儿法综合到了一起,有常见的德州扑克,斗地主,也有大家耳熟能祥的干瞪眼,捉黑叉,甚至还有"拉大车"。感谢领导对我的信任,给我项目主程的职位,在项目开发过程中,我遇见了不少的问题,例如,lua里边Scheduler不会自动remove,序列帧的内存和IO优化,tableview的cc.TABLECELL_SIZE_FOR_INDEX的返回是高和宽的问题(正常是不都是宽和高么?)等。但是在cocos社区和各位热心版主的帮助下,都完美的解决了。在此感谢那些热心的朋友们!
(使用cocos的开发过程)
Cocos:你是如何这么快就获得主程这个岗位的呢?
薛:进入这家公司后,我一共跟了两个项目。一个卡牌一个RPG,在项目的研发过程中,我很快就熟悉了整体的项目框架,不明白的就去问,对每一个不懂的地方都认真的理解。由于我C++掌握的不错,在开发过程中,对cocos中一些并不熟悉的类和空间,也都够去阅读cocos的源代码,加深对控件的理解。自己去理解和学习的能力非常重要,能够通过看代码来学会一个方法的使用对于这种开源引擎尤为重要。另外,我善于沟通的性格为我和其他程序以及美工和策划都维护了相当好的关系,这也为我后来项目工作的开展带来了很大的益处。两个月前,公司决定开发一款棋牌类游戏,由于棋牌类游戏相对简单,也易于把控,于是领导决定让我来负责这个项目,目前来看,我没有让领导失望!
Cocos:给即将步入"程序猿"行列的学弟的建议:个人觉得,学习或掌握什么重要,心态变化及调整:
薛:万丈高楼,始于基石,坚实的基本功尤为重要。在学习cocos之前,首先应当掌握好C++,推荐一本非常知名的书C++ Primer,它作为深入学习C++是必备的!
我认为想学习C++,可以考虑先去学习C语言,C++是基于C语言开发的一种通用编程语言,掌握C语言对学习C++提供了很大的方便。在学习C语言时候,着重要理解并掌握指针,指针是C/C++语言的灵魂,贯穿整个程序开发的每个角落。掌握了C语言后,C++并不难学了,很多朋友觉得C++很难学,因为他在C语言的基础上提供了非常多的概念,尤其是面向对象的概念。花些时间,真正去理解面向对象,对后序的研发和学习都有莫大的帮助。此时,你对C++就已经有了一定的掌握了。接下来就要去深入的学习C++的各种模板,STL以及其他更加复杂的概念。编程是一门实践科学,在学习过程中,不断的练习是非常非常有必要的,将书中的例子都认证的敲一遍,再稍微修改一些代码运行一下,看看与自己所想的结果是否相同,这样会对代码的掌控右很大的提升。
其次,需要掌握一些基础的数据结构,如堆,栈,队列,二叉树,以及一些常见的搜索、排序算法也是很有必要的。
每一位优秀的学生在学校都是天之骄子,然而越是优秀的学生走入职场越容易受到打击。因为进入公司后,你会发现,自己非但不是佼佼者了。返回而好像什么都不懂一样。这个落差的挫败感很容易打击到你的信心,这时候一定不要气馁,这是每个人都会遇到的过程,你只要坚定信心,继续努力。很快你就能赶上去的。
Cocos:如何看待cocos,觉得cocos的优势是什么呢?
薛:我认为cocos主要优势在于开源、易学、免费以及一个非常完善的中文社区。相比其他主流引擎,cocos更加关注国内市场,中文的教程更加丰富,而且针对开发者的提问以及BUG的反馈也更加及时。cocos支持使用Lua和JS两种脚本语言进行开发,并且提供了一个非常好用IDE,方便游戏的开发和调试,这比传统C++语言研发降低了门槛,提高了开发速度。
(薛芃在"玩转Cocos,乐享Windows--Windows移动游戏开发"活动中)
Cocos:下一步有什么计划,作为90后开发者中的佼佼者,有什么话要对学弟说
薛:我的下一步计划是深入的学习OpenGL的知识,去更透彻理解cocos。同时掌握Cocos-js。Cocos-js是目前最热门的发展方向,JavaScript相比Lua更加成熟,更加容易掌握,前端和后端都能过使用Javascript进行开发,很容易完成交互,方便技术共享。而且Html5和CocosRuntime也是Cocos-js的一个决定性优势。所以下边的项目我们决定采用Cocos-js进行开发。
有一个心得跟大家分享一下:在你学习的过程中,记得写博客,无论是在CSDN还是博客园都可以。当你想不起来之前写的一些功能和方法的实现的时候,如果你把他写到博客里,就可以很容易的翻出来。同时博客还是你技术水平的最有效的证明。尤其是刚毕业大学生在应聘的时候,如果有一个自己的博客,是一个很好的加分项,同时也是像HR展现自己技术能力的一个好方式。
Cocos:最后还有什么相对大家说的话么?
薛芃:希望学弟们在学习过程中,加倍努力,遇见困难不要气馁,多多尝试,勇于提问,早日成为一名高大上的"游戏开发者"!
同时,非常感谢cocos引擎给我这个和大家认识的机会,也很感谢cocos引擎团队对我的支持和帮助。希望更多的朋友能够加入cocos 大家庭,同时希望cocos越做越好,为开发者提供更大的便利。
Cocos:非常感谢薛芃接受我们这次采访,希望你事业蒸腾日上。
薛芃:谢谢!