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表存储 ...
随机推荐
- laravel中的路由
相信玩过laravel框架的小伙伴们,都知道它路由的强大之处 今天我想给大家分析下这个 首先 要找到配置路由的位置 routes这个目录下,我们找到web.php文件 里面可以看到现成的一个路由 Ro ...
- Verilog学习笔记基本语法篇(一)·········数据类型
Verilog中共有19种数据类型. 基本的四种类型: reg型.wire型.integer型.parameter型. 其他类型:large型.medium型.small型.scalared型.tim ...
- cs229_part4
又到了一节很重要的课,因为这个学习理论是从统计角度为机器学习算法提供了一个理论基础. 学习理论 问题背景 先回顾一下我们第一节课提到的机器学习的组成: 第一节课只是简单的提了一下,现在我们要真正来分析 ...
- php expat+DOM+SimpleXML XML读取
XML 文件 将在我们的例子中使用下面的 XML 文件: <?xml version="1.0" encoding="ISO-8859-1"?> & ...
- 二丶人生苦短,我用python【第二篇】
1 编码 python解释器在加载 .py 文件中的代码时,对内容默认进行ascill编码,因此存在中文会报错,所以需要告诉python解释器,用什么编码来执行源代码.) ASCII码,主要用于显示现 ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- [android开放篇] wifi-direct接口网址
http://www.android-doc.com/guide/topics/connectivity/wifip2p.html
- 【JavaScript 14—学习总结】:从小事做起
导读:花了将近两个月,JavaScript的学习视频算是做完了.里面的例子,都敲过一遍,但有少数的几个就是实现不了,比如:百度分享侧栏随着滚动条移动:菜单切换只对第一个起作用等,也就先放着了.现在,就 ...
- Unity3D for iOS初级教程:Part 1/3
转自Unity 3d for ios 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这篇教材是来自教程团队成 ...
- run as maven build时报错
eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is ...