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类中增加一 ...
随机推荐
- File类 递归 获取目录下所有文件文件夹
package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...
- Spring MVC集成Spring Data Reids和Spring Session实现Session共享出现:No bean named 'springSessionRepositoryFilter' available
出现这个问题:No bean named 'springSessionRepositoryFilter' available的的原因: 1.Spring MVC加载了多个配置文件导致的,并不是版本问题 ...
- tcp-time-wait-state
https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux
- BS版代码生成器 简介
自用的代码生成器 核心:JdbcTemplate+freemarker 目前支持sqlserver和mysql 演示: 1.首界面 2.读数据库中的所有表 3.打开某数据库下的所有表.视图.存储过程 ...
- 【kotlin】报错:required:LIst<XXX> found:List<Unit>此类型的问题
出现问题如下: 解决方式如下: 解决思路:上面报出来的错误很明显,就是说想要的是List<XXX>类型但是给的却是List<Unit>类型,给的不是它想要的嘛 关键就是解决问题 ...
- ASP.NET Core 如何记录每次响应的Response信息 - sky 胡萝卜星星 - CSDN博客
原文:ASP.NET Core 如何记录每次响应的Response信息 - sky 胡萝卜星星 - CSDN博客 上一篇文章中我们已经成功的记录了Request部分的信息,现在我们来看下如何记录Res ...
- Android手机输入法按键监听-dispatchKeyEvent
近期在项目开发中遇到一个关于手机输入键盘的坑.特来记录下. 应用场景: 项目中有一个界面是用viewpaper加三个fragment写的,当中viewpaper被我屏蔽了左右滑动,上面有三个点击按钮, ...
- HTML5与Javascript 实现网页弹球游戏
终于效果图: 1. 使用html 5 的canvas 技术和javascript实现弹球游戏 总体流程图: 1.1 html5 canvas技术的使用 首先在html页面中定义画布. <canv ...
- 【前端JS】radio 可单选可点击取消选中
普通情况下 radio 单选框仅仅能实现多选一的效果,可是一旦选择当中一个后,这个单选框就不可点击取消其选中状态了.这样的功能在某些业务环境下并不适用.有时我们既须要单选框的多选一效果.也须要复选框的 ...
- spring中Bean创建
Spring中bean的加载过程: 1.获取配置文件资源 2.对获取的xml资源进行一定的处理检验 3.处理包装资源 4.解析处理包装过后的资源 5.加载提取bean并注册(添加到beanDefini ...