游戏引擎怎么开发?,第1张

嗯嗯,游戏引擎发展到今天,已经是一个产业化需求比较泛化的软件体系。如果细分,按不同的细分维度会有很多不同的划分,比如按功能分可以分为物理引擎,渲染引擎,脚本引擎等,按平台分可以分为PC游戏引擎,HTML5游戏引擎,移动端游戏引擎等,按渲染类别分2D引擎,3D引擎等。

再比如对于网游,又分客户端引擎和服务器引擎;服务器引擎的架构游戏类型、负载需求息息相关,架构本身和技术基础组件选型(操作系统、开发语言、网络库、数据库、运维工具、运营后台等)相关联,比较灵活。

按问题要求,猜测楼主问的是通用跨平台客户端引擎,参考对象是Unity,Unreal,CocosCreator等。先提取游戏引擎典型的核心功能如下:

渲染:实现画面的展示

物理:实现物理世界的抽象和表现

音频:实现声音的播放处理

网络:实现联网功能

游戏编程接口:讲游戏引擎能够提供的接口以API形式暴露给开发者

配套的集成开发环境(IDE):实现可视化场景编辑、组织,可视化物理编辑,可视化UI布局,资源的使用等

调试功能:提供便捷的方式以便开发者对游戏功能进行测试和debug,优化性能。

打包发布功能:生成最终的游戏的exe,app,apk等等可执行(可运行)文件

插件扩展功能:提供给高级开发者的对引擎自身功能增强的功能接口

其它功能:如Unity有service,可以集成平台数据统计、自身的视频广告等功能。

然后逐一略叙实现方式,强调一下,最好参照业内的经过广泛验证的引擎去了解,例如Unity;如果想知道更多细节,可以先使用一下主流引擎。

1渲染:为了跨平台,一般会选用跨平台的图形标准库底层如OpenGL,基于底层库再构建上层渲染框架,如精灵(Sprite),GUI,3D模型的渲染,shader扩展等。

2物理:物理引擎对运算性能要求比较高,而且底层功能的测试需要耗费大量精力,所以通常采用成熟的物理引擎,例如Havok,PhysX,Bullet,cannonjs等。

3音频:通常会采用业内成熟方案,如开源的OpenAL、FMOD、HTML5平台自身的Audio功能等。一般来说,非音乐类游戏对音频功能的需求相对不会太复杂,主要是靠专业软件提供音效文件(mp3,wma等),游戏中解析因小文件,处理声音播放,音量大小调整等。

4网络:提供联网的功能,按需提供TCP,UDP,HTTP等协议的包装好的易用的接口。如果为了方便开发,可以处理好客户端和服务器通信的连接处理,错误提示,协议的帧格式,序列化、反序列化方式,可以在此之上提供进一步的规范,例如采用Protobuf作为协议格式。

5游戏编程接口:这就是提供给开发者的API的组织。确定引擎提供给开发者用什么语言编程,怎么使用、音视频资源、3D模型等,怎么提供接口和游戏运行时环境(电脑、手机)交互等。

6配套的集成开发环境(IDE):易用的可视化开发工具,如拖拽布局、拖拽游戏资源的使用、代码编辑、集成调试打包功能等。这一块是游戏引擎开发工作量的大头,涉及用户(游戏开发者)密集使用的交互接口,要尽可能满足高效、易用。一般来说如果不是特别有能力驾驭,最好现成的采用跨平台的应用程序开发方案,比如CocosCreator采用electron框架。

7调试功能:提供查看FPS,跟踪代码运行,Profile,网络信号模拟,分辨率模拟设置,硬件设备模拟(手机)预览游戏等。建议游戏运行时与编辑器使用同一套或者大致一样的渲染和资源接口(例如Unity),这样方便降低调试和运行结果大相径庭的情况。

8打包发布功能:简单处理可以生成要打包的对应平台的工程,比如android平台生成AndroidStudio工程,ios平台生成xcode工程,注意资源、代码库的引用关系,配置文件的有效性、一致性,编译速度等。

