Cocos2dx+lua合适还是Cocos2dx+js合适?
问题:
开发cocos2dx手游
Cocos2dx+lua合适还是Cocos2dx+js合适
百牛信息技术bainiu.ltd整理发布于博客园
回答:
链接:https://www.zhihu.com/question/21130385/answer/18485625
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2014.02更新:请放心选择 Lua 吧。触控已经收购了 quick-cocos2d-x,2014年肯定会大力强化 cocos2d-x 的 Lua 支持。
----
我个人肯定是推荐 Lua 的,原因如下:
1. 运行效率:Lua 的性能在各种测试里都比 JavaScript 快不少。而移动设备上存在不支持 JIT 的情况(未越狱的 iOS 设备),Lua 对比 JavaScript 的性能优势就更明显。
2. 安全性:现在 cocos2d-x 使用 LuaJIT 来执行 Lua,所以可以把 Lua 代码编译为字节码再打包到游戏里。由于 LuaJIT 的字节码是高度优化过的,所以目前还没有反编译工具。而 JS 虽然也可以用字节码,但从目前的情况看还达不到 LuaJIT 的安全性。
3. 与 C/C++ 的交互:Lua 原本就是作为嵌入式语言来设计的,所以天然和 C/C++ 很容易交互。JS 这方面是个劣势。
4. 与 Java/Objective-C 的交互:不管是 quick-cocos2d-x 里提供的 luaoc/luaj 模块,还是 wax, luajava 这些开源项目,都让我们可以绕过 C/C++ 层实现 Lua 和 Java/Objc 的交互。这个优势在游戏发行阶段,集成各种第三方 SDK 时绝对会节约巨量时间!!!
----------------------------------------
当然,cocos2d-x 目前明显是在主推 JS 的解决方案,因为 JS 可以跨越移动设备、桌面的界限,实现一套程序跑任意平台。不过我个人认为以当前 HTML5 的发展情况,对于要强调体验的游戏来说,HTML5 还要一些时间。
从目前的市场情况来说,Lua 明显是更理性的选择:成熟、安全性高、众多大作采用。
----------------------------------------
前面提到 JS 更容易面向对象,我想可能是因为大家对 Lua 还不够了解造成的错觉。实际上,Lua 和 JS 实现面向对象的机制几乎是一样的。JS 基于 prototype,Lua 基于 metatable,在我看来仅仅是名字不同而已。
----------------------------------------
最后,不得不向大家推荐 quick-cocos2d-x 这个基于 cocos2d-x + Lua 的扩展版。quick 在 cocos2d-x + Lua 的基础上提供了诸多简化开发的扩展功能,以及开发框架。
quick-cocos2d-x 中文站: http://cn.quick-x.com/
Cocos2dx+lua合适还是Cocos2dx+js合适?的更多相关文章
- 第一个Cocos2d-x Lua游戏
我们的编写的第一个Cocos2d-x Lua程序,命名为HelloLua,从该工程开始学习其它的内容.创建工程我们创建Cocos2d-x Lua工程可以通过Cocos2d-x提供的命令工具cocos实 ...
- 【转】cocos2d-x Lua
Call custom c++ from Lua cocos2d-x lua binds c++ class, class functions ,enum and some global functi ...
- Cocos2d-x Lua 阅读Csv文件,使用数据更方便
在我的书或出售之前,我的源代码,有Csvshadow文件. 也许这是偏见.我与工作将是最长的轮廓Csv,所以,我会帮助不大喜欢它的游戏. Csv文件,非常格式easy,也就是说,一个数据线,字段之间用 ...
- 【cocos2d-x + Lua(1) 绑定Lua并使用tolua++】
为什么要使用Lua进行游戏开发?转载请注明出处http://www.cnblogs.com/zisou/p/cocos2dx-lua1.html 上面一个问题我觉得在我们使用Lua之前需要深入思考的, ...
- Cocos2d-x Lua Node与Node层级架构
Cocos2d-x Lua采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结 ...
- cocos2d-x lua绑定解析
花了几天时间看了下cocos2d-x lua绑定那块,总算是基本搞明白了,下面分三部分解析lua绑定: 一.lua绑定主要用到的底层函数 lua绑定其本质就是有一个公用的lua_Stack来进行C和L ...
- cocos2d-x + Lua接入iOS原生SDK的实现方案[转]
相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我 ...
- Cocos2dx lua 3D实例代码
用cocoside 创建一个项目 cocos2dx lua 项目即可 ,然后替换掉gamescene 就可以,具体效果还有函数的参数,相信大家一看就明白.简单说下ide 创建的 cocos lua 项 ...
- cocos2dx lua 绑定之二:手动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一 ...
随机推荐
- 洛谷—— P3375 【模板】KMP字符串匹配
P3375 [模板]KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next. (如 ...
- Kafka windows下的安装
1. 安装JDK 1.1 安装文件:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK1.2 安装完成后需 ...
- java队列--queue详细分析
---恢复内容开始--- Queue:基本上一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口,LinkedList实现了Li ...
- python的websocket实现Tornado
1.使用flask的扩展: pip install flask-socketio 2.Tornado提供较好的ws(websocket)支持 参考:1.http://www.jianshu.com/p ...
- docker 搭建linux samba
https://hub.docker.com/r/jenserat/samba-publicshare/ 需要共享目录 只需直接 挂载容器映射即可
- 【试水CAS-4.0.3】第06节_CAS服务端配置HTTPS
完整版见https://jadyer.github.io/2012/05/30/tomcat-https/ /** * @see CAS服务端配置HTTPS * @see -------------- ...
- Android 特别大的Activity和Fragment的生命周期图
这么 这么大的图.不做太多解释,哈哈,真的是棒棒的. 代码測试下载:http://download.csdn.net/detail/pcaxb/8906085
- String 字符串基本使用
目录 一.JavaDoc解释 二.基础属性和构造函数 三.基本方法说明 一.JavaDoc解释 String类表示字符串,所有Java程序中的字符串像是"abc"都是此类的实例,字 ...
- Creo二次开发--内存清理函数
我们在处理模型文件时,总会遇到内存环境的清除问题.一个干净的Creo工作环境.是保证工作能顺利完毕的保障. ProMdlEraseNotDisplayed()函数提供了清除未显示模型的功能. 当须要循 ...
- 多媒体开发之---h264 取流解码分析
1. nalu_unit_type = *((unsigned char *)pEmptyBuf->bufVirtAddr+4); nalu_unit_type = nalu_unit_type ...