cocos2d 游戏引擎发展历史_cocos最早起源-程序员宅基地

技术标签: cocos2d  

这个帖子纯属为了梳理一下近日以来凌乱是思维,打算搞cocos很久了,可是由于工作原因一直都是自己摸索,断断续续,今天难得有空,把cocos发展主线梳理一下,有了脉络,学习起来就不会乱。


cocos由来(百度百科)

Cocos2D的诞生


2005年,Ricardo和朋友萌生了用Python语言 “一星期编写一个游戏”的想法。在2005~2007年间,他们设计了许多种这样的游戏。值得注意的是,每次在设计一个新的游戏时,其游戏引擎都是重新开发的。


2008年2月,他们在阿根廷Córdoba市附近的Los Cocos,决定基于以前的开发经验,把技术进行整合,并组建了游戏引擎的原始开发团队。一个月后,第一版的游戏引擎诞生了,根据其诞生地取名为Los Cocos。一个月后Los Cocos引擎发布了0.1版,其名称从Los Cocos更名为Cocos2D。


团队将研究成果在PyCon 2008和EuroPython 2008上都做了展示,2008年正值乔布斯公布发展iPhone游戏的想法,因此他们决定抓住商机,

在2008年6月宣布跟iPhone平台进行接轨,并在当月就公布了用Objective-C编写的Cocos2D for iPhone 0.1版,它与Python版的Cocos2D拥有相同的设计思路。

截止到2008年12月,App Store上已有超过40个用Cocos2D引擎开发的游戏。


2009年,团队设计了Cocos2D的世界编辑器Cocos2D-Python,这款所见即所得的编辑器使用起来十分方便。此时,Cocos2D的各种平台、各种编程语言移植版也开始涌现。
ShinyCocos(Ruby bindings)、Cocos2D-Android(Java based)、cocosNet(Mono based)都诞生了。同时,英国的设计大师Michael Heald为Cocos2D设计了新的LOGO,如图1所示(此前Cocos2D的LOGO是一个奔跑的椰子)。


2011年7月,开始移植使用c++编写的cocos2d-x版本,cocos2d-x完全采用cocos2d for ihpone 的objective-c命名风格,开发者可以很容易的将cocos2d for ihpone 的游戏移植到

cocos2d-x版本上进行开发,由于cocos2d-x使用c++对开发人员要求过高,于是开始使用lua脚本语言开发游戏逻辑,随后cocos2d-x 2.0版本诞生,将openGLES1.0版本 提升到了2.0版本,大大提升了引擎的渲染性能,且同时支持cocos builder编辑器 ,同时支持JavaScript,cocos2d一次编写,多平台运行的时代从此到来,由于使用objective-c编程风格,对使用c++的程序员来说实在是太别扭了,于是cocos2d-x 3.0版本抛弃了objective-c的风格,并且支持了c++11特性。


之后为了降低开发门槛,引入了lua, js 脚本语言 提升开发效率,并实现动态更新


2012年左右,cocos2d-x团队 开始强力推广javascript 的解决方案  ,所以当时的lua基本没有太大的变动,这使得当初使用lua开发商的处境比较尴尬,所以就有人站出来开发了quick-cocos2d-x  , quick以增强实用性,降低学习曲线为目的对cocos2d-x  lua 实现了进一步封装,可以说是一个超级,就好比C和C++的关系


下面简单举个例子吧,还是显示经典的HelloWorldScene中那张背景图片,如果我们在quick中使用原生lua的写法,就和使用C++写一样


function MainScene:ctor()
  self.size = CCDirector:sharedDirector():getWinSize()

  local sp = CCSprite:create("HelloWorld.png")
  sp:setPosition(ccp(self.size.width/2, self.size.height/2))
  self:addChild(sp)

end


需要这样些语句才能完成,不过用quick提供的API,那么就简单太多了,真的感动的要哭

function MainScene:ctor()
    local sp = display.newSprite("HelloWorld.png", display.cx, display.cy)
    self:addChild(sp)
end

于是就出现了2个lua版本的cocos2d,一个是官方版的, 一个是quick团队开发的quick-cocos2dx-lua

后来cocos官方收购了quick团队,并命名为cocos2d-lua


使用js的cocos2d版本有2个,一个是执行在移动端仅仅作为替代c++编写逻辑的j脚本,用javascript 的binding技术来实现

另外一个是运行在web浏览器中cocos2d-html5程序,本来他们之前是可以完全独立的,由于都是使用js开发,cocos官方又将他们进行了组合,推出了cocos2d-js  可以一次开发多平台,而且还能运行在网页上


大致可以简单理解  最原始版本是cocos2d  cocos2d-iphone   后面推出了 cocos2d-x   然后诞生了cocos2d-lua  和 cocos2d-js


至于最新版本的cocos 将quick进行了整合,而且不断完善更新,希望cocos可以越走越远。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gzylongxingtianxia/article/details/49885819

智能推荐

php-读取excel文件_php 读取excel-程序员宅基地

文章浏览阅读373次。php-读取excel文件_php 读取excel

(2022,FreGAN)利用频率分量在有限数据下训练 GAN-程序员宅基地

文章浏览阅读522次,点赞4次,收藏7次。GAN 在拟合数据分布时,往往倾向于拟合低频信息而忽略高频信息。本文提出了一种称为 FreGAN 的频率感知模型,以提高 G 和 D 的频率感知能力。通过鼓励 G 生成更合理高频信号,从而提高有限数据下的合成性能。_fregan

pyc文件逆向_攻防世界python-trade_逆向之旅010_逆向 pyc base64-程序员宅基地

