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. PAT Basic 1052

    1052 卖个萌 萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请 ...

  2. sublime_win配置

    让你用sublime写出最完美的python代码--windows环境 点击上方标题查看原文链接, 感谢大佬 至少很长一段时间内,我个人用的一直是pycharm,也感觉挺好用的,也没啥大毛病 但是py ...

  3. HP DL380 G5 安装操作系统流程

    1.准备服务器引导盘,设置光盘启动.注意:会将服务器所有数据清除 2.依据引导盘选择需要的安装系统 3.插入系统安装光盘.ps:若kvm等远程工具无法插入光盘,需要插入物理介质的安装光盘

  4. SQL Server on Red Hat Enterprise Linux

    本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创 ...

  5. 对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。 给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。

    /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x ...

  6. linux下ln命令

    转自:http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位 ...

  7. 九度oj 题目1151:位操作练习

    题目描述: 给出两个不大于65535的非负整数,判断其中一个的16位二进制表示形式,是否能由另一个的16位二进制表示形式经过循环左移若干位而得到. 循环左移和普通左移的区别在于:最左边的那一位经过循环 ...

  8. nginx中access_log和nginx.conf中的log_format用法

    nginx服务器日志相关指令主要有两条: 一条是log_format,用来设置日志格式; 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小 可以参加ngx_http_log_ ...

  9. python 写excal

           workbook.save(filename)

  10. 刷题总结——拦截导弹(ssoj)

    题目: 题目背景 NOIP1999 提高组试题 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都 ...