游戏引擎是如何设计?游戏如何开发出来的
发表时间:2022-03-29 17:24
文章来源:金鑫畅游
浏览次数:
游戏引擎是如何设计?游戏如何开发出来的?
游戏引擎是如何设计?其实他是跑在我们操作系统的一个特殊的APP,所以的话,我们要做跨平台的游戏引擎的话呢,其实就是要这个APP可以运行到多个平台这里来,目前我们主流的平台呢,有咱们的这个ios mark android Windows等等对不对?
那我们要做游戏引擎的话呢,首先我们就得要啊,对游戏引擎的OS提供一个支撑,对吧?OS相关的一些接口要提供一个支撑,那么这个支撑呢,我们把它叫做平台抽象层。那么游戏引擎呢,大概会用到OS相关的一些东西呢,我在这里呢,列举了八大板块,第一个板块的话呢,就是咱们的这个开发工具的一个需要啊,你不同的平台它的开发工具是不一样的,比方说mark跟ios,它的开发工具呢,就是我们的这个啊X code。啊,我们的android的开发工具呢,就是android的NDK和SDK,我们的Windows的话呢,它的开发工具呢,就是咱们的video studio。
所以首先第一个呢,就是我们的开发工具,第二个的话呢,就是我们的这个APP的一个支撑。什么叫APP的一个支撑呢?就是我们的窗口,对吧?那你想想看,Ios有一个窗口的一个方式,安卓有创建窗口的一个方式,Windows有创建窗口的一个方式。所以这里面的话呢,我们就是APP窗口这些东西的一些支撑。
我们的游戏需要上报事件,比方说玩家我的一些操作,触摸呀,鼠标呀,键盘啊这些东西,那么这些东西的话呢,就属于我们的这个事件的一个知识,那么这些事件的知识呢,也是OS呢,提供给到我们的
我们的玩家操作这个键盘,OS呢,检测到事件,再把这个事件呢,给到我们的游戏里面。接下来的话呢,我们的游戏呢,可能会播放很多音乐和音效,所以呢,我们的OS的要能够给我们提供这个播放声音的一个支持,同时的话呢,我们要读写文件,加载资源,所以呢,我们ou要给我们的这个游戏引擎文件io的支持好,同时的话呢,我们的游戏引擎呢,都是直接来操纵我们的显卡和gpu,那么我们需要opengl的一个支持。同时的话呢,还会有一些其他的,比方说我要访问啊,我们的一个一个相册呀,访问其他的一些东西,需要平台的一些其他的API的一些支撑。
同时的话呢,我们可能需要做这个网络游戏,那我也需要网络通讯的一个支撑。还有的话呢,我们会接第三方的SDK向我们的这一个,像我们的这个支付宝的微信的这些SDK的一些支撑,所以这块的话呢,我们也是需要的。所以整个这一刻呢,我们就做成了一个平台抽象层,那么平台抽象层呢,其实是每一个平台做一个项目和工程,每一个平台做一个项目工程,然后的话呢,我们提供好这些支持,这些支持提供好了以后,都是有统一的接口开放给我们的引擎内核,也就是这些APP的支撑,世界的支撑,生命的支撑,文件的支撑,全部都是统一的接口开放给到我们的引擎内核儿,我们的引擎内核掉这一个我们的ios里面的相关的一些API的时候呢,我们就通过这个平台抽象层抽象出了这些接口来进行支持。那么底层的话呢,不同的平台都有一套自己的完整的实现好。
那么平台抽象层做好了以后呢,接下来咱们就来到了这个引擎内核。引擎内核的话呢,就是咱们会包含对那些模块,我在这里的话,列举了主要的J8大模块,首先非常重要的就是我们的渲染和渲染管线,对吧?包含咱们的相关一些东西。哎,我们的渲染策略是什么?我们的光照如何支持,我们到底是用向前渲染还是寅时渲染,这些东西啊,都属于我们的渲染管线和C的相关的一些东西。同时的话呢,我们的开发如何开放给用户可以来做可编程的一些些的,如果开放给用户来做可编程的一些渲染管线都属于这块的一个内容,同时的话呢,我们接收这个S的一个事件,那么这里面呢,进到我们的世界模块,然后呢,世界模块我们如何通知过来对吧?那么如果你要使用这个。
引擎的监听事件,你如何来接听,所以这块就是键输入,然后呢,就是我们的网络模块,网络模块的话呢,就是我们网络通讯的时候,哎,你如何来做像我们的TCPHTTP啊这些东西,然后呢,就是我们的文件IOA,我们的游戏应用要操作文件io读写文件的时候呢,我们如何来处理?
然后呢,文件io再来调平台抽象层里面的文件L的一些接口来正式地答道,在当对应的平台来存储文件的一个目的啊,包括我们文件的读写好声音模块也是一样的。然后呢,我们游戏引擎的话呢,一般都会引入一个脚本语言,引入脚本语言呢,主要是为了提升我们的开发效率,因为脚本开发起来非常的简单,对吧?
所以呢,我们要内置一个脚本引擎,向我们内置的一些路啊,引擎啊啊,像有一些游戏引擎的话呢,像像unity的内置的设置和Mo lo啊,对吧,那像有一些这种H5的游戏引擎的话,内置的可能是我们的JSTS的一个解释器啊,那么这块的话呢,就属于我们的脚本引擎,然后呢,我们就有粒子系统,然后粒子系统这些东西做好了以后呢,他就是。性的一些东西了,对吧,工具性质的,你把栗子做好了,方便我们的这个开发者使用例子,然后的话呢,把各种各样的组件做好了,像我们的UI组件呢,骨骼动画组件呢,那这样子的话呢,方便我们的应用呢,来播放我们的游戏的这些骨骼动画。然后的话呢,我们就是有一个场景管理,对吧?我们可能每个节点按照场景树的方式呢,把整个场景组织起来,那么这块的话呢,就属于我们的场景管理。然后呢,还有一个就是我们的物理引擎,物理引擎的话呢,一般我们游戏都使用第三方的一些物理引擎的一些实现,像我们的这个这个bullet啊,Level bullet对吧?还有我们的这个physical X,对吧?
那这些东西的话呢,都属于我们的这个物理引擎的一些实现好。然后呢,有了这些东西以后,我们的引擎的内核基本上都做好了,然后引擎内核做好了以后呢,接下来我们就基于引擎内核来做第一个特殊的一个应用,那么这个应用呢,就是咱们的游戏引擎编辑器,游戏引擎编辑器呢,其实你可以把它理解为是一款游戏,只不过这款游戏呢,它是可以用允许用户来进行编辑,允许用户来进行允许用户啊,通过这种UI操作,把引擎里面的各个模块向我们的摄像机啊,像我们的这种啊,网格模型啊,像我们的这些东西拖到我们的这个窗口里面来。所以游戏引擎编辑器呢,它就是一个特殊的游戏应用,是允许用户进行编辑的这样一个游戏的一个APP。好,那么游戏引擎的这个编辑器做好了以后呢,那我们就非常方便了,开发游戏的时候,我们可以通过直观的来生成咱们的场景,直观的来生成咱们的这个物体,然后呢,我们把它保存成一个资源,好,到时候呢,我们游戏运行的时候呢,我们就加载这些资源进来,来构建出来咱们的这个场景,然后呢,我们就运行起来了。好,有了游戏引擎编辑器以后呢,那我们就可以基于这个游戏引擎编辑器编辑出来不同的一些游戏的类型,最后的话呢,游戏已经编辑器呢,还内置了一个打包模块来调用底层的开发工具来最终打包生成出来我们的这一个APP。好,本期的游戏引擎如何设计就到这里关注我获得更多的游戏开发的知识。
游戏引擎是如何设计?其实他是跑在我们操作系统的一个特殊的APP,所以的话,我们要做跨平台的游戏引擎的话呢,其实就是要这个APP可以运行到多个平台这里来,目前我们主流的平台呢,有咱们的这个ios mark android Windows等等对不对?
那我们要做游戏引擎的话呢,首先我们就得要啊,对游戏引擎的OS提供一个支撑,对吧?OS相关的一些接口要提供一个支撑,那么这个支撑呢,我们把它叫做平台抽象层。那么游戏引擎呢,大概会用到OS相关的一些东西呢,我在这里呢,列举了八大板块,第一个板块的话呢,就是咱们的这个开发工具的一个需要啊,你不同的平台它的开发工具是不一样的,比方说mark跟ios,它的开发工具呢,就是我们的这个啊X code。啊,我们的android的开发工具呢,就是android的NDK和SDK,我们的Windows的话呢,它的开发工具呢,就是咱们的video studio。