9插件扩展功能:人力因时而穷,引擎功能不必强求一开始就大而全,可以将引擎整体设计为一个易扩展、易修改的结构,提供相应接口暴露给开发者,群策群力迭代和改进游戏引擎。

10其它功能:这一块可以根据自身引擎特点来进行添加,比如现在主流的几大引擎都有提供官方继承的资源商店、数据统计等服务接口。

真正可用的引擎的实现是一个系统而复杂的工程,有很多脏活累活需要考虑在里头,平台兼容性、性能、效果、易用性、鲁棒性、文档编写需要耗费巨量的心力;

如果是个人兴趣了解,可以根据上述内容再延伸查询相关内容,也欢迎随时交流。

如果是想做个娱乐引擎可以随意玩,技术如诗,越撸越痴;

如果是想创造一个伟大的引擎,请收下我的膝盖。

现在的游戏使用的硬件接口基本有两种,一个是DirectX,另一个是OpenGL,OpenGL只是2D3D图形图像接口,没有其它功能,DirectX则是一个全套的多媒体接口,包括2D3D图像、视频、音频、网络、输入设备等等,专为游戏制作开发。两个发展都很迅速,不断添加新的功能,并由硬件实现。游戏引擎的任务就是封装这些底层硬件加速接口的细节,并给游戏设计人员提供完善的实现游戏所需功能的接口。想要写一个引擎,首先得知道引擎是什么样,可以参考发布的引擎,有简单的非商业的,也有功能强大复杂的商业的。推荐你看看出名的2D引擎HGE,速度非常快,简单易用,引擎中包含源代码。

GameMei,它是、一款在线可视化游戏开发制作平台,通过上传几张即可做成一款跨平台游戏,降低游戏开发门槛,简化游戏开发流程。无需编码:可视化操作,不用写代码,在拖放中实现动作、事件及行为添加。操作简单便捷,让做游戏更加顺手。支持关键帧动画,物理仿真效果:可视化关键帧动画编辑器,不用写代码也能做酷炫的游戏动画效果,同时支持2D的刚体和软体力学以及碰撞检测,模拟真实物理运动场景,使游戏更加逼真。一键生成游戏,支持发布到各大游戏平台:可同时生成Android、iOS平台游戏。

平台与编程语言选择

首先,游戏开发的平台就有很多类型:

个人主机平台:Windows、Linux、MacOC;

移动平台:iOS、Android、WindowsPhone、BlackBerryOS、Symbian;

专业主机平台:Xbox、PlayStation、Will等。

如果你想从事移动平台的游戏开发,Android主流JAVA语言,iOS主流Object-C语言,那么你就要去学习这个平台主流的语言,而在个人主机上主流的游戏开发语言现在包括以后很长时间也还是C++。但是并不是所不同平台的游戏开发,就毫无共通之处,学了这个到了另一个平台就无用了。不是这样的,编程的世界里你走得越远你会发现很多东西的本质都是相似的,例如你如果扎实地理解了C++的基本语法(而不是死记硬背),日后再转Java语言也不是很难的事情,因为它们本质的面向对象特性还有各种编程语言特性都是相通的。

所以,如果你想走得远,在学习的时候不能简单流于表面,对于一样知识越深入到底层,你就越能看到其它知识与其的异曲同工之处,因此你将比别人更轻松。但是,当然一开始最好尽可能是贴合自己的专属领域和编程语言,这样能尽快地在这个领域持有一席之地。无论你选择哪个平台,游戏开发这个浩大的工程都离不开游戏引擎,所以这里都有二条路线让你选择:

只使用游戏引擎;

使用游戏引擎并深入学习游戏引擎原理。

游戏开发需要学什么?和软件开发一样,游戏开发也是需要从编程语言学起的。下面有怎样学习软件开发的方法。游戏开发比软件开发相对难一些,因为游戏开发需要我们熟悉各种游戏开发工具。来看看具体的内容吧!

阶段一:学习和计算机沟通的言语——C++语言或其他语言

编写程序就是和计算机进行沟通,而沟通很常用的途径就是语言,就像我们平时和别人沟通一样,只是现在你是和计算机进行沟通,其实你想想和计算机沟通比和别人沟通来得更容易。

