为什么我的新项目选择了Quick-cocos2d-x
混Quick社区快一周了,还是决定分享一下我选择Quick的原因。 一是向大家介绍一下我自己,同时也希望给大家提供一个参考
首先,向大家介绍一下我自己
姓名,年龄,性别这些都不重要了。
我是一名程序员,在游戏行业混迹了大约5年。做过的项目就不方便在这里提了,以免广告嫌疑。总之大大小小5,6个的样子。
我开发、维护过端游,手游引擎(基本上都是C++)
也开发过网页游戏 AS3的
而实际上,端游我并未出过项目,手游由于公司的原因,是纯C++开发。 上线过几款页游。 因此,总的来说,我没有大量使用LUA的经验。 一切对我来说,都是未知的。
U**3D引擎是我一直在研究并关注的引擎,因为,我有着一个开发3D MMORPG游戏的梦想,就像我钟情的 魔兽世界(这个不算广告吧)。 而新项目的需求,使我不得不放弃这引擎,转而选择cocos2dx
要说U***3D和cocos2dx谁好谁坏,我觉得是不需要比较的,它们都有各自的优缺点。 而对于大部分以C++为生的人来说,不能直接掌控某些东西,那晚上是睡不着觉的。 (PS:我是巨蟹座,不是处女座,与星座无关)
好在我是一个杂食型,cocos2dx早在2.0.x版本就开始跟进,不为别的,就怕掉队。。。。还出过两个视频教程,这个不是为了说自己好NB,只是为了赚点稿费。 3块钱一分钟(这些都不说了,只是向大家证明一下,我对cocos2dx还是有好感,不因为我说我喜欢U***3D就把我要把我当敌人)
当决定是cocos2dx后,我又开始纠结了,用不用LUA。。。。
我一开始的更新方案是,游戏分为APP代码更新和资源更新。。 后来仔细研究了一下当前的一些在线游戏的更新频率,以及那可怕的国内ANDROID平台运营商数目, 觉得太不现实了。
并且,使用C++开发,人员方面也是问题,虽然我确信,可以通过适当提高招聘要求和薪酬,同时加强QA审核来解决。 但即使是C++高手, 也难免不出问题。 于是,最终选择了LUA。 选择LUA不是因为LUA对编写人员的要求低。 微微蓝 说的一句话我十分同意, 通常, LUA写得好的,C++高手居多。(这只是一种意会, 广意的说法就是, 一个能够将脚本语言用娴熟的,那他的语言功力绝对不会低)。 LUA的动态更新方案能够使我在版本发出后快速补救。
好,我想,我真的是一个纠结的人。
我在纠结完U***3D和cocos2dx后
开始纠结用不用LUA
确定要使用LUA后,我又开始纠结,用不用Quick
于是,我花了两天时间到处询问,大家都在用啥,是用cocos2dx导出的LUA接口自己DIY,还是使用QUICK来做。
很多人回答我说,他们是自己撸,原因很简单,他们用的是先前的那套,他们那套是从cocos2dx 2.0.x版本就发展过来的,当时quick还没有正式版
左思右想后,加入了Quick群, 被大家喷了个遍。 确实, 你在QUICK群问QUICK有啥坑,这不是找抽么。 最让我明白的一句话是:纠结,害怕,源于经验不足
哇嚓,我当时十分懊恼,冷静了两秒后,觉得他们说得对。 微微蓝给我的评价是:你用了就不想再用其它的了。 在经微微蓝科普下。 我决定自己试试
于是,我去GIT上下载了MASTER的ZIP版本, 因为我项目要年底才出,于是,我对QUICK版本的定位就是3.2版本。 我踩坑,自然就要用新版来踩
下载完后解压,然后配置好环境变量,打开player,运行例子。 哇嚓,这流程,不就是FLASH么。。。
我试着改了一下示例中的代码,按F5刷新,哇嚓,它变了,它真的变了。
运行完示例后,我决定新建一个项目试试。 来到Bin目录下,打开CMD,执行 create_project.bat -p com.ooxx.mygame 回车
就发现Bin项目下出现了mygame文件夹,通过player可以发现它是一个hello world
新建项目如此的方便,我没话说了,quick保持了和cocos2dx同样的创建新项目的方式。这点让人感到很舒服。
接下来,我测试版本发布,由于IOS要进虚拟机,有点麻烦,我就测试了ANDROID。
对于ANDROID来说,2.2.3有几个问题要注意
配置ANDROID NDK,且要新版本,才能使用build_native.bat
新建的项目,不会把org.lib.cocos2dx.****.java这堆东西拷过来
AndroidMainfest.xml里面minTargetVersion要改为10
Java Build Path里面要删掉Dependencies等问题
所以,我按我发布cocos2dx 2.2.3的操作,成功打了一个APK到我的项目上。
这一切,都满足我的期望。
接下来,我看了framework的代码和本地文档, 其中许多功能让我感到满意,终于不用我自己DIY了。 比我想象中的更直观, 由于我对LUA的陌生,如果我自己来撸,不知何年何月才能达到这样的水平。
基本东西调查完了,我就要来解决我最关注的两个问题
更新和加密
更新:找到了七月的贴子,得到了完整的思路。 这个思路和我之前搞端游的思路有点出入, 不过,和页游非常象。 唯一和页游不一样的,就是要自己处理一下文件存放问题。 最近几天,坛子里讨论得较多的也是这个话题。 经过几天的摸索,基本上确定了更新流程,也写了代码测试。这又超了我的想象。
加密:LUA是明文的,让别人下载去了,不是很容易就能猜到前后端通信规则,以及哪些东西是在前端计算的么。 这样外挂还不飞天了。 不过,QUICK处理了这个事情,你可以简单的通过LUAJIT来加密,如果还不放心(因为字 符串不会被JIT掉),可以使用XXXTEA进行加密 。这些QUICK都帮你处理好了,你只需要设置好你的密钥就可以了。
一切,都让我觉得很自然,仅仅一周的时间,我将更新和加密问题弄得很明白,同时也熟悉了quick的整个机制。
同时,quick与cocos2dx一样是开源的,也就是说,如果你真觉得有什么不爽,你自己改了就可以了。 quick的代码在你熟悉以后,其实就是你自己的了。
希望上面的文章,能够对有选择犹豫症的朋友有帮助。
PS:新版的QUICK的API越来越像FLASH的包组织结构,相信对FLASH开发者来说,是很容易过渡的。 而对FLASH不熟的朋友也不要纠结,quick这样选择,并不是为了亲近flash开发者,而是flash那种API和思路,很容易上手。
感谢阅读~
为什么我的新项目选择了Quick-cocos2d-x的更多相关文章
- cocos基础教程(5)数据结构介绍之cocos2d::Value
1.概述 cocos2d::Valie 是一个包含了很多原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外加 std::vec ...
- cocos2d的ARC开启
ARC,官方解释是Automatic Reference Counting,是Apple公司从iOS5开始为开发者新添加的一个功能. 相信很多写移动开发,可能不只是移动开发的人都深有体会,创建一个对象 ...
- 如何选择前端框架:ANGULAR VS EMBER VS REACT
最近一段时间是令前端工程师们非常兴奋的时期,因为三大Web框架陆续发布新版本,让我们见识到了更强大的Web框架.Ember2.0在2个月之前已经发布,从1.0升级到2.0非常简单.几周之前React发 ...
- iOS开发Xcode7真机调试教程
从Xcode7开始,Xcode 不需要$99/$299升级开发者直接可以进行真机调试 调试步骤 1.假设已经你已经有了苹果账号,下载并安装好了Xcode7 2. 打开Xcode-> Prefer ...
- SecureCRT设置
SecureCRT设置 文章来源:http://blog.csdn.net/dongqinliuzi/article/details/39890569 本文主要介绍SecureCRT的使用方法和技巧. ...
- 【转】iOS开发Xcode7真机调试教程
原文网址:https://www.skyfox.org/ios-xcode7-debug-device.html 从Xcode7开始,Xcode 不需要$99/$299升级开发者直接可以进行真机调试 ...
- 转-SecureCRT设置
原帖地址:http://www.2cto.com/os/201410/341569.html 一.基本设置 1.修改设置 为了SecureCRT用起来更方便,需要做一些设置,需要修改的有如下几处: 1 ...
- securecrt简介
SecureCRT是最常用的终端仿真程序,简单的说就是Windows下登录UNIX或Liunx服务器主机的软件,本文主要介绍SecureCRT的使用方法和技巧 VanDyke CRT 和 VanDyk ...
- 相遇Qt5
使用Qt5.x版本中的不同方面来开发应用程序,着重于新的Qt Quick的技术,提供了编写C++后端的必要内容,并扩展了Qt Quick. 本章提供了关于Qt5高层次的概述.它对开发者有效的展 ...
随机推荐
- SVN系统的几个术语
SVN系统的几个术语 User:用户,可以远程连接到SVN服务器的权限实体. User Group:用户组,用于管理一组权限相同的用户. Repository:版本库,在服务器端保存着的项目中所有的文 ...
- mysql5.6.34-debug Source distribution编译的几个错误
raspberrypi下编译mysql5.6 debug版源码. 1. 启动错误 和mysqld相关的文件及文件夹权限必须设置为mysql用户可读可写可执行!谨记! 2. gdb错误 root@: g ...
- 将你的代码上传 Bintray 仓库(转)
转自:http://www.cnblogs.com/cpacm/p/5548241.html 在 Android Studio 中,我们通常可以利用 gradle 来导入别人写的第三方库,通常可以简单 ...
- 如何使用NodeJs来监听文件变化
1.前言 在我们调试修改代码的时候,每修改一次代码,哪怕只是很小的修改,我们都需要手动重新build文件,然后再运行代码,看修改的效果,这样的效率特别低,对于开发者来说简直不能忍. 2.构建自动编译工 ...
- Python生成器的经典程序
import random def get_data(): """返回0到9之间的3个随机数""" return random.sample ...
- Hive使用技巧
hive默认查询不会显示列名, 当一个表字段比较多的时候,往往看不出值与列之间的对应关系,对日常查错及定位问题带来不便,像下面这样. hive> >select * from exampl ...
- 使用小技巧,让你高效使用Eclipse
1.自动完成--Eclipse有一个自动完成代码功能,快捷键是ctrl + space.当点击时就会弹出一个对话框,上面有与前后文相关的一些建议.只要有一个可能性,Eclipse就会替你完成. 2.快 ...
- P1905生活大爆炸版 石头剪刀布
P1905生活大爆炸版 石头剪刀布 描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第 8 集中出现了一种石头 ...
- Eclipse中支持js提示
使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Act ...
- css中关于position属性的探究(原创)
关于position属性的设置,头脑中一直觉得不是很清楚,所以借助这次机会单独自己测试了一下,记作学习笔记. 首先,css的position属性包含下面四种设置情况: static:默认属性.指定 ...