在行业早期的时候,一款游戏基本上都是从零开始创建的。有些代码是从以前的项目中拖出来的,有些代码被重新编写和重用,但大多数都是新的。少数公司使用相同的基本代码来编写多款游戏,前提是游戏的风格和类型相似。例如,LucasArts(2012年被迪士尼收购,2013年倒闭)的 SCUMM 引擎就是一个逐渐发展的游戏引擎,用于支持许多点击式冒险游戏,比如《古墓丽影》系列、《印第安纳琼斯》系列。
后来随着时代的发展,游戏引擎变得无处不在,逐渐地成为构建多个游戏的一致技术平台。底层的例程,如与操作系统对话、加载纹理、模型文件格式等等;在所有的游戏中都是共享的,有一组工具可用于广泛的游戏,如2D图形、3D图形、网络,最后提供接口来添加特定于游戏的代码。最初这些引擎属于个别公司专用,但随着时间的推移,只有非常大的公司能够负担得起保持更新他们的引擎,对于大多数开发人员来说,使用授权商业引擎变得很常见。
AI 的发展方式也发生了变化。最初,AI 是为每一款游戏编写的,有时也为每个角色编写。现在有一种日益增长的趋势,就是将一般的AI例程构建到游戏引擎中,以商业附加组件的形式获得许可,或者由开发者自己创建并重复使用。这允许关卡编辑、游戏设计师或技术美工设计单个角色,引擎结构是固定的,每个角色的 AI 以适当的方式组合组件。本书描述的算法通过图形前端向非专业人员公开,例如,拖动框和线允许任何人创建有限状态机或行为树。
因此,构建一个游戏 AI 引擎需要构建能够轻松重用、组合和以有趣的方式应用的工具。为了支持这一点,我们需要一种能够在多