游戏引擎怎么开发?

作者&投稿:平嘉 (若有异议请与网页底部的电邮联系)

嗯嗯,游戏引擎发展到今天,已经是一个产业化需求比较泛化的软件体系。如果细分,按不同的细分维度会有很多不同的划分,比如按功能分可以分为物理引擎,渲染引擎,脚本引擎等,按平台分可以分为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,cannon.js等。

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,速度非常快,简单易用,引擎中包含源代码。




~

游戏引擎怎么开发?
答:9.插件扩展功能:人力因时而穷,引擎功能不必强求一开始就大而全,可以将引擎整体设计为一个易扩展、易修改的结构,提供相应接口暴露给开发者,群策群力迭代和改进游戏引擎。10.其它功能:这一块可以根据自身引擎特点来进行添加,比如现在主流的几大引擎都有提供官方继承的资源商店、数据统计等服务接口。真...

如何从零开始学习游戏引擎开发
答:做一个游戏引擎,稍微想想就觉得挺复杂了,先罗列出几个必须要做的模块:资源和文件管理系统,游戏主循环,输入系统,渲染引擎,动画系统,碰撞系统,游戏性系统,若是想的再复杂一点,还得加入游戏相关的调试工具和性能剖析工具。这样一来,就很容易陷入过度设计的泥沼,在大三上学期时,我们做的XiHad项...

如何自学游戏引擎的开发?
答:手机游戏一般需要学习JAVA、C#。而大型的端游则需要学习C++,或者针对开发引擎学习。而合格的程序应该更多针对图形化处理有所了解。游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易...

有关3D游戏引擎的开发
答:一些基本的类库。因为游戏对速度要求比较高,一些类库开发者会重写。资源管理系统。具体模块。如果是联网游戏,就需要网络模块。要有物理检测就得有物理模块。游戏引擎一般模块划分都比较清晰。编辑器。游戏引擎往往需要一个配套的编辑器用来给策划、美术人员使用 优化。游戏引擎速度效率很重要的的。

游戏引擎怎么开发
答:你可以看看Jason Gregory写的Game Engine Architecture(中文《游戏引擎架构》由游戏引擎工程师Milo翻译),这本书帮你从各个角度理解游戏引擎的组织,模块相互之间的关系,和业界常用的优化方法。另外,你需要找到一个切入点,选择一个引擎子系统的方向学习它的知识和编程技巧(一般是从图形引擎出发,学习图...

什么是游戏引擎!怎么制作?
答:一个游戏引擎为了节省成本,或者说为了刚好的质量。用用到许多库。因为自己开发这些库,不浪费时间。因为你做得不出别人的好。别人的是经过时间考验了的。比如opengl,d3d的和显卡打交道的。然后SDL是跨平台的库。还要jpg的图片库,骨骼动画的cal3d.xml的tinyxml.通常还要用到脚本比如lua.还有就是网络...

游戏引擎怎么开发
答:现在的游戏使用的硬件接口基本有两种,一个是DirectX,另一个是OpenGL , OpenGL只是2D 3D图形图像接口,没有其它功能,DirectX则是一个全套的多媒体接口,包括2D 3D图像、视频、音频、网络、输入设备等等,专为游戏制作开发。两个发展都很迅速,不断添加新的功能,并由硬件实现。 游戏引擎的任务就是...

游戏编程怎么编
答:二、选择游戏引擎:Unity是一款功能强大的跨平台游戏引擎,适用于开发2D和3D游戏。它提供了丰富的工具和资源,使开发者能够快速构建高质量的游戏。考虑到我们的游戏类型和目标平台,Unity是一个很好的选择。 三、编程语言:C#是Unity引擎的主要编程语言,它具有语法简洁、功能强大、易于学习等特点。使用C#进行游戏开发可以...

如何自学游戏引擎的开发?
答:首先建议读一下Milo Yip大神翻译的《游戏引擎架构》这本书。游戏开发本身就隶属于IT行业,在这样的日新月异的一个行业中,如果只是在井中望月的话,那么即使你狠精通一门游戏引擎,那么第二门呢?只有在你自己理解了游戏引擎的一个设计架构,设计原理,你才能在后续开发引擎中立于不败之地。这是一...

游戏软件怎么制作开发?
答:3. 开发游戏引擎:游戏引擎是游戏开发的核心部分,它负责处理游戏的图形、物理、音频等方面。可以选择现有的游戏引擎,如Unity、Unreal Engine等,也可以自己开发游戏引擎。4. 编写游戏代码:根据游戏设计文档和游戏引擎,编写游戏的代码,包括游戏逻辑、界面设计、用户输入等方面。5. 制作游戏资源:制作...