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三个平台的原理。

最后总结一下,游戏引擎其实就是一个框架和相应的一组代码模块。在这个框架上,使用这些代码模块来实现游戏逻辑,会事半功倍,最后开发出一款游戏。

时间: 2024-12-28 01:30:55

cocos2d-x-3.6 引擎概述的相关文章

MySQL学习笔记(1) - 存储引擎概述

和大多数数据库不同,在MySQL中存在一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎. 一.MySQL存储引擎概述 插件式存储引擎是MySQL数据库最重要的特征之一,用户可以根据应用的需要寻找如何存储和索引数据.是否使用事务等.MySQL默认支持多种存储引擎,以适用于不同领域的数据库应用需求,用户可以通过选择选择不同的存储引擎提供应用的效率,提供灵活的存储,用户甚至可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性. MySQL支持的存储引擎包括MyISAM.In

MYSQL 存储引擎概述

一.存储引擎 Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中每一种技术都使用了不同的存储机制,索引技巧.锁定水平并且最终提供广泛的不同功能和能力.通过选择不同的技术,你能够获得额外的速度或功能,从而改善你的应用的整体功能. 二.分类 1.MYISAM存储引擎: 不支持事务,也不支持外键,优势是访问速度快,对事务完整性没有要求或者以SELECT,INSERT为主的应用基本可以用这个引擎创建表. (1)数据存储形式 MyISAM采用的是索引与数据分离的形式,将数据保存在三个文

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

0x01 mysql 存储引擎:存储引擎也通常被称作“表类型” mysql> show engines;   --- 查看当前所有所支持的存储引擎 mysql> show table status 存储引擎格式: SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] mysql> show table status in hellodb where Name='class'\G Name 表名 Engi

MySQL存储引擎概述

一.MySQL支持插件式存储引擎,默认包括有多种存储引擎,还可以自己定制化引擎,引擎是在表级别设置的. 二.各种存储引擎的特性 (A) MyISAM :不支持事务.不支持外键.访问速度快. 每个MyISAM表在磁盘上存储成3个文件,文件名与表名相同,扩展名是: (A1) frm (存储表定义) (A2) MYD (MYData, 存储数据) (A3) MYI (MYIndex, 存储索引) 数据文件和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度.可以在创建表的时候,指定该表的 DA

游戏引擎

游戏引擎概述 游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件.这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始.大部分都支持多种操作平台,如Linux.Mac OS X.微软Windows.游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎).物理引擎.碰撞检测系统.音效.脚本引擎.电脑动画.人工智能.网络引擎以及场景管理. 详细介绍,请猛戳这里...... 常见的游戏

前端学PHP之Smarty模板引擎

前面的话 对PHP来说,有很多模板引擎可供选择,但Smarty是一个使用PHP编写出来的,是业界最著名.功能最强大的一种PHP模板引擎.Smarty像PHP一样拥有丰富的函数库,从统计字数到自动缩进.文字环绕以及正则表达式都可以直接使用,如果觉得不够,SMARTY还有很强的扩展能力,可以通过插件的形式进行扩充.另外,Smarty也是一种自由软件,用户可以自由使用.修改,以及重新分发该软件.本文将详细介绍Smarty模板引擎 概述 Smarty是一个php模板引擎.更准确的说,它分离了逻辑程序和外

InnoDB存储引擎——后台线程

1.InnoDB存储引擎概述 InnoDB存储引擎是第一个完整支持ACID事务的MySql存储引擎,其特点是行锁设计.支持MVCC.支持外键.提供一致性非锁定读,同时被设计用来最有效地利用以及使用CPU和内存. 2.InnoDB体系结构 上图是InnoDB存储引擎的体系结构,可以看到InnoDB存储引擎有很多内存块,这些内存块组成了一个大的内存池,负责如下工作: 维护所有进程/线程需要访问的多个内部数据结构: 缓存磁盘上的数据,方便快速地读取,同时在对磁盘文件的数据修改之前在这里缓存. 重做日志

第 3 章 MySQL 存储引擎简介

3.1MySQL 存储引擎概述 到后来,MySQL 意识到需要更改架构,将前端的业务逻辑和后端数据存储以清晰的层次结构拆分开的同时,对ISAM 做了功能上面的扩展和代码的重构,这就是MyISAM存储引擎的由来. MySQL 的插件式存储引擎主要包括MyISAM,Innodb,NDB Cluster,Maria,Falcon, Memory,Archive,Merge,Federated 等,其中最著名而且使用最为广泛的MyISAM 和Innodb两种存储引擎.MyISAM 是MySQL 最早的I

Mysql之引擎

Mysql引擎概述 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能. 不同的引擎,功能,占用空间大小,读取性能有区别 Mysql引擎有MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERATED.ARCHIVE.CSV.BLACKHOLE