在开发者的世界中,一直存在争议,谁是世界上最好用的语言。各类语言你方唱罢登场,但如果要说到游戏开发领域,C++绝对是执牛耳的存在。可以说,如果你向从事游戏开发,熟练掌握C++是必不可少的一环。
你都知道哪些游戏是用C++开发的么?开课吧也有很多小伙伴有疑问,如何用C++开发一款大型游戏,之前一直听说的游戏引擎又是什么,这不5月20日的《HelloWorld公开课》,资深游戏开发者查勋老师就来给你讲解,为什么大作游戏都是用C++开发的,以前一直听说的虚幻引擎、寒霜引擎都是什么?
为什么都在用C++开发游戏
C++语言是出了名的难学,语言接近底层、支持多范式编程、语法细节多如牛毛。那么为什么要用这么难的语言来做游戏开发呢?
我们都知道,游戏开发一个最重要的特点就是需要高性能,对于客户端来说需要满足低延时、高并发、高承载,需要单个服务器承载大量用户。对于客户端来说,还要处理物理引擎、图形渲染、特效等非常吃资源的功能。
所以能满足上面的所有需求的开发语言,基本也就非C++莫属了,因为接近硬件底层,所以C++具有非常高的性能,同时又具有高级编程语言的特性,抽象能力、泛型编程这些特点在大型软件工程中是必不可少的,又因为跨平台和包体小的特点,C++就理所应当的成为了大型游戏开发语言的不二选择。
游戏引擎介绍
在介绍游戏引擎前,我们先来了解下游戏开发中常见的图形库。下图列举了当下在大型游戏开发中经常使用的各类图形库。下面我们来一个一个介绍这些图形库
你都知道哪些游戏是用C++开发的么?开课吧OpenGL(全写OpenGraphicsLibrary)是一个功能强大,调用方便的底层图形库。是行业领域中最为广泛接纳的2D/3D图形API。因为OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows、Unix、Linux、MacOS、OS/2之间进行移植。
相较于OpenGL,Vulkan不再使用状态机设计。内部也不保存全局状态变量。显示资源全然由应用层负责管理。应用程序能够充分利用CPU的多核多线程的计算资源,降低CPU等待,降低延迟。带来的问题是。线程间的同步问题也由应用程序负责,从而对开发人员的要求也更高。
OpenGLES(OpenGLforEmbeddedSystems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。
WebGL是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGLES2.0结合在一起,通过增加OpenGLES2.0的一个JavaScript绑定,WebGL可以为HTML5Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。
Metal是一项全新的技术,专为开发高临场感主机游戏的开发者打造,可让开发者全力发挥芯片的性能。该技术经过优化,使处理器和图形处理器能够协同工作来实现最优性能。
聊完了图形库,再来看看游戏引擎,这个表格列举了目前主流游戏引擎的代表作品,比如虚幻引擎:(UnrealEngine),寒霜引擎:(FrostbiteEngine),起源引擎:SourceEngine,无尽引擎:InfinityWard,鬼泣引擎:CryEngine3,狂暴引擎:RAGE等等,相信有很多游戏你都玩过。
你都知道哪些游戏是用C++开发的么?开课吧根据游戏的种类,每个游戏引擎的侧重点都略有不同,比如虚幻引擎一般应用虚拟现实、VR、AR、模拟训练、大型游戏、主机游戏等。Unity3D一般应用3D游戏、手机游戏。像COCOS这种则更多应用2D游戏、手机游戏、h5游戏、跨平台app等。