本人正在学C和C++,但不知道C和C++都可以干点什么,

本人正在学C和C++,但不知道C和C++都可以干点什么,,第1张

在嵌入式领域

现如今的硬件比以前已经有很大的进步了,存储器的容量也很大,这时候我们就可以使用C++来编写更为复杂的实时程序。

游戏开发领域

市面上相当多的游戏引擎都是基于c++开发的,比如Cocos2d、虚幻4等,这些游戏引擎的代表作有失落的方舟、绝地求生、地狱之刃、中国象棋、雷电传说、俄罗斯方块、保卫萝卜、捕鱼达人、开心消消乐等等。

在三维游戏领域

三维游戏领域的计算量是十分庞大的,底层的数学全都是矩阵变换,要想画面精美、内容丰富、游戏的实时高,这些高难度需求让我们只能选择C++语言。C语言是面向过程变成的,编写像游戏那样的大型软件很吃力,这时候C++就比C更适合编程。制作好莱坞大片的软件无一例外都是C++编写。这几年火爆的的VR领域,也是C++编程的天下。

打遍天下无敌手的AlphaGo

我们之前看新闻知道Google的AlphaGo下围棋的水平已经是我们人类所达不到了。其背后也是用C++和神经网络编写的。在人工智能这个领域,Python和C++已经成为主流工具

在虚拟现实领域

虚拟现实(VR)是一种可以创建和体验虚拟世界的计算机仿真系统,是利用计算机生成的一种实时动态的三维立体逼真图像,结合VR眼镜,可以在观影、游戏、旅游活动、教学等方面给人一种完美的沉浸体验。C++在这一技术中同样扮演着重要的角色。

在数字图像处理领域:比如OpenCV视觉识别技术。

在网络软件领域:C++拥有大量成熟的用于网络通信的库,ACE是其中最具有代表性的跨平台库,在许多重要的企业部门甚至是军方都有应用。

在科学计算领域:在科学计算领域,FORTRAN是使用最多的语言之一。但是C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多。

在 *** 作系统领域: *** 作系统主要使用的编程语言是C,但是C++凭借其对C的兼容性,面向对象性质也开始在该领域有一席之地。

如果大型游戏,强烈建议不要使用cocos2d-js

我们目前的几个项目都是cocos2d-js开发的,我打算把这几个项目转egret。有如下几个理由:

1、cocos ide有BUG:断点会崩溃、代码提示很差、内存太高、虚拟机的菜单栏会影响事件(迭代了很多版本,这菜单栏BUG都没修复)

2、studio的工作流在几个引擎中是最差的,而且有BUG。经常和实际表现不一致。而且内存占用大,会崩溃。不能继承(这个问题最严重,不能继承按钮,那么按下缩放等高级功能就很蛋疼)。

3、

架构太差。写点小功能没事,如果想写大型游戏,这套架构会让你抓狂!比如最简单的按钮事件,我必须在事件方法里面加个触摸类型判断。一个很简单的点击,就

多出很多这种相似的代码!4、UI有好几套,然而每一套都有BUG。CCUI的设计也是很糟糕的!同时也是崩溃的罪魁祸首。

5、引擎BUG问题,

很多BUG会让你欲哭无泪,比如坐标会出现undefined。再比如热更新的BUG,XCODE编出的包默认是js而不是jsc,当这个包发布商店就会

出现不能热更新的问题,同时也进不去游戏,卡在了热更新界面。(这个问题导致我们流失了3个月的用户,知道苹果商店通过审核位置),再比如

java/objectc和js的交互,这个都有问题!再比如:ios第三方输入法会导致崩溃!

6、工作流问题,IDE的断点的观察变量很不友好、studio导出的配置很大、studio扩展性很差。在IDE 12版本出来之前,我们团队甚至无法断点,只能打印日志来debug。

7、工作效率问题,代码提示先不谈。我实现一个简单的列表都能折腾很久,那ccui的list真是太不好用!除此之外,裁剪、遮罩这些只需要一行的代码,在cocos下面需要无数行!

8、

引擎升级问题:cocos大概一个月1个升级,egret是2周。然而cocos升级会带来大量的新BUG,而且兼容性很差。导致我们现在还用30版

本。最蛋疼的是,官方的36版本又不能断点了!30升级到36还会导致布局混乱、九宫失效、崩溃闪退(绝对不是代码问题这个解释了)!基本上