计算机语言有很多中,如C/C++,Objc-C,Java,AS3,汇编语言,php,asp等,就像我们平时语言也有多种。当你掌握了这样的一种语言,那么你就能和计算机在不同的领域进行沟通。

而C++语言是目前来说较为强大的语言之一,而重要的是现在很多游戏的底层都是用C++语言写的。而同时你要熟悉一种编程开发工具,编程工具就是你向计算机沟通的一种工具,就像平时我们说话用的嘴巴,开发工具让我们和计算机的沟通更加方便。

阶段二:熟练掌握数据结构及各种常用的算法_灵活使用语言

单单会语言还不够的,就像我们平时你不是会说话就能和别人很好的沟通,你要懂得沟通的方式和技巧。数据就是计算机内存放记录的内容,你可以认为是我们平时说的词,数据结构就是数据与数据间的关系。

针对程序来说,你对数据理解,定义,操作熟悉,对算法多样,高效,那么程序就会简洁,运行效率高,这就是为什么要熟练掌握数据结构和常用算法的原因。其实算法就是解决问题的方法,解决一个问题,方法有很多,有些常用的方法是前人经验得来的,我们就要学习。

阶段三:找一个平台,发挥你的语言能力——Win,Android,IOS

目前程序应用的范围广,平台很多,就针对游戏程序目前常见的就有Win,Android,IOS等,平台就相当于语言使用的地域,你会普通话在中国很吃香,沟通无难题,但你去到美国,那就有难度了,就是你是普通话专家都郁闷。不同的平台对语言及程序架构的要求不一样,因此你要挑一个平台时更好的使用你的语言。

阶段四:开发游戏Dome_实践你的技术

如果你前三个阶段都过了剩下的就是开发游戏Dome,从游戏的logo开始,菜单,到场景,当主角,到NPC,到主角与NPC的交互,到主角与场景的交互等,一步一步写,在不断的开发中积累经验与程序框架。用得越多越熟练。

1、先学习C/C++

2、之后接触学习WINDOWSAPI和VC++

3、需要掌握一个3D游戏SDK:DirectxSDK,或者OPENGLSDK

4、美工和建模方面的知识适当了解围绕以上找相关资料或书,可能需要好几本。

首先非常感谢在这里能为你解答这个问题,让我带领你们一起走进这个问题,现在让我们一起探讨一下。

1要想成为一个游戏开发人员,就得先成为一个很好的程序开发人员。当你成为一个很好的程序开发人员时,就可以考虑学习游戏开发了。要想成为一个非常好的游戏开发人员,最重要的一点,就是需要对数学非常好。当然,这里指的数学好,不是指加减法好,或者心算好,而是指线性代数,几何和几何代数,物理方面的数学等等。如果你对于数学是毫无兴趣,或者索然无味的话,就要重新想想自己是否可以改变自己的理想了。如果你的数学不好,还想成为游戏中的人员,呵呵,有一个办法,就是成为游戏的测试人员,游戏的艺术人员,或者是游戏设计人员,或者游戏的管理人员。

上面知道数学是开发游戏的第一个基本条件了,但还是有很多其它知识需要学习的。下面就来详细说明一下:

2程序设计语言:在程序语言方面,不但要精通一两门语言,还需要了解其它的语言。一般开发游戏都是使用C++或者C,因此精通这门语言是必然的选择了。由于开发游戏需要不同的语言,比如脚本语言,这样就需要了解一下动态语言,比如Python等等。

3数据结构:不管计算机发展到什么程度,只要是编写程序,就少不了数据结构。目前,基本上都不再会有自己去创造“车轮”年代了,应去理解和使用STL,或者其它更好的数据结构库了。精通地使用STL,就基本上解决了数据结构的问题了。

浮点数:在开发游戏里,使用最多的数据类型是什么呢?显然就是浮点数。比如3D游戏里的点坐标,就是使用三个浮点数来表示的。浮点数的计算,往往就会有不精确的现像,比如判断一个数是否等于0,就不能想当然地认为是否等于0了。

