当前位置: 首页 > news >正文

分析cocos2d-x中的CrystalCraze示例游戏

cocos2d-x自带了不少示例,以及几个比较简单的游戏,不过这些游戏都是用javascript binding(SpiderMonkey)做的,所以我猜测javascript binding可能是cocos2d-x开发游戏的主流模式,优点是:

  • 游戏逻辑用javascript,开发效率高,无需编译直接跑
  • 因为使用了javascript binding,实际跑的还是C++代码,性能不容小觑
  • javascript binding使用的api与cocos2d-html5一致,以后向cocos2d-html5移植转换成纯网页游戏的成本接近于0

CrystalCraze用的系统自然也是js binding。

 

一、代码目录结构

cocos2d-x
    samples
        Javascript
            *1 CrystalCraze
                Classes
                proj.android
                proj.ios
                proj.win32
            Shared
                games
                    *2 CrystalCraze
                        CrystalCraze.ccbproj
                        Images
                        Platform
                        Published-Android
                        Published-iOS
                        Resources
    scripting
        javascript
            bindings
                *3 js
                    jsb.js
                    jsb_chipmunk.js
                    jsb_chipmunk_constants.js
                    jsb_cocos2d.js
                    jsb_cocos2d_constants.js
                    jsb_cocos2d_extension.js
                    jsb_cocosbuilder.js
                    jsb_debugger.js
                    jsb_opengl.js
                    jsb_opengl_constants.js
                    jsb_sys.js
                    main.debug.js

主要是打*的三个目录:

  1. 游戏各平台的工程文件,以及C++启动代码(用来初始化引擎,以及启动js脚本引擎)
  2. 游戏资源,包括图片,声音,场景文件(ccb,)以及包含游戏主逻辑的javascript文件
  3. javascript binding的接口 - 运行时拷贝到同一目录下去。

二、主要代码文件及流程

  1. 首先build的时候,会把资源、jsbinding都拷贝到游戏目标目录下。
  2. 在AppDelegate.cpp中启动引擎,设置好读取资源的文件夹,然后启动js binding引擎,跑main.js
  3. main.js读取MainScene.ccb场景,运行MainScene.js进入主场景
  4. 选取Play之后,读取GameScene.ccb场景,并运行GameScene.js进行游戏。

MainScene和GameScene是两个游戏画面,其逻辑分别由MainScene.js和GameScene.js控制,里面包含游戏处理逻辑,和事件响应函数。

三、一些文件类型

  • .ccbproj: CocosBuilder项目文件,用来管理场景文件(ccb)和其他资源(CocosBuilder目前只支持Mac)
  • .ccb/.ccbi: CocosBuilder场景文件,可以被引擎的BuilderReader直接读入
  • .plist: Property List,属性列表文件,它是一种用来存储串行化后的对象的文件,文件是xml格式的。
  • .ogg: OGG Vorbis, 是一种新的音频压缩格式,类似于MP3等的音乐格式。它是完全免费、开放和没有专利限制的,而且支持多声道
  • .psd:  Adobe Photoshop Document file.
  • .md: Markdown file

 

相关文章:

  • ios开发之导航控制器的原理
  • Windows下安装使用curl命令
  • paip.数据库发邮件通知配置
  • 20145328 《Java程序设计》实验二实验报告
  • UNIX网络编程——经常使用的套接字选项
  • 【Mysql 学习】SQL服务器模式
  • struts-default.xml解读
  • 用POP动画编写带富文本的自定义动画效果
  • 〖Linux〗不知谁写的,很实用的Linux命令
  • 带动画渐进效果与颜色渐变的圆弧进度控件设计
  • [Android]Tool-Systrace
  • 抱歉,我不接私单了
  • Java中数据库连接池原理机制的详细讲解(转)
  • App安全之网络传输安全
  • 记录:C#编程的一点小细节
  • 深入了解以太坊
  • [LeetCode] Wiggle Sort
  • CSS实用技巧干货
  • HTML-表单
  • Laravel5.4 Queues队列学习
  • LeetCode29.两数相除 JavaScript
  • tab.js分享及浏览器兼容性问题汇总
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 工程优化暨babel升级小记
  • 简单实现一个textarea自适应高度
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 十年未变!安全,谁之责?(下)
  • 使用docker-compose进行多节点部署
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 小程序开发之路(一)
  • 运行时添加log4j2的appender
  • 正则与JS中的正则
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (1)SpringCloud 整合Python
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • ./configure、make、make install 命令
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net Remoting常用部署结构
  • .NET 中让 Task 支持带超时的异步等待
  • .NET大文件上传知识整理
  • @Documented注解的作用
  • [04]Web前端进阶—JS伪数组
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [C#]DataTable常用操作总结【转】
  • [C++][基础]1_变量、常量和基本类型