cocos每加个新功能都会带来无数新BUG,老BUG修复量也少,我论坛反馈的问题经常需要迭代2到3个版本才修复,下个版本修复兼职是不可能。而

egret不仅迭代快,BUG修复也勤快!也很少有一些导致产品质量的验证BUG。

9、官方人员态度问题:我在cocos论坛发的BUG反馈,过了7天才有人来回复。地址(从30到31和32的BUG,官方帮忙看下),再看下egret我发的BUG反馈,当时是下班时间,然而第二天一早就回复我了。地址(Egret社区-BUG列表)

10、API问题:cocos经历了3个大版本,官方API文档也有的API,实际尽然是没有的,官方回复是还没加入js绑定。

11、跨平台问题:cocos2d-js经常是HTML5和JSB表现不一致。导致我们现在只能专注JSB而放弃HTML5版本。egret很少有这个问题。

12、

性能问题:先抛开runtime。如果你用了ccui,那么我100%保证你的cocos2d-js的性能会被egret秒杀。再来说下native下面

的性能对比,cocos的人说egret是js写的逻辑,而他们是绑定。那么问题来了,在现在,js的逻辑产生的性能压力一点都不是问题(参考

nodejs,能用js写服务器了都)。主要的性能压力其实是在渲染上面,而他们2个都是opengl作为渲染的。如果用了ccui,那么还是被

egret秒杀。那ccui带来的drawCall真是太!!再来谈runtime,egret现在很多浏览器都集成了runtime(可以opengl

渲染代替canvas渲染),而cocos-js只是说在合作,已经慢了一步。

13、产品路线图问题:cocos的几个产品一心在弄3D,egret都已经自己搞了一个IDE了。开发基本的生活cocos都没保障好,就去想和u3d打架!

14、内部问题:cocos估计内部很不和谐,ide据说是1个人在开发,studio是30个人(30个人整出这东西),而且studio是用的NET搞的,跨平台最呵呵的技术!QT、AIR那些那么多高效率,扩展性强的技术不用,选了个NET。。。。

---------------------------------------------------------------------------------------------------------------------------------

外话:说了那么多cocos的不是,我也曾试着爱过它,我甚至开发了一个和egret

wing一样的UI编辑器,写了个和Flash/Flex一样的API(egret用的这套,这种架构很好用,简单明了)。其中UI编辑器还加上了

unity3d那种绑定脚本的功能。然而因为cocos底层的一些令人发狂的BUG,我最终是放弃了。有egret这个车子在,我还造什么轮子?我打算把

手里头的这套cocos的东西开源。然后去整egret去!

---------------------------------------------------------------------------------------------------------------------------------

再来个题外话:

游戏引擎cocos2d-js和egret 对比

个是百度搜索第一的对比,里面说cocos2d的工具比egret多,我不否认,但是能用的基本没有。而egret的工具很稳定。就拿最简单的骨骼动

画,cocos连龙骨都不支持,studio里面的骨骼设计也是坑的不行,egret的骨骼设计工具从界面和实用性都已经完爆studio了!

再来说上面的地址里面的成功产品:捕鱼达人、DOTA传奇、我叫MT那都是cocos2dx写的,和js版本一点关系都没有!请问你有见过网页版的刀塔传奇么?

上面的开发语言对比,大项目来说,ts真的是完爆js!js那不小心就会出错真心不适合大项目,不然微软不会造这个轮子。

上面的参考资料对比,cocos2d-js的文档连参数的注释都没,和c++文档作参考也不行,很多参数是不一致的!而egret在开发工具里面就继承了中文的帮助。

从目前状况看,今年绝对是egret产品井喷的一年,不信走着瞧!cocos真是把我坑惨了!

---------------------------------------------------------------------------------------------------------------------------------

次申明,请拿cocos2d-js或者JSB的大作出来,不用拿2dx的东西。说到2dx,你们再去了解下,榜单上,有几个人是没改过引擎源码的,有几个

游戏能随着cocos引擎升级而升级。用studio的又有几个。并不想和王哲斯逼,只是希望你们能正视BUG,提高体验。如果好,我们团队会考虑

cocos技术的,否则只能用egret和unity3d了。我说cocos这么多不是,也是希望他成长,能给开发者带来更多利益,带来更多方便,而不是