所以首先第一个呢,就是我们的开发工具,第二个的话呢,就是我们的这个APP的一个支撑。什么叫APP的一个支撑呢?就是我们的窗口,对吧?那你想想看,Ios有一个窗口的一个方式,安卓有创建窗口的一个方式,Windows有创建窗口的一个方式。所以这里面的话呢,我们就是APP窗口这些东西的一些支撑。
我们的游戏需要上报事件,比方说玩家我的一些操作,触摸呀,鼠标呀,键盘啊这些东西,那么这些东西的话呢,就属于我们的这个事件的一个知识,那么这些事件的知识呢,也是OS呢,提供给到我们的
我们的玩家操作这个键盘,OS呢,检测到事件,再把这个事件呢,给到我们的游戏里面。接下来的话呢,我们的游戏呢,可能会播放很多音乐和音效,所以呢,我们的OS的要能够给我们提供这个播放声音的一个支持,同时的话呢,我们要读写文件,加载资源,所以呢,我们ou要给我们的这个游戏引擎文件io的支持好,同时的话呢,我们的游戏引擎呢,都是直接来操纵我们的显卡和gpu,那么我们需要opengl的一个支持。同时的话呢,还会有一些其他的,比方说我要访问啊,我们的一个一个相册呀,访问其他的一些东西,需要平台的一些其他的API的一些支撑。

