实现游戏开发中这一目标的传统方法是为游戏系统使用数据驱动的体系结构。
从本质上讲,这意味着代码并未实现具有明确定义其射程/伤害/穿透值的特定类型的武器(枪支),而是填充了射程武器的一般概念(射程/伤害/穿透...)。从外部(到代码)数据源。这种外部来源可以从磁盘读取的可解析(也许是XML)文件到通过游戏引擎本身内部或外部工具生成的二进制文件或数据库元素不等。
定义类似敌人的东西,AI系统可能设计为支持一些通用行为(攻击性,防御性,支持性,怯)性),然后由数据驱动元素对其进行调整。
我的新敌人,从具有攻击性的基本AI行为开始,这些行为具有数据驱动的值:-忽略玩家>我的等级+ X-追捕超过生成点X个单位的玩家-当健康<X时,逃跑-范围优先级-近战优先级(当玩家离得太近时)
更为复杂的数据驱动方案可能允许定义特定数据点(事件),在这些数据点中,AI状态会转换(有限状态机)到另一个状态(甚至可能会转换到N个其他状态之一),从而允许用户定义一个复杂的行为层次。
当然,所有这些工作不只是对行为进行明确编码,还要做很多工作,但这是一个有趣的挑战,要使用户能够在不修改源代码的情况下产生内容。
有一些奖励积分可以实现:
- 是否可以在不重新启动应用程序的情况下动态更新数据并使更改反映在游戏引擎中
- 如果您在数据上创建用户友好的UI,从而允许用户使用界面与数据进行交互,而不是直接编辑文本(xml或其他文件)
对于面向更多技术人群的教程游戏,大部分工作都在设计好的类/对象中,这些类/对象公开了供用户扩展的干净接口,这些接口又可以由数据驱动。