各种无厘头的问题,各种蹩脚的手段去开发。还有,我说的这几点,@王哲

你接招,如果我不说出这些BUG,这些问题,那么估计还不一定改。egret同样有个人叫王泽,然而他的理念完全当我们开发者是用户,提高开发体验,这个

很重要的。

  如果你已经确定了学习Android的目标,那么,应该提前做好哪些工作、先打下哪些基础呢

  首先,你最好先熟悉一门编程语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程,只是很多同学在大学期间并没有好好学习,如果对它掌握的不太好或者很久没用了,建议先从将其好好复习一下,将其基本的语法再好好回顾一下,最好能搭建一个环境来运行、调试它。如果没有学过,不妨也提前学习一下,可以参考清华大学出版社出版的谭浩强老师的《C语言程序设计》,推荐这本书的原因,一是它已经经过了多年的考验,应该说还是比较严谨的;其次就是大部分的高校所开设的C语言使用的教材都是用它作为教材,因此无论是购买还是借阅,都容易找到。另外,华清远见网站上也有一些这方面的教学视频,可以结合来看。

  其次,如果你后续有志于游戏方面的开发,你最好具备一定的数据结构和算法基础知识。这一点是我在华清远见的讲台上,给学员们坚持强调的。虽然现代的高级编程语言中,其类库中已经帮我们实现了大部分的数据结构,一般情况下,我们直接使用即可。但如果你能对其原理有所了解,当你需要在这些数据结构和算法中间的时候,你可以能更加的清楚到底应该选择那个数据结构或者算法。另外,在图形图像处理上面,线性代数的作用也非常重要,如果能掌握一点这方面的基础知识,无疑也会在后续的学习中如虎添翼。举个例子,在Android中,有一个用于图形变换的类Matrix,用起来稍有点难。其实它的理论基础就是线性代数中的矩阵,如果你了解矩阵的基本算法,这个类的使用可以说就易如反掌了。

  第三,因为Android应用的开发语言用的是Java语言,并且在Android中也用到了Java核心类库的大量的类,因此,在学习Android开发之前,可以先把Java基本语法和Java SE的基础类库好好学习一下,例如:Java中的IO、网络、线程、List、Map、Tree等数据结构。现在的大学里也有不少的院系开设了Java课程,教材和图书也非常丰富,如果你所在的院系没有开设,也可以从其他开设了这个专业的院系同学那里借阅一下,并认真完成他们所布置的作业,争取自己能动手编写出一些简单的Java应用。如果自己购买图书,可以购买《Java核心技术,卷1(原书第8版)》这本图书来学习。

  第四,因为在Android中,会用到数据库来存储数据,因此,也可以提前对数据库知识做相关的储备。在Android所使用的SQLite中,其语法是遵循标准的SQL-92语法的(当然和企业级数据库如Oracle等比较,功能上要弱很多),有条件的话,最好也能安装一个数据库来进行实际的 *** 作。从易用性和资料完备性来说,建议大家使用Microsoft SQL Server或者MySQL就可以了。它们都是我们学习数据库的好平台。另外,如果曾经学习过数据库原理或者关系代数,那么,在学习数据库的过程中,也可以再好好地复习一下这些基础知识,对我们理解数据库大有裨益。

  最后,我们结合华清远见3G学院的“3G Android系统开发就业培训班课程体系”来谈谈Android开发的学习方法。

  Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大。因此,一个好的学习方法对我们学习Android开发很重要。因此在华清远见的课程体系设计中采取了循序渐进、将大目标分解成多个小目标,逐步达成对Android开发从应用层到底层系统及驱动开发全面掌握的目的。

  例如,可以先从Android的应用开发开始,等到对应用掌握的比较熟悉了,开始慢慢阅读一些Android 应用框架层的源代码,然后再渐渐往下去了解Android的JNI、Libraries、Dalvik虚拟机、HAL层、硬件驱动、Linux内核、ARM技术体系架构等,虽然近期Intel宣称要让Intel芯片支持Android系统,但在可预见的时期内,在移动设备上,ARM的优势应该还是不可撼动的。

  具体来说,可以先通过在开发板上构建一个自己的Android系统,了解Android系统的整体架构和启动过程,由此先对Android有一个初步的了解;接下来,学习Android的应用开发,在这里可以先学习Android的几个主要组件、UI组件,先对Android应用开发有一个感性认识。在能够熟练搭建用户界面后,再逐渐来丰富应用的功能,例如:加上事件处理,使其能够和用户互动;加上数据存储功能;加上联网功能等等。在学完应用后,在此基础上来学习游戏编程,先了解游戏设计的基本思路,然后开始从小的游戏、小的模块开始做起,到最后能完成一个类似于现在热门的《捕鱼达人》这样的游戏。在掌握了这些应用层级的内容后,可以去了解如何在Android应用中通过JNI去调用C/C++的接口,再往下学习Linux的内核和驱动开发如字符设备驱动、Flash设备驱动、网络设备驱动等等;再在此基础上,去学习Android驱动开发、HAL(硬件抽象层)开发、ARM体系架构和指令等等内容,这样,Android开发的整个体系就都贯穿起来了。

  当然,因为时间有限,而底层部分的内容比较庞杂,因此,在真正去做这部分工作之前,我们只需要对其基本原理有所了解,做好相关知识的储备,能够根据老师的指导来完成相关的实验。这样在后续的工作中,就可以方便的往这方面发展,让自己的事业更上一层楼。

