Cocos2D家族的前世今生
openkk 12年前
<p> <strong>Cocos2D,这款用于开发 2D 游戏的开发框架以及由其衍生的 Cocos2D-X跨平台开发框架和众多分</strong><strong>支,正在帮助越来越多的开发者实现高效稳定的游戏开发。《程序员》近日专访了 Cocos2D-iPhone</strong><strong>作者 Ricardo Quesada,请他分享 Cocos2D 家族的发展历程与未来方向。</strong></p> <p> 1973年,Ricardo Quesada 出生于阿根廷。</p> <p> 在 Ricardo 12岁时,他母亲为他购买了第一台电脑,一台 Commodore 64。</p> <p> 刚开始,与其他孩子一样,Ricardo 将自己的精力放在电子游戏上,但在几个月后,他购买了编程方面的书籍,开始学习用 BASIC 语言编写一些简单的游戏。两年后,Ricardo 开始学习汇编语言。</p> <p> 在 Commodore 64上,Ricardo 制作了很多游戏并贡献了一个游戏编辑器,而这台 Commodore 64也陪伴了他长达 6 年之久。此后,Ricardo 选择了 iAPX 286作为他的新伙伴。在他学习了C语言后的几个月,Ricardo 在 DOS 系统下编写了一些游戏 Demo 和一个游戏编辑器。</p> <p> 当然,他并不满足于此,随后 Ricardo 又开始涉足 Linux 系统,并将编辑器移植到 Linux 系统上,将汇编语言改成了C语言。Ricardo 将 Linux 作为主要的操作系统用了很多年,并不断地为开源社区贡献代码。此后他与一些志同道合的朋友一起学习了 C++ 以及 Python 语言,并参加了一些开发大赛。在大学期间,Ricardo 选择了钟爱的计算机科学专业,并不断涉猎计算机安全、算法、游戏架构、OpenGL 等大量书籍。</p> <p> <strong>Cocos2D 的诞生</strong></p> <p> 2005年,Ricardo 和朋友萌生了用 Python 语言 “一星期编写一个游戏”的想法。在 2005~2007年间,他们设计了许多种这样的游戏。值得注意的是,每次在设计一个新的游戏时,其游戏引擎都是重新开发的。</p> <p> 2008年 2 月,他们在阿根廷Córdoba 市附近的 Los Cocos,决定基于以前的开发经验,把技术进行整合,并组建了游戏引擎的原始开发团队。一个月后,第一版的游戏引擎诞生了,根据其诞生地取名为 Los Cocos。一个月后 Los Cocos 引擎发布了0.1版,其名称从 Los Cocos 更名为 Cocos2D。</p> <p> 团队将研究成果在 PyCon 2008和 EuroPython 2008上都做了展示,2008年正值乔布斯公布发展 iPhone 游戏的想法,因此他们决定抓住商机,在 2008 年 6 月宣布跟 iPhone 平台进行接轨,并在当月就公布了用 Objective-C编写的 Cocos2D for iPhone 0.1版,它与 Python 版的 Cocos2D 拥有相同的设计思路。截止到 2008 年 12 月,App Store 上已有超过 40 个用 Cocos2D 引擎开发的游戏。</p> <p> 2009年,团队设计了 Cocos2D 的世界编辑器 Cocos2D-Python,这款所见即所得的编辑器使用起来十分方便。此时,Cocos2D 的各种平台、各种编程语言移植版也开始涌现。</p> <p> ShinyCocos(Ruby bindings)、Cocos2D-Android(Java based)、 cocosNet(Mono based)都诞生了。同时,英国的设计大师 Michael Heald 为 Cocos2D 设计了新的 LOGO,如图 1 所示(此前 Cocos2D 的 LOGO 是一个奔跑的椰子)。</p> <p style="text-align:center;"><img title="图 1 Michael Heald 设计的 Cocos2D 家族 LOGO" alt="Cocos2D家族的前世今生" src="https://simg.open-open.com/show/276ab0e345f940972c0a1b9db9fae938.jpg" width="442" height="314" /></p> <p style="text-align:center;">图 1 Michael Heald 设计的 Cocos2D 家族 LOGO</p> <p> 同时 Cocos2D 社区的开发者作出了最早的周边工具—Zwoptex 和 Particle Designer。Particle Designer 的功能非常强大,开发者曾需要耗费 2 个小时制作的效果,在使用 Particle Designer 后只需 10 分钟便能完成。随后《StickWars》成为第一款在美国区付费榜夺得冠军的 Cocos2D 游戏,这宣告了 Cocos2D 的时代已经到来。</p> <p> 2010年,团队又做出了一个重大的举措:把 Cocos2D-iPhone 接入到 Mac。此举的主要目的是方便世界编辑器的开发,把 Cocos2D 游戏编译到 MAC 上只是一个附带的工作,他们原本的想法是创建一个类似于 2009 年在 PyCamp 设计的 Cocos2D 世界编辑器。</p> <p> <strong>Cocos2D-X开启跨平台开发时代</strong></p> <p> 随后,具有历史意义的 Cocos2D-X诞生了。X代表着 Cross,即交叉。因为 Cocos2D-X为开发者提供了跨平台支持,通过 C++ 语言把游戏逻辑一次编写即可编译到 iOS、Android 以及更多手机平台上运行。同一时期新西兰人 Ryan Williams 移植了基于 HTML5 Canvas 的 Cocos2D-JavaScript,社区也出现了 Texture Packer、Glyph Designer 等丰富的工具和编辑器,以及大量的书籍教程、示例代码、视频培训等供开发者学习和使用。</p> <p style="text-align:center;"><img title="图 2 Cocos2D 大家族" alt="Cocos2D家族的前世今生" src="https://simg.open-open.com/show/b9dca0162e7e178488b10ab882c32da2.jpg" width="600" height="200" /></p> <p style="text-align:center;">图 2 Cocos2D 大家族</p> <p> 2011年,Cocos2D 家族有了新的发展,集成式的编辑器开始涌现,包括 CocoShop、CocosBuilder、Sprite Helper/Level Helper 等。另外出现一种利用 GCC 对 Objective-C语言支持来实现 Cocos2D-iPhone 游戏跨平台编译运行的方式,这种方式需要替换掉 Android NDK 上默认的 GCC 编译器。</p> <p> 而在 2011 年 5 月,Cocos2D 社区发生了一件大事,Zynga 雇佣了 Cocos2D-iPhone 的两位关键作者 Ricardo Quesada 和 Rolando Abarca,两位超级程序员分别从阿根廷和智利迁移到 Zynga 的旧金山总部工作。</p> <p> 2012年初 Cocos2D-X团队再开出两个分支,一个分支是为微软 Windows Phone 7移植的 Cocos2D-XNA,采用C#语言;另一个分支是得到 Google 赞助的 Cocos2D-HTML5,目前 Cocos2D-HTML5还处于早期的开发阶段。</p> <p> 今天的各平台应用商店里,已拥有大量的 Cocos2D 应用,主要涉及游戏、交互型的电子书、图片等类型。根据官方数据保守估计,目前 Cocos2D 的总应用量在 3500 个以上,实际数字应该远远不止。</p> <p> 目前,Cocos2D 也拥有了更加稳定的引擎,包括 Cocos2D-iPhone、Cocos2D-X,以及被社区普遍看好的 Cocos2D-HTML5和 JavaScript bindings for Cocos2D-X。同时也拥有了非常优秀的编辑器(独立编辑器),例如 SpriteSheet Editors、Particle Editors 、Font Editors 、 Tilemap Editors。同时 CocosBuilder 的集成编辑器也处于开发阶段,这款编辑器目前已能够同时支持 Cocos2D-iPhone 和 Cocos2D-X,而 JavaScript 的支持也即将进入实用性阶段。</p> <p> 2012年 3 月,CocosBuilder 的作者 Viktor Lidholt 亦被 Zynga 从瑞典收编到旧金山总部工作,该软件已经由闭源商业产品改为开源,并将成为 Cocos2D 社区的官方编辑器。</p> <p> <strong>追求更高效、稳定的开发</strong></p> <p> 虽然现在 Cocos2D 已有较稳定、便捷的跨平台引擎以及相关的一整套工具,但 Ricardo 坦言,目前这些引擎还并不完美。他们通过与很多游戏开发者,包括 Cocos2D 社区的参与者以及游戏开发商沟通,总结出了大家目前的主要需求。</p> <ul> <li><strong>游戏开发周期更短更快。</strong></li> </ul> <p> 一方面,开发者希望能拥有更好的编辑器,使开发更加便捷,生成数据的速度更快(比编码更快,因为与编码相比,数据很容易跨平台);另一方 面,Ricardo 希望能够为大家提供脚本化的编程语言,例如 JavaScript。即使游戏在遇到性能瓶颈时,开发者能够用 Objetive-C/C++等原生语言进行开发和优化,然后再绑定出 JavaScript 接口给性能不敏感的逻辑部分。在多数情况下,直接用 JavaScript 开发 Cocos2D 游戏能大幅缩短开发周期。</p> <ul> <li><strong> 游戏质量更好。</strong></li> </ul> <p> 游戏不会崩溃、没有漏洞以及更加流畅。Ricardo 表示,他们会致力于为大家提供更好的编辑器,目标也是做到“less code and less bug”,因为编码更少就意味着 Bug 更少。</p> <ul> <li><strong> 需要原型设计工具。</strong></li> </ul> <p> Ricardo 认为利用脚本语言支持+世界编辑器可以让开发者更加迅速地测试自己的想法,如果他们觉得这个想法不好,可以很快地舍弃,同时可以更快地推进他们认为更好的想法。</p> <p> 对于 Cocos2D 的发展,整个团队也有清晰的规划,2012年的主要计划分以下两块。</p> <p> 第一块是目前他们正在研究的,把 JavaScript 与现有的 Cocos2D-X和 Cocos2D-iPhone 绑定。他们的目标是对于 Cocos2D-X、Cocos2D-iPhone、Cocos2D-HTML5都有同样的 JavaScript API。</p> <p style="text-align:center;"><img title="图 3 不同引擎有同样的 JavaScript API" alt="Cocos2D家族的前世今生" src="https://simg.open-open.com/show/63c791e909dcee36ea9b13ad7467adbc.jpg" width="600" height="195" /></p> <p style="text-align:center;">图 3 不同引擎有同样的 JavaScript API</p> <p> 如图 3 所示,上层用的是一致的 JavaScript API,对于不同平台只需用不同的引擎来实现,对于游戏开发者,在同样的 API 之上用 JavaScript 写完游戏逻辑,就可以在 iOS、Android 以及各种浏览器里面运行,而不必关心底下的 Cocos2D 引擎具体是如何实现的。</p> <p> 2012年计划的另一块就是 CocosBuilder 编辑器,他们打算将其做成“所见即所得的编辑器”,可以同时支持 Cocos2D-X、Cocos2D-iPhone 以及 Cocos2D-HTML5。</p> <div id="come_from"> 来自: <a id="link_source2" href="/misc/goto?guid=4958345264572592243" target="_blank">www.programmer.com.cn</a> </div>