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 引擎概述的更多相关文章

  1. MySQL体系结构和存储引擎概述

     MySQL体系结构和存储引擎概述 一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是 ...

  2. 【ShoppingWebCrawler】-基于Webkit内核的爬虫蜘蛛引擎概述

    写在开头 在各个电商平台发展日渐成熟的今天.很多时候,我们需要一些平台上的基础数据.比如:商品分类,分类下的商品详细,甚至业务订单数据.电商平台大多数提供了相应的业务接口.允许ISV接入,用来扩展自身 ...

  3. .NET 工具生成引擎概述

    Mark Michaelis 微软中国MSDN 过去几年大家一直都在使用 .NET Core(有这么久吗?)并且都知道“生成系统”经历了重大改变,不论是终止对 Gulp 的内置支持,还是放弃 Proj ...

  4. INNODB引擎概述

    INNODB存储引擎的历史概述: INNODB存储引擎是OLTP应用中核心表的首选存储引擎. INNODB存储引擎包含在所有mysql数据库的二进制发行版本中.早期其版本随着mysql数据库的更新而更 ...

  5. MYSQL 存储引擎概述

    一.存储引擎 Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中每一种技术都使用了不同的存储机制,索引技巧.锁定水平并且最终提供广泛的不同功能和能力.通过选择不同的技术,你能够获得 ...

  6. MySQL存储引擎概述

    一.MySQL支持插件式存储引擎,默认包括有多种存储引擎,还可以自己定制化引擎,引擎是在表级别设置的. 二.各种存储引擎的特性 (A) MyISAM :不支持事务.不支持外键.访问速度快. 每个MyI ...

  7. 《MySQL命令执行过程和存储引擎概述》阅读笔记

    使用MySQL的完整过程: 启动MySQL服务器程序. 启动MySQL客户端程序并连接到服务器程序. 在客户端程序中输入一些命令语句发送到服务器程序,服务器程序收到这些请求后,会根据请求的内容来操作具 ...

  8. mysql基础之-mysql存储引擎概述(八)

    0x01 mysql 存储引擎:存储引擎也通常被称作“表类型” mysql> show engines;   --- 查看当前所有所支持的存储引擎 mysql> show table st ...

  9. [MySQL Reference Manual]15. 其他存储引擎

    15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...

随机推荐

  1. pytorch 加载数据集

    pytorch初学者,想加载自己的数据,了解了一下数据类型.维度等信息,方便以后加载其他数据. 1 torchvision.transforms实现数据预处理 transforms.Totensor( ...

  2. HTML、CSS知识点总结_D

    一,html+css基础 1-1 Html和CSS的关系 学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1. HTM ...

  3. Knockout v3.4.0 中文版教程-9-计算监控-API参考

    5.参考 下面的内容描述了如何构建和使用计算监控. 1. 构建一个计算监控 可以用如下的形式构建一个计算监控: ko.computed( evaluator [, targetObject, opti ...

  4. BeautifulSoup4系列四

    前言 很多时候我们无法直接定位到某个元素,我们可以先定位它的父元素,通过父元素来找子元素就比较容易 一.子节点 1.以博客园首页的摘要为例:<div class="c_b_p_desc ...

  5. Flutter 发布APK时,release版本和debug版本的默认权限不同

    Flutter 发布APK时,release版本和debug版本的默认权限不同 @author ixenos 在调试模式下,默认情况下启用服务扩展和多个权限(在flutter中) 当您处于发布模式时, ...

  6. PTA 09-排序1 排序 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/720 5-12 排序   (25分) 给定NN个(长整型范围内的)整数,要求输出从小到大 ...

  7. poj2431 Expedition优先队列

    Description A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Bein ...

  8. git 本地保存账号密码

    用ssh连接的项目都不用输账号密码 如果https的话   每次都用输入账号密码   很繁琐 解决方法,在本地的工程文件夹的.git下打开config文件添加: [credential]     he ...

  9. Python 打印嵌套list中每个数据(遍历列表)

    new_list = ["H1","H2",1999] for each_list in new_list: print (each_list); 若列表中包含 ...

  10. redmine与SVN的Https方式整合问题

    尼玛啊!这个SVN的整合搞了一晚上,今天早上终于搞定了,FUCK!!! 进入话题: 可以先在bitnami redmine stack的命令行环境下手工运行svn,看是否能取到数据, svn list ...