同时的话呢,我们可能需要做这个网络游戏,那我也需要网络通讯的一个支撑。还有的话呢,我们会接第三方的SDK向我们的这一个,像我们的这个支付宝的微信的这些SDK的一些支撑,所以这块的话呢,我们也是需要的。所以整个这一刻呢,我们就做成了一个平台抽象层,那么平台抽象层呢,其实是每一个平台做一个项目和工程,每一个平台做一个项目工程,然后的话呢,我们提供好这些支持,这些支持提供好了以后,都是有统一的接口开放给我们的引擎内核,也就是这些APP的支撑,世界的支撑,生命的支撑,文件的支撑,全部都是统一的接口开放给到我们的引擎内核儿,我们的引擎内核掉这一个我们的ios里面的相关的一些API的时候呢,我们就通过这个平台抽象层抽象出了这些接口来进行支持。那么底层的话呢,不同的平台都有一套自己的完整的实现好。
那么平台抽象层做好了以后呢,接下来咱们就来到了这个引擎内核。引擎内核的话呢,就是咱们会包含对那些模块,我在这里的话,列举了主要的J8大模块,首先非常重要的就是我们的渲染和渲染管线,对吧?包含咱们的相关一些东西。哎,我们的渲染策略是什么?我们的光照如何支持,我们到底是用向前渲染还是寅时渲染,这些东西啊,都属于我们的渲染管线和C的相关的一些东西。同时的话呢,我们的开发如何开放给用户可以来做可编程的一些些的,如果开放给用户来做可编程的一些渲染管线都属于这块的一个内容,同时的话呢,我们接收这个S的一个事件,那么这里面呢,进到我们的世界模块,然后呢,世界模块我们如何通知过来对吧?那么如果你要使用这个。
引擎的监听事件,你如何来接听,所以这块就是键输入,然后呢,就是我们的网络模块,网络模块的话呢,就是我们网络通讯的时候,哎,你如何来做像我们的TCPHTTP啊这些东西,然后呢,就是我们的文件IOA,我们的游戏应用要操作文件io读写文件的时候呢,我们如何来处理?
然后呢,文件io再来调平台抽象层里面的文件L的一些接口来正式地答道,在当对应的平台来存储文件的一个目的啊,包括我们文件的读写好声音模块也是一样的。然后呢,我们游戏引擎的话呢,一般都会引入一个脚本语言,引入脚本语言呢,主要是为了提升我们的开发效率,因为脚本开发起来非常的简单,对吧?

所以呢,我们要内置一个脚本引擎,向我们内置的一些路啊,引擎啊啊,像有一些游戏引擎的话呢,像像unity的内置的设置和Mo lo啊,对吧,那像有一些这种H5的游戏引擎的话,内置的可能是我们的JSTS的一个解释器啊,那么这块的话呢,就属于我们的脚本引擎,然后呢,我们就有粒子系统,然后粒子系统这些东西做好了以后呢,他就是。性的一些东西了,对吧,工具性质的,你把栗子做好了,方便我们的这个开发者使用例子,然后的话呢,把各种各样的组件做好了,像我们的UI组件呢,骨骼动画组件呢,那这样子的话呢,方便我们的应用呢,来播放我们的游戏的这些骨骼动画。然后的话呢,我们就是有一个场景管理,对吧?我们可能每个节点按照场景树的方式呢,把整个场景组织起来,那么这块的话呢,就属于我们的场景管理。然后呢,还有一个就是我们的物理引擎,物理引擎的话呢,一般我们游戏都使用第三方的一些物理引擎的一些实现,像我们的这个这个bullet啊,Level bullet对吧?还有我们的这个physical X,对吧?
那这些东西的话呢,都属于我们的这个物理引擎的一些实现好。然后呢,有了这些东西以后,我们的引擎的内核基本上都做好了,然后引擎内核做好了以后呢,接下来我们就基于引擎内核来做第一个特殊的一个应用,那么这个应用呢,就是咱们的游戏引擎编辑器,游戏引擎编辑器呢,其实你可以把它理解为是一款游戏,只不过这款游戏呢,它是可以用允许用户来进行编辑,允许用户来进行允许用户啊,通过这种UI操作,把引擎里面的各个模块向我们的摄像机啊,像我们的这种啊,网格模型啊,像我们的这些东西拖到我们的这个窗口里面来。所以游戏引擎编辑器呢,它就是一个特殊的游戏应用,是允许用户进行编辑的这样一个游戏的一个APP。好,那么游戏引擎的这个编辑器做好了以后呢,那我们就非常方便了,开发游戏的时候,我们可以通过直观的来生成咱们的场景,直观的来生成咱们的这个物体,然后呢,我们把它保存成一个资源,好,到时候呢,我们游戏运行的时候呢,我们就加载这些资源进来,来构建出来咱们的这个场景,然后呢,我们就运行起来了。好,有了游戏引擎编辑器以后呢,那我们就可以基于这个游戏引擎编辑器编辑出来不同的一些游戏的类型,最后的话呢,游戏已经编辑器呢,还内置了一个打包模块来调用底层的开发工具来最终打包生成出来我们的这一个APP。好,本期的游戏引擎如何设计就到这里关注我获得更多的游戏开发的知识。