游戏引擎

概况

游戏引擎提供一系列可视化开发工具和可重用组件。这些工具通过与开发环境进行集成，方便开发者简单、快速进行数据驱动方式的游戏开发。为了提高游戏开发人员的开发效率，引擎开发者会开发出大量的游戏所需要的软件组件。大多数引擎集成了图形、声音、物理和人工智能等功能部件。游戏引擎会被称为“中间件”，因为它们可以提供灵活和重用平台，向游戏开发者提供所需要的全部核心功能，从而节省大量的游戏开发费用，降低开发的复杂性，缩短游戏的上市时间，所有这些对于高竞争性的游戏产业来说都是关键因素。诸如虚幻系列引擎、Unity3D、Frostbite Engine、zerodin引擎、Doom3引擎、CryENGINE、3DGame Studio、RenderWare、Gamebryo、Virtools以及Source引擎等引擎。
与其它中间件解决方案一样，游戏引擎通常提供平台抽象层，实现同一款游戏可以在各种平台上运行，包括游戏机和个人电脑，而只需要改动少量的源代码。一般来说，游戏引擎均设计成基于组件的架构，方便进行特定子系统的替换或者添加新的引擎中间件（通常成本较高）从而实现功能的扩展。比如Havok物理引擎、Miles Sound System声音引擎和Bink图形引擎等。一些游戏引擎如RenderWare引擎由一些松耦合的游戏中间件组成，可以根据需要定制出游戏引擎。通过组件技术，可以实现游戏引擎的扩展性，而扩展性通常是游戏引擎优先考虑的特性。游戏引擎经常会应用于交互应用的实时图像显示，比如营销演示、建筑可视化、训练模拟、环境建模。
引擎作为一个中间层，他能够将同一个游戏表现在不同的游戏平台之上，诸如：个人电脑、PlayStation、PlayStation 2、PlayStation 3、Xbox、Xbox 360、Wii和任天堂游戏机。一些游戏引擎通常被设计为部分组件可以替换或增加新组件，从而增强引擎的表现能力。当然这样的引擎也会更昂贵。可用于增加功能的组件有用于物理计算的Havok，处理声音的FMOD，加快渲染速度的SpeedTree等。一些引擎直接设计为组件分离，用户根据需要自己组装引擎组件比如RenderWare引擎。但这样的设计给引擎的开发带来了更高的难度，因为设计者要更多考虑各组件之间的协调问题。
一些游戏引擎只包含实时三维渲染能力，不提供其它游戏开发功能。这些引擎需要游戏开发者自行开发所需功能，或者集成其他现有的游戏组件。这此引擎通常被称做“图像引擎”、“渲染引擎”或者“三维引擎”，而非“游戏引擎”。这个术语的定义已经有些模糊，因为很多特征明显的三维游戏引擎被简称为“三维引擎”。一些图像引擎如：Genesis3D、Irrlicht、OGRE、RealmForge、Truevision3D和Vision引擎。现代游戏或图像引擎通常提供场景图形结构，该结构采用面向对象的方式表示三维游戏世界，方便进行游戏设计和高效渲染虚拟世界。

硬件概念

3D引擎的渲染系统通常建立在一套高级图像API之上，诸如Direct3D或OpenGL，这些API封装了GPU和显卡的部分功能。级别低一点的如DirectX、SDL和OpenAL也经常使用，他们提供对其他硬件设备的独立支持，诸如输入设备（鼠标、键盘、控制杆）、网卡、声卡。在硬件加速图形卡出现以前，开发者使用软件渲染。现在软件渲染依然被广泛用于非及时图像的渲染，或者是用户的硬件设备不支持硬件渲染。

中间层

一些引擎开发者以开发整个游戏引擎而著称，他们试图开发一个具有所有游戏元素的引擎，包括图像、声音、物理、人工智能。比如Gamebryo和RenderWare就是这样的引擎。
也有一些开发者只专注于开发引擎的某一部分，但他们取得的成就往往比全功能引擎还高。SpeedTree就是一个很好的例子，他适用于大规模植被的渲染，被使用在Playstation 3、Xbox 360，微软开发的一些RPG，以及上古卷轴4：遗忘。
一些引擎提供完整的源代码，其他的只提供一个经过封装的API接口，使用者用过调用DLL文件来使用这个引擎。还有一些引擎将引擎二进制包和源代码划分开来，前者被免费授权使用，而后者则需要高额的费用来购买使用授权。

开发者

游戏引擎开发是一个比较热门的职业，他强调学科间的相互合作，诸如几何学、色彩理论、电脑程序等，主要集中在视觉科学领域。一些公司甚至以开发引擎为乐趣和技术追求，而不是用来卖钱。比如godot和Blender就是知名免费的开放源代码多平台游戏引擎。