一、3D游戏(包含25D)

只能:Unity3D

作品:职业棒球、星际陆战队等

分布:欧美国家用Unity3D的较多。商业化引擎中,3D游戏占比最高

原因:

就像 @朱云所说。Cocos2d-x目前还不支持3D。相比而言,U3D就是你唯一的选择了。

二、大型2D游戏(可以指安装包上百兆的)

推荐:Unity3D

作品:捣蛋猪、冰雪奇缘、天天飞车、绝代双骄等

分布:欧美国家用Unity3D的较多,国内用Cocos2D-X的多

原因:

1、游戏这东西,就是要跟“直觉”打交道的

我的想法有点极端,我感觉在游戏世界里,代码似乎更像是“妥协”的产物。

如果能做到“所见即所玩”,那真的是一个非常惬意的事。到时候,或许一个8岁小孩就能独立自主的开发一款游戏。

而这一点,Unity3D的王者地位,当之无愧!

2、Unity3D提供了超赞的设计工具,让你感觉像是在用3DMax和Flash来做游戏

3、适合大型团队,美工、动画更容易上手

U3D可以让美工、动画、码农在同一个平台上各司其职。这点从目前来看,Cocos2D-X望尘莫及。

三、中小型2D游戏(百兆以内的)

推荐:Cocos2D-X

作品:捕鱼达人、我叫MT、2048等

分布:东亚游戏多出自Cocos2D-X,尤其中国。但大多为小型游戏

原因:

1、Unity3D比Cocos2D-X的APK包要大了近十倍

仅以Android手机为例,同样的一个2D版HelloWorld,两者的安装包大小:

Unity3D:约为927M

Cocos2D-x:约为167M

解开包后发现,里面除了两个一共占据近12M的SO库(libmonoso和libunityso),还有一票的DLL文件。其中Systemdll、Assembly-CSharpdll和mscorlibdll这三个核心文件就占了5M。虽然它们压缩比约为50%,但仅这些文件就占了这么多。心疼啊。

而这,在“寸土寸金”的中小型游戏面前是多么可怕的数字。

2、Cocos2D-X比Unity3D快很多

即使不用测试工具,也可以轻易的发现这一点。

主要因为Unity3D用了Mono架构,它移植自微软的Net。每次启动都会加载Mono框架和Unity3D引擎,再加载Net Assembly(一堆DLL文件),这可比Cocos2D-x这种纯C++(包括Lua和JS)实现要慢很多。

3、独立开发者更喜欢“码”游戏

独立开发者大多是“技术达人”(不然怎么开发游戏)。U3D会让他们有“无所适从”感,从而影响了对U3D的灵活运用。对这些人而言,这是赤裸裸的时间成本。在游戏开发中,这点尤为重要。还是Cocos2D-X让他们更感到“亲切”,更有成就感。

也许你会问:“你怎么知道?”

因为我就是搞技术的。

4、中国游戏多出自Cocos2D-X

Cocos2D-X是正宗国产货,又是优秀的开源项目,国外用户群也不少。

