我想提高自己的技能/尝试一些新的东西,我想从3D开始。我已经阅读了《用C ++在3D中开始编程》,但是我对引擎有疑问:
- 引擎应该做什么?我知道它是3D API(即OpenGL或DirectX)之上的抽象层,但是它到底应该做什么?
我想提高自己的技能/尝试一些新的东西,我想从3D开始。我已经阅读了《用C ++在3D中开始编程》,但是我对引擎有疑问:
Answers:
您说的很对,游戏引擎正在从低级图形API中抽象出来,但是功能完备的游戏引擎的作用更多。
游戏引擎旨在使与游戏开发有关的一切变得容易。它们每个都有自己独特的功能,但通常它们为图形,音频,输入,场景管理,碰撞检测,数学和通用实用程序提供简单的抽象层。有些提供了物理API的包装和插件,有些甚至提供了AI支持(主要限于FSM,寻路和-当前趋势-行为树)。他们中的许多人都支持跨平台功能,并为此感到自豪。
游戏引擎的目的是使用户更轻松地创建游戏,而不必处理从头开始创建游戏的小麻烦,也不必安装一大堆库并为它们编写适合自己的包装器游戏。
有很多引擎,但是要注意图形引擎和游戏引擎之间的区别(例如,Unity是游戏引擎,而Ogre是图形引擎)。
我有关于该主题的两本书,但是它们提供了关于该主题的很好的概述:
David H Eberly的3D游戏引擎架构
游戏编码由Mike McShaffry完成
它们并不是很深入,因为您需要每个组件上的几本书来获得创建完整,专业的游戏引擎所需的知识深度,但是我认为它们很好地解释了这些概念。
如果您是游戏开发者,请不要制造引擎。我向您推荐了以下页面:http : //geometrian.com/programming/tutorials/write-games-not-engines/
引擎是一件棘手的事情。如果编写大量游戏,一段时间后您会发现您有很多可重复使用的代码,您可以使用它们来制作自己的个人引擎来帮助您。而且,拥有许多(完整的)游戏比单引擎要令人印象深刻。
希望能有所帮助。
射线
添加到Ray的答案中:引擎(游戏,图形,音频等)不仅使与底层API的交互更加容易,而且实现了特定于游戏的功能,例如:阴影模型,3D声音。
专门用于游戏引擎:它们管理游戏对象,资源(内存,线程,所有其他引擎)以及模块间通信。它们提供了游戏的结构,可伸缩性和灵活性,这对于任何不重要的项目都是必不可少的。