4编程工具:编程工具,就像自己的柴刀,如果没有柴刀,就砍不到柴的。当然,磨刀不误砍柴功。因此,一定要对自己的编程工具非常熟悉,比如调试,工程配置,编辑,编译等等,还有经常出现的编译错误等。如果你还是使用VC6来开发现在的游戏话,建议你赶紧放弃吧。那都是8年前的开发工具了,目前都需要使用VS2005的开发工具了,强大的C++语言特性,强劲的编辑工具,让你写代码,就如流水般流畅。它还能支持编译x64位的代码,64位的PC越来越流行了。

5计算机体系结构:不了解计算机的体系结构,就没有办法知道程序的运行环境。很多年前,还是8086的体系的结构,接着,就是80386的保护模式。到目前多核体系结构,对于编写程序,要求发挥多核CPU的性能,就需要了解怎么样合理地分配CPU资源了。或许,你还可以控制那个CPU进行渲染的操作,那个CPU进行网络通迅。如果到四核的CPU,又要需要多少个CPU进行数据库的查询工作呢?

6Windows编程:目前90%的游戏运行环境就是Windows,如果不了解Windows,就无从下手了。比如Windows的消息处理过程,事件响应,还有Windows的网络通迅过程,这些都是需要了解的。还有Windows提供的API,更加要熟练运用了。

7DirectX:对于每个游戏开发者,都是必备常识。

软件工程:现在的游戏开发,都不是一个人就可以开发完成的。一定是一个团队,相互之间的协作,就成为了需要解决的问题。比如每个人写的一部份的程序库,是怎么样连接在一起,都是软件工程的问题,怎么样安排进度,都是需要使用甘特图来说明,以及怎么样进行测试,也是测试人员配合进行的。现在的游戏都进行入了3D的时代,那么你从哪里开始呢,最快的方法,就是下载DXSDK,然后打开一个空的工程,看看DX给你创建了什么文件,以及这些源程序作什么用的。接着试着创建一个三角形显示出来看看,试着改变它的颜色,试着让它转动起来,最后创建两个三角形,计算一下这两个三角形会不会相交呢?会不会碰撞呢?

在以上的分享关于这个问题的解答都是个人的意见与建议,我希望我分享的这个问题的解答能够帮助到大家。

在这里同时也希望大家能够喜欢我的分享,大家如果有更好的关于这个问题的解答,还望分享评论出来共同讨论这话题。

我最后在这里,祝大家每天开开心心工作快快乐乐生活,健康生活每一天,家和万事兴,年年发大财,生意兴隆,谢谢!

看你要去哪个方向了,策划、程序、美术,每个方向又有细分。

策划有剧情策划,关卡策划,数值策划等等。

程序有客户端编程,服务器编程,引擎编程,脚本编程,手机游戏开发,网页游戏。

美术有3d建模,2d美术。

方向不一样需求不一样。

较了解程序,就程序俩说吧。

如果要说只为干活,客户端你得学windows编程,socket等

服务器当然就是各种数据库操作,各种通讯操作。

引擎编程需要了解底层,directx,opengl,3d数学,物理基础等。

脚本的话就学脚本就够了。

手机游戏开发分ios、android,对应使用不同引擎需要不同的学习。

网页游戏前端目前flex流行,js,html也在发展。

以上只是速成。但是真正建议的是,

学好c++,数据结构,socket编程,了解windows编程,学习数据库编程。

先学3d数学,再学directx,然后试着做个小游戏。

学习设计模式。研究开源引擎。

会是个比较漫长的过程,但是基础扎实,各种开发都不怕。

可以专挑一条喜欢的道路深入研究,也可以专注游戏逻辑实现。

我也是在学习游戏,个人经历来说,觉得比较好的一个方案。

1、3D数学,包括矩阵、四元数、空间变换、碰撞检测等等;

2、C、C++要熟练掌握,对内存、指针这些都要很熟悉;

3、底层的计算机知识、组成原理很重要,最好能会一些汇编;

4、数据结构和算法,非常重要,基础都很重要;

5、对游戏的整体认识,包括游戏需要哪几个模块,比如渲染、物理、AI、gameplay等等,最好自己不用引擎的情况下写过一些基础的引擎、渲染模块等等;

