cocos2d-x-3.6 引擎概述
cocos2d-x是一个游戏开发引擎,从公布到如今也有五六年了,一路看它慢慢壮大。它是如今应用最多的开源2d引擎,没有之中的一个,据说已经占据90%的市场,所以。对于想从事游戏开发的童鞋来说还是有必要学习一下的。
那么问题来了。什么是游戏引擎?
一个写安卓和ios应用的程序猿。假设想通过自学来转向游戏开发,这个问题肯定要先弄清楚,否者堵在心里会不踏实,也不利于后面的学习。
学习一个事物,首先要了解它的本质,而不是上来就去用它。
汽车引擎。飞机引擎,生活中非常好理解。你看得见,摸得着,好像不须要解释。汽车引擎。能够理解为就是发动机,汽车最核心的部分。整部汽车的动力系统,是汽车的心脏。
那么游戏引擎呢。怎么理解。
汽车没有发动机。从外观上也许还是一部汽车。可是它也就长了一个汽车的样子,跟一堆废铁没什么两样。
而一个游戏引擎却并非这样。开发一款游戏,你能够使用引擎,也能够不使用引擎。开发完毕之后它都是一个游戏。你能够在安卓上用安卓的应用接口来开发一个java游戏,塔防,连连看。横版rpg,这都是没有问题的。由于游戏。本质上就是一个无限循环(游戏循环),你全部的逻辑都在这个游戏循环里面,所以你全然能够自己实现,不借助不论什么引擎。
所以。有人喜欢把游戏引擎比方成汽车引擎,我觉得这是不对的。你告诉新手,游戏引擎就像汽车的发动机。是动力源泉。那么问题来了,我自己写的游戏没有引擎,这个怎么理解成汽车发动机。汽车没有发动机就是堆废铁了。
游戏引擎,更应该理解为一组工具,一个框架。像cocos2d-x这类引擎,属于代码引擎。就是说它提供大量封装好的代码,你须要学习各个代码模块的用法才干熟练运用。
这类引擎学习成本较高,由于要熟悉引擎源代码。
还有一类引擎像Unity3D,属于高度封装的工具性引擎。学习成本要低一些,由于他更直观。更上层。可是想要精通引擎,都须要有扎实的编程功底。我这里仅仅讲讲cocos2d-x,有机会以后讲Unity3D。
cocos2d-x说白了事实上就是一个开发框架。你用不用它。游戏没有本质的差别,差别在于开发的过程。
比方安卓上,相同是写一个连连看场景,假设不使用引擎,你可能须要自己写个view。计算可视区域,依据可视区域计算每个方格的大小,每个格放一个图片,调用onDraw方法来反复绘制。这样开发出来一个连连看。是跟安卓平台相关的。由于你使用了安卓应用框架的上层API。这个游戏不可能直接移植到ios平台上去。同理,你在ios平台用oc开发一个这种游戏,那么它跟ios平台相关。你也不可能移植到安卓平台上去。
然而,假设使用cocos2d-x引擎。那么就须要熟悉引擎里面一个场景的概念。精灵的概念。节点的概念,然后使用引擎的方法把这些小元素组织起来,就是一个游戏场景。这个时候开发出来的游戏,就能够移植到多个平台。
为什么会这样?
这就是cocos2d-x引擎的威力了。前面说了,引擎仅仅是一个框架,使用与否似乎没有多大差别。然而并非。
大家知道,游戏无非就是将一些图像。声音依照一定的逻辑组织在一起的一个应用。
而各个平台有他们自己的组织方式。对于各平台的上层开发人员来说。你已经遵循了这个平台的组织方式,那么开发出来的游戏当然不能拿到还有一个平台去执行,由于它不遵循还有一个平台的组织方式。假设有个组织方式。在各个平台上都通用,那么不就能够依照这个方式开发出来夸平台的游戏了么。
是的,cocos2d-x就是这种一个组织方式。引擎会做非常多基础工作,比方怎么把一张图片显示在屏幕上,怎么播放声音,怎么过渡画面,怎么制作特效。
全部游戏里面有的元素,都会被封装成一个个完整的实现,你仅仅须要拿来用。不须要关心怎么实现的。而cocos2d-x引擎做了很多其它,它实现了整个游戏的主循环,同一时候提供非常多小颗粒的代码封装,比方样例特效,声音播放。动画特效。这些仅仅须要调几个函数就能够实现。我们仅仅要在主循环里面组织游戏逻辑就能够实现整个游戏了。这个过程就像做一个仿真人,给了你一个人体骨架,制造肌肉,制造毛发。制造血的设备,你仅仅须要依照骨架。制造对应的血肉填充到骨架里面,最后一个仿真人就出来了。
再说它为何能够跨这么多平台,事实上并非它天生就这样。
仅仅是由于,它跨的平台都支持标准的openGL ES接口,引擎针对不同的平台,做了一些适配工作,让各平台都使用openGL ES来绘制图像,然后使用C++来实现底层逻辑,这样就能够跨平台了。说的比較简单,大家能够看我之前的博客。有比較具体的解说cocos2d-x怎样跨安卓,win和ios三个平台的原理。
最后总结一下。游戏引擎事实上就是一个框架和对应的一组代码模块。
在这个框架上,使用这些代码模块来实现游戏逻辑,会事半功倍。最后开发出一款游戏。
cocos2d-x-3.6 引擎概述的更多相关文章
- MySQL体系结构和存储引擎概述
MySQL体系结构和存储引擎概述 一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是 ...
- 【ShoppingWebCrawler】-基于Webkit内核的爬虫蜘蛛引擎概述
写在开头 在各个电商平台发展日渐成熟的今天.很多时候,我们需要一些平台上的基础数据.比如:商品分类,分类下的商品详细,甚至业务订单数据.电商平台大多数提供了相应的业务接口.允许ISV接入,用来扩展自身 ...
- .NET 工具生成引擎概述
Mark Michaelis 微软中国MSDN 过去几年大家一直都在使用 .NET Core(有这么久吗?)并且都知道“生成系统”经历了重大改变,不论是终止对 Gulp 的内置支持,还是放弃 Proj ...
- INNODB引擎概述
INNODB存储引擎的历史概述: INNODB存储引擎是OLTP应用中核心表的首选存储引擎. INNODB存储引擎包含在所有mysql数据库的二进制发行版本中.早期其版本随着mysql数据库的更新而更 ...
- MYSQL 存储引擎概述
一.存储引擎 Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中每一种技术都使用了不同的存储机制,索引技巧.锁定水平并且最终提供广泛的不同功能和能力.通过选择不同的技术,你能够获得 ...
- MySQL存储引擎概述
一.MySQL支持插件式存储引擎,默认包括有多种存储引擎,还可以自己定制化引擎,引擎是在表级别设置的. 二.各种存储引擎的特性 (A) MyISAM :不支持事务.不支持外键.访问速度快. 每个MyI ...
- 《MySQL命令执行过程和存储引擎概述》阅读笔记
使用MySQL的完整过程: 启动MySQL服务器程序. 启动MySQL客户端程序并连接到服务器程序. 在客户端程序中输入一些命令语句发送到服务器程序,服务器程序收到这些请求后,会根据请求的内容来操作具 ...
- mysql基础之-mysql存储引擎概述(八)
0x01 mysql 存储引擎:存储引擎也通常被称作“表类型” mysql> show engines; --- 查看当前所有所支持的存储引擎 mysql> show table st ...
- [MySQL Reference Manual]15. 其他存储引擎
15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...
随机推荐
- centos7 安装rabbitmq rabbitmq-c以及amqp扩展 详细篇
自己鼓捣了一晚上总算整明白了,有几个坑分享给小伙伴,希望能帮到你 前期准备 安装erlang 下载rpm包地址:https://github.com/rabbitmq/erlang-rpm (注意er ...
- fork()函数,一次调用,两次返回
参考自:http://blog.csdn.net/dog_in_yellow/archive/2008/01/13/2041079.aspx 以前一直迷惑,什么叫一次调用,两次返回.通过上网搜索,终于 ...
- IOS 自动布局-UIStackPanel和UIGridPanel(二)
在上一篇中我提到了如何使用stackpanel和gridpanel来实现自动布局.而在这一篇中我着重讲解下其中的原理. 在(UIPanel UIStackPanel UIGridPanel)中主 ...
- OSPF 提升 三 type of Areas
ospf ccnp 三 上图中 rip域中的不连续的100条路由 在a1中导致LSDB太大 在保证网段的可达性的前提下 尽可能减少区域内路由器的lsdb 可以将a1设置 ...
- 九度oj 题目1096:日期差值
题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行, ...
- redis中redis.conf配置文件
redis.conf文件配置解释 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize yes 2. 当Redis以守护进程方式运行时,Red ...
- iOS学习笔记13-网络(二)NSURLSession
在2013年WWDC上苹果揭开了NSURLSession的面纱,将它作为NSURLConnection的继任者.现在使用最广泛的第三方网络框架:AFNetworking.SDWebImage等等都使用 ...
- HDU——2112HDU Today(SPFA+简单Hash或map+前向星)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- spring之scope作用域
spring中,bean的作用域有五种类型:默认是单例模式, singleton prototype request session ...
- 启动uwsgi报错error while loading shared libraries: libpcre.so.1:
启动uwsgi时候报错: [root@ richie]# /usr/bin/uwsgi --ini /usr/local/nginx/conf/uwsgi.ini /usr/bin/uwsgi: er ...