也正是因为这个原因,C2D天生就对中国用户很“偏爱”。比如社区,我在上面问了两个问题,基本上当天问当天答,而且非常热心。从这一点我就对C2D产生了不错的好感。

5、Unity3D要收费

对大型2D游戏团队来说或许还不算什么。

初步算一下,Pro要1500$,手游怎么至少也得兼容iOS和Android吧,各自1500$,再加个Team套装,加一块儿,5000$,两万多银子。

Cocos2D-X免费、开源。遇到问题可以研究源码或向社区求救。

四、微型游戏(指争取安装包在1M以内的)

推荐:AndEngine、Cocos2D-iPhone

作品:Flappy Bird、小球快跑、五子棋等

分布:不需要跨平台的超小游戏用的多。

原因:

如果只想在一个平台上开发游戏,无疑上述两种是最好的选择

其中AndEngine开发出来的游戏最小才400多KB,大名鼎鼎的Flappy Bird就是用它做出来的。

另外,iPhone的Cocos2D划到这里似乎不太合适,但仔细想想,现在有更成熟的Cocos2d-x方案,Cocos2D划到微型游戏一列,相信是早晚的事(个人看法,轻拍)。

五、总结

1、Unity3D:如果你需要开发大型游戏,或需要开发3D游戏的,请选这个。

2、Cocos2D-x:如果你开发的是中小型游戏,对安装包大小比较在意的,请选这个。

3、Andengine、Cocos2D-iPhone:如果你只为开发单平台游戏,又非常在意速度和安装包大小,请选这个。

最后。俗话说:没有最好的,只有最适合自己的。我想这句话同样适用于开发游戏。

转载自知乎张炅轩。

一、Unity 3D

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

代表作游戏:

诛仙

极限摩托车2 (Trial Xtreme 2)

择天记

王者荣耀

神庙逃亡2(Temple Run 2)

神庙逃亡:勇敢传说(Temple Run:Brave)

纪念碑谷(Monument Valley)

仙剑奇侠传6

二、虚幻引擎

虚幻引擎的设计目的非常明确,每个方面都具有较高的易用性,尤其侧重于数据生成和程序编写的方面,这样,美工只需要程序员的很少量的协助,就能尽可能多地开发游戏的数据资源,并且这个过程是在完全可视化环境中完成的,实际 *** 作非常便利。

代表作游戏:

《绝地求生》(PLAYERUNKNOWN’S BATTLEGROUNDS)

《堡垒之夜》(Fortnight)

三、Cry Engine 3

Cry Engine3,是德国的CRYTEK公司出品一款对应最 新技术DirectX11的游戏引擎。2001年引入的这个“沙盒”是全球首款”所见即所玩”(WYSIWYP)游戏编辑器,现已发展到第三代,WYSIWYP功能将提升到一个全新层次,并扩展到了PS3和X360平台上,允许实时创作跨平台游戏,另外工具包内的创作工具和开发效率也都得到了全面增强。

代表作游戏:

《末日之战(Crysis)》

《战争前线》

四、白鹭(Egret)

Egret是一套完整的HTML5游戏开发解决方案。Egret中包含多个工具以及项目。Egret Engine是一个基于Type语言开发的HTML5游戏引擎,该项目在BSD许可证下发布。用Egret Engine开发的游戏可发布为HTML5版本,运行于浏览器之中。同时,也可以发布为iOS、Android和WindowsPhone原生程序。

五、Cocos 2D

Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼。Cocos2d-x项目可以很容易地建立和运行在iOS,Android,黑莓Blackberry等 *** 作系统中。

代表作游戏:

刀塔传奇

捕鱼达人

开心消消乐

1,你说的这个就是有的啊,我前段时间用应用宝找东西的时候就见了,你玩的话可以自己看下,2,然后就是弄这个软件啥的也是挺多的,你要是玩的话可以自己直接弄下也挺省事的呢!3,打开之后就是能直接玩的,也挺省事的

如果是全新的ARM,而且用的是NAND FLASH,那你就需要用JTAG线,PC端使用你自己写的SJF工具(SJF源码网上有,但你要根据自己的硬件配置做些修改,如RAM芯片,FLASH芯片等)将bootloader下载到FLASH的前4K,上电后,ARM会自动将FLASH的4K读到RAM中。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/11678631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存