文章浏览阅读1.5k次,点赞3次,收藏8次。使用工具easy python Decompiler 将pyc文件反编译为py文件。我把这个工具放在百度云里了,按需自取,链接(永久): 链接:https://pan.baidu.com/s/14iQRcHyAEpmmycTQZLbwlQ 提取码:3naj_逆向 pyc base64

Mac Node.JS本地卸载删除解决方案_mac 卸载本地nodejs-程序员宅基地

文章浏览阅读1k次。前言 卸载Node.JS操作步骤,按住 command + 空格 键 搜索 终端 依次复制粘贴一下命令sudo npm uninstall npm -gsudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*sudo rm -rf /usr/local/include/node /Users/$USER/.npmsudo rm /usr/local/bi..._mac 卸载本地nodejs

Java虚拟机学习笔记整理_虚拟机的笔记-程序员宅基地

文章浏览阅读645次,点赞2次,收藏2次。一. JVM规范1.1 位运算1.1.1 整型int原码:第一位符号位,0为正,1为负 反码:符号位不动,原码取反 补码 正数补码:和源码相同 负数补码:符号位不动,反码加1 example-6原码: 10000110反码: 11111001补码: 11111010为何使用补码 可以无歧义地表示0 不使用补码,将0看为正数:0000 0000 ..._虚拟机的笔记

蓝凌EIS智慧协同平台saveImg接口存在任意文件上传漏洞_蓝凌eis智慧协同平台文件上传漏洞-程序员宅基地

文章浏览阅读979次。蓝凌智慧协同平台eis集合了非常丰富的模块,满足组织企业在知识、协同、项目管理系统建设等需求。_蓝凌eis智慧协同平台文件上传漏洞

随便推点

enumerate()用法_enumerate(a)-程序员宅基地

文章浏览阅读221次。for index , item in enumerate (a , x):for index , item in enumerate (a):这里有n,v俩参数,n先不管,v为a中的元素,比较简单。a=[[8,2],[2,3],[5,4]]print(a)for n , v in enumerate(a): v += v print(v) #print(n)输出[[8, 2], [2, 3], [5, 4]][8, 2, 8, 2][2, 3, 2, 3]_enumerate(a)

计算几何讲义——计算几何中的欧拉定理-程序员宅基地

文章浏览阅读188次。在处理计算几何的问题中,有时候我们会将其看成图论中的graph图,结合我们在图论中学习过的欧拉定理,我们可以通过图形的节点数(v)和边数(e)得到不是那么好求的面数f。 平面图中的欧拉定理: 定理:设G为任意的连通的平面图,则v-e+f=2,v是G的顶点数,e是G的边数,f是G的面数。证明:其实有点类似几何学中的欧拉公式的证明方法,这里采用归纳证明的方法。对m..._怎么证明平面图欧拉定理

c语言中各种括号的作用,C语言中各种类型指针的特性与用法介绍-程序员宅基地

文章浏览阅读750次。C语言中各种类型指针的特性与用法介绍本文主要介绍了C语言中各种类型指针的特性与用法,有需要的朋友可以参考一下!想了解更多相关信息请持续关注我们应届毕业生考试网!指针为什么要区分类型:在同一种编译器环境下,一个指针变量所占用的内存空间是固定的。比如,在16位编译器环境 下,任何一个指针变量都只占用8个字节,并不会随所指向变量的类型而改变。虽然所有的指针都只占8个字节,但不同类型的变量却占不同的字节数..._c语言带括号指针

缅甸文字库 缅甸语字库 缅甸字库算法_0x103c-程序员宅基地

文章浏览阅读9.5k次。字库交流 QQ:2229691219 缅甸语比较特殊、缅甸语有官方和民间之分,二者不同的是编码机制不同,因此这2种缅甸语的字串翻译、处理引擎、字库都是不同的。我们这里只讨论官方语言。 缅文、泰文等婆罗米系文字大多是元音附标文字,一般辅音字母自带默认元音可以发音,真正拼写词句时元音像标点符号一样附标在辅音上下左右的相应位置。由于每个元音位于辅音的具体位置是有自己的规则的,当只书写..._0x103c

Python+django+vue校园二手闲置物品拍卖系统pycharm毕业设计项目推荐_基于python+django+vue实现的校园二手交易平台-程序员宅基地

文章浏览阅读200次。在校园,随着学生数量的增多,存在许多生活和学习物品,许多学习用品经过一学期学习之后往往被闲置,一些出于一时喜欢而购买的物品使用机会少而被闲置,还有一些物品以低廉的价格卖给资源回收站,造成巨大的资源浪费。校园闲置物品拍卖系统使用python技术,MySQL数据库进行开发,系统后台使用django框架进行开发,具有低耦合、高内聚的特点,其中校园用户通过人脸识别的方法增加系统安全性,在闲置物品推荐中,使用协同过滤算法进行商品推荐。系统的开发,帮助高校有效的对闲置物品进行管理,提高了闲置物品销售的效率。_基于python+django+vue实现的校园二手交易平台

【推荐系统论文精读系列】(十)--Wide&Deep Learning for Recommender Systems_引用《wide & deep learning for recommender systems》-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏3次。文章目录Wide & Deep Learning for Recommender Systems一、摘要二、介绍三、推荐系统综述四、Wide&Deep学习4.1 Wide部分4.2 Deep部分4.3 联合训练 Wide&Deep ModelPreferenceWide & Deep Learning for Recommender Systems一、摘要具有非线性特征转化能力的广义线性模型被广泛用于大规模的分类和回归问题,对于那些输入数据是极度稀疏的情况下。通过使用交_引用《wide & deep learning for recommender systems》

推荐文章

热门文章

相关标签