问题:

开发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合适?的更多相关文章

  1. 第一个Cocos2d-x Lua游戏

    我们的编写的第一个Cocos2d-x Lua程序,命名为HelloLua,从该工程开始学习其它的内容.创建工程我们创建Cocos2d-x Lua工程可以通过Cocos2d-x提供的命令工具cocos实 ...

  2. 【转】cocos2d-x Lua

    Call custom c++ from Lua cocos2d-x lua binds c++ class, class functions ,enum and some global functi ...

  3. Cocos2d-x Lua 阅读Csv文件,使用数据更方便

    在我的书或出售之前,我的源代码,有Csvshadow文件. 也许这是偏见.我与工作将是最长的轮廓Csv,所以,我会帮助不大喜欢它的游戏. Csv文件,非常格式easy,也就是说,一个数据线,字段之间用 ...

  4. 【cocos2d-x + Lua(1) 绑定Lua并使用tolua++】

    为什么要使用Lua进行游戏开发?转载请注明出处http://www.cnblogs.com/zisou/p/cocos2dx-lua1.html 上面一个问题我觉得在我们使用Lua之前需要深入思考的, ...

  5. Cocos2d-x Lua Node与Node层级架构

    Cocos2d-x Lua采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结 ...

  6. cocos2d-x lua绑定解析

    花了几天时间看了下cocos2d-x lua绑定那块,总算是基本搞明白了,下面分三部分解析lua绑定: 一.lua绑定主要用到的底层函数 lua绑定其本质就是有一个公用的lua_Stack来进行C和L ...

  7. cocos2d-x + Lua接入iOS原生SDK的实现方案[转]

    相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我 ...

  8. Cocos2dx lua 3D实例代码

    用cocoside 创建一个项目 cocos2dx lua 项目即可 ,然后替换掉gamescene 就可以,具体效果还有函数的参数,相信大家一看就明白.简单说下ide 创建的 cocos lua 项 ...

  9. cocos2dx lua 绑定之二:手动绑定自定义类中的函数

    cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一 ...

随机推荐

  1. c字符和字符数组/字符串

    一维和二维的都可以:一维的情况如下:1,char string0[10];2,char string1[]="prison break";3,char string2[100]=& ...

  2. java文本文件加密解密类

    原文:http://www.open-open.com/code/view/1420031154765 import java.awt.*; import java.awt.event.*; impo ...

  3. Go --- GC优化经验

    不想看长篇大论的,这里先给个结论,go的gc还不完善但也不算不靠谱,关键看怎么用,尽量不要创建大量对象,也尽量不要频繁创建对象,这个道理其实在所有带gc的编程语言也都通用. 想知道如何提前预防和解决问 ...

  4. POJ 1260 Pearls (动规)

    Pearls Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7210 Accepted: 3543 Description In ...

  5. python异常捕获异常堆栈输出

    python异常捕获异常堆栈输出 学习了:https://blog.csdn.net/chris_grass/article/details/77927902 import traceback def ...

  6. DOS环境进入及基本命令

    DOS:磁盘操作系统(Disk Operating System) Window环境下如何进入DOS: 1. 以win10为例,按ctrl+R打开运行窗口,在输入框输入"CMD"并 ...

  7. 消息列队 分布式事务解办法 celery flower使用总结

    前言 项目中有场景 需要用到 分布式事务业务,经过查下资料把学习相关笔记做记录方便他人或者自己后面查看. 场景 在网站A业务中有个操作 是 要在网站B中新建一台服务器跑业务.A中执行B中的接口创建服务 ...

  8. 利用卷积神经网络(CNN)构造社区问答系统

    /* 版权声明:能够随意转载,转载时请标明文章原始出处和作者信息 .*/                                                     author: 张俊林 ...

  9. iOS文件的管理(添加,删除,拷贝,移动)

    #import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super vie ...

  10. Eclipse中Easy Shell插件配置PowerCmd

    1.了解EasyShell.PowerCMD和基本命令 http://sourceforge.net/projects/pluginbox/ http://www.powercmd.com/ 了解基本 ...