6、对游戏需要有自己的认识和见解,玩游戏也要学会分析,知道如何分析游戏的优缺点,知道什么样的游戏好玩,为什么好玩,建议多看各种文章和视频;

7、了解业界的动态,多关注游戏相关的知识,业内的消息、媒体、人脉也非常重要,学习自己分析业界动向和观点;

8、使用和熟悉学习一下unity这种比较成熟的引擎也很有帮助,可以帮你了解游戏引擎的架构和引擎的动向,但是千万要巩固计算机基础之后再做这些;

9、创新的思维和openmind很重要;

10、好的实习经历、项目经验很重要,先进入游戏行业很重要,每个人都要敲门砖。

一、Unity

首推Unity,因为这个引擎是很成熟的商业引擎,国内的开发者也很多。

而且注意,它的个人版是不收费的哦!个人版和专业版几乎没有什么区别。

如果你是个人开发者,强烈建议使用免费版,足够你折腾了。

再不济就去破解,实时上目前很多专职人士甚至很多游戏公司都在用破解版。

二、UE4(虚幻引擎)

UE4在国内用户数量也不少,它用C++开发,所以难度比Unity高那么一点(Unity是用C#)。

但是它也有优点,首先就是,它的文档早就做到了全中文,另外,除过代码它的引擎使用难度比Unity要低得多,有很多现成的模块供使用,号称让美术和策划轻松做游戏(那让程序员失业??)。而且他的渲染效果好像比Unity强、性能也比Unity好一些。

Cocos

cocos算是目前国产引擎的老大了。

怎么说呢,总体感觉缺点大于优点吧。

优点:

1、开源(也意味着免费了)。

2、能发布游戏到H5平台、微信小游戏。

3、社区活跃。

缺点:

1、版本更新特别快,动不动就来个颠覆性的改革,把以往的架构全部推翻。开发者的学习成本极大。截止目前,它走上了抄袭Unity的道路,出了CocosCreator。感觉步子迈得太大了。本来在2D行业占很大份额,但是不好好完善,非要搞3D。多而不专,留不住开发者啊。

2、坑多,解决不完的引擎bug。有时候逼得你看源码自己改,或者放弃一部分功能。

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

我用它做过微信小游戏,当时的版本是

14x

。用完之后感觉再也不想用了。

但是如果作为第一个学习的引擎,还是可以考虑的。

1官方文档由简入繁,逻辑清晰,内容丰富,社区活跃2官方示例代码优秀,有适合入门的聊天室,也有复杂的MMORPG作为参考,基本满足了中小型游戏的入门需求

3架构清晰,易伸缩易扩展

4效率尚可,可参照官方提供的的压测数据

5后台管理工具优秀,查看服务器状态,动态添加/停止服务器等等

6学习成本低,招个靠谱的C++服务器现在是越来越难了,从头培养个靠谱的nodejs要比C++要相对容易,尤其在二线城市

7已有一些使用pomelo的产品上线,算是经过了市场/同行的初步检验再来

缺点:1拿来主意的通病,如果需要根据业务修改pomelo内容,还是需要一定学习成本,容易用不代表容易用得好

2至少对使用过的版本(<=115)的通信安全策略不满意(只好自行修改)

3对服务器之间的通信机制不满意,rpc必须要有回调,没有notify(考虑到效率牺牲和修改成本,可以接受)

个人理解:1、unity收费,cocos免费。2、unity3d擅长,cocos2d擅长。3、unity易入门,难提高,cocos难入门,难提高(各种配置繁琐,解决方案不明晰)。4、unity路线相对单一,cocos分支多,C++,js,lua,quick。5、unity闭源,坑少,但是底层无法修改,cocos开源,坑多,但是底层可见可修改。6、unity文档配套好,cocos可能更新太快,文档往往不配套。7、其他的配套工具什么的相差不多,流行工具对两者支持都不错,选择哪款引擎使用主要还是看项目吧,3D的推荐unity,2D推荐cocos。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 游戏引擎怎么开发?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情