游戏引擎怎么开发?

嗯嗯,游戏引擎发展到今天,已经是一个相对广义的产业化需求的软件系统了。如果细分的话,根据细分维度的不同,会有很多不同的划分。比如按功能可分为物理引擎、渲染引擎、脚本引擎,按平台可分为PC游戏引擎、HTML5游戏引擎、移动游戏引擎,按渲染类别可分为2D引擎、3D引擎。

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

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

渲染:实现画面的显示。

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

音频:实现声音回放处理。

网络:实现联网功能

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

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

调试功能:为开发者测试调试游戏功能、优化性能提供便捷的途径。

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

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

其他功能:Unity如果有服务,可以整合平台数据统计,自带视频广告等功能。

然后逐一简述实现方法,并强调最好参考业内广泛验证的引擎,如Unity;如果想了解更多细节,可以先用主流引擎。

1.渲染:为了跨平台,一般选择跨平台的图形标准库底层,如OpenGL,基于底层库构建上层渲染框架,如Sprite、GUI、3D模型渲染、着色器扩展等。

2.物理:物理引擎对计算性能要求很高,底层功能的测试需要大量的精力,所以通常使用成熟的物理引擎,如Havok、PhysX、Bullet、cannon.js等。

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

4.网络:提供联网功能,根据需要提供打包的、易于使用的TCP、UDP、HTTP等协议的接口。如果连接处理、错误提示、协议的帧格式、序列化和反序列化能处理好方便开发,可以在此基础上提供进一步的规范,比如采用Protobuf作为协议格式。

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

6.支持集成开发环境(IDE):简单易用的可视化开发工具,如拖拽布局、拖拽游戏资源、代码编辑、集成调试和打包功能等。这一块是游戏引擎开发工作量的大头,涉及到用户(游戏开发者)密集使用的交互界面,要尽可能高效易用。一般来说,如果你不是特别有能力,最好采用跨平台的应用开发方案,比如采用电子框架的CocosCreator。

7.调试功能:提供查看FPS、跟踪代码运行、Profile、网络信号模拟、分辨率模拟设置、硬件设备模拟(手机)预览游戏等。建议游戏运行时使用与编辑器相同或大致相同的渲染和资源接口(如Unity),以减少调试和运行结果相差较大的情况。

8.打包发布功能:只需处理能生成相应平台的项目即可打包,比如android平台生成的AndroidStudio项目,ios平台生成的xcode项目。注意资源和代码库的引用关系,配置文件的有效性和一致性,编译速度等。

9.插件扩展功能:人力资源由于时间有限,所以引擎功能一开始就不需要很大很全。整个引擎可以设计成易扩展、易修改的结构,将相应的接口暴露给开发者,从而齐心协力迭代完善游戏引擎。

10.其他功能:这一块可以根据自身发动机的特点添加。比如现在几大主流引擎都有提供官方继承的资源存储、数据统计等服务接口。

真正可用引擎的实现是一个系统复杂的工程,需要考虑的脏活累活很多,平台兼容性、性能、效果、易用性、健壮性、文档编写都需要消耗巨大的精力;

如果对个人知识感兴趣,可以根据以上内容进一步查询相关内容,欢迎随时交流。

想做娱乐引擎,可以随便玩,技术如诗。越逼越蠢。

如果你想创造一个伟大的引擎,请带上我的膝盖。

目前,游戏中使用的硬件接口基本上有两种,一种是DirectX,另一种是OpenGL,OpenGL只是一个2D图形接口,没有其他功能。DirectX是一套完整的多媒体接口,包括2D图像、视频、音频、网络、输入设备等。,是专门为游戏开发的。两者都在快速发展,不断增加新的功能,都是通过硬件来实现的。游戏引擎的任务就是封装这些底层硬件加速接口的细节,为游戏设计者提供完美的接口,实现游戏所需的功能。想写一个引擎,首先要知道引擎是什么样的。可以参考已发布的引擎,包括简单的非商用引擎和强大复杂的商用引擎。我推荐你去看看著名的2D发动机HGE,它非常快而且容易使用。引擎包含源代码。