《游戏人工智能》期末考试试卷
考试时间: 120分钟 总分: 100分 考试形式: 闭卷

单项选择题(每题2分,共20分)
-
以下哪项是游戏AI设计的核心目标? A. 让AI玩家战胜人类玩家 B. 创造一个具有挑战性但公平且有趣的对手 C. 使用最复杂的算法 D. 模拟真实世界100%的物理规律
-
在游戏AI中,“状态机”(State Machine)最常用于解决什么问题? A. 路径规划 B. 角色行为逻辑和决策 C. 群体行为模拟 D. 环境光照计算
-
A*算法是一种常用的寻路算法,其评估函数
f(n) = g(n) + h(n)中,h(n)代表什么? A. 从起点到节点n的实际移动代价 B. 从节点n到终点的预估移动代价(启发式函数) C. 从起点到终点的总代价 D. 节点n的权重 -
以下哪个寻路算法最适合处理动态变化的地图,如被玩家临时摧毁的墙壁? A. Dijkstra算法 B. A算法 C. D Lite算法 D. 流场寻路
(图片来源网络,侵删) -
“行为树”(Behavior Tree)相比传统状态机的最大优势是什么? A. 代码执行速度更快 B. 能够更直观地处理复杂、嵌套的决策逻辑 C. 不需要任何编程知识 D. 只能用于简单的行为控制
-
在行为树中,
Selector(选择器)节点的执行逻辑是? A. 按顺序执行所有子节点,直到有一个成功 B. 按顺序执行所有子节点,直到有一个失败 C. 随机选择一个子节点执行 D. 并行执行所有子节点 -
“模糊逻辑”(Fuzzy Logic)被引入游戏AI的主要目的是? A. 提高计算性能 B. 处理不确定性和模糊的输入,使AI决策更人性化 C. 替代所有其他AI技术 D. 用于图形渲染
-
以下哪种技术不属于“群体智能”(Swarm Intelligence)的范畴? A. 鸟群飞行模拟 B. 蚁群觅食算法 C. 遗传算法 D. 粒子系统
(图片来源网络,侵删) -
在《Last of Us》等游戏中,AI敌人会根据玩家的行为(如潜行、突袭、呼叫援军)动态调整其战术,这种AI技术最接近于? A. 静态状态机 B. 目标导向行动 C. 纯粹的随机行为 D. 脚本事件
-
以下哪项是游戏AI设计师在进行AI设计时最不需要考虑的因素? A. 性能开销 B. 玩家的游戏体验 C. 算法的学术创新性 D. 游戏的类型和风格
判断题(每题2分,共10分)
- 游戏AI的目标永远是模拟真实世界的智能,即使这会让游戏变得无趣。( 错误 )
- A*算法在启发式函数
h(n)满足“可接纳性”(即h(n)永远不大于实际代价)时,能保证找到最短路径。( 正确 ) - 行为树的节点一旦被选中执行,就必须执行完毕,不能中途停止。( 错误 )
- 在《F.E.A.R.》中,敌人的AI能够利用掩体、协同作战,这主要得益于其出色的行为树和目标导向行动系统。( 正确 )
- 强化学习是一种让AI通过“试错”与环境交互来学习最优策略的方法,非常适合用于训练游戏中的非玩家角色。( 正确 )
简答题(每题10分,共30分)
-
请解释“游戏AI的幻觉”(The Illusion of Intelligence)这一概念,并举例说明游戏开发者是如何利用“作弊”或“捷径”来创造这种幻觉的。
参考答案: “游戏AI的幻觉”指的是AI系统并不需要拥有真正的、通用的人工智能,只需要在玩家感知的范围内表现得足够智能、有目的性和不可预测即可,其核心是“在特定情境下,让玩家相信AI是聪明的”,而非追求全局最优。
开发者常用的“作弊”或捷径包括:
- 信息优势: AI可以“看到”或“听到”玩家,即使没有物理上的视线或声音连接,在《使命召唤》中,敌人有时会立即知道玩家的位置,即使玩家在背后。
- 反应速度: AI的反应速度可以超越人类极限,实现瞬间瞄准和射击,以弥补其策略上的不足。
- 完美信息: AI可以知道玩家的所有状态(如生命值、弹药、装备),从而做出针对性决策。
- 非物理移动: AI可以瞬间传送到有利位置,或者无视某些物理规则,以实现战术目标。
- 资源优势: AI可以拥有无限的弹药或资源,使其行为更具持续性。
-
请详细描述行为树中三种最核心的节点类型:
Composite(复合节点)、Decorator(装饰器节点)和Leaf(叶子节点)的功能,并各举一个例子。参考答案:
- Composite(复合节点): 作为控制流节点,管理其子节点的执行顺序和方式,它们不执行具体行为,只决定逻辑。
- 例子 - Selector(选择器): 按顺序执行其子节点,只要有一个子节点返回成功,Selector就返回成功并停止执行,如果所有子节点都失败,才返回失败,常用于“尝试多种可能”的场景,如“看到敌人 -> 攻击,否则看到弹药 -> 拾取,否则巡逻”。
- Decorator(装饰器节点): 包裹在单个子节点外部,用于修改该子节点的返回结果或执行方式,它们是“一元”节点。
- 例子 - Inverter(反转器): 将其子节点的返回结果取反,如果子节点返回成功,它返回失败;如果子节点返回失败,它返回成功,常用于“如果不满足条件则执行”的场景,如“如果没有在冷却时间,则使用技能”。
- Leaf(叶子节点): 行为树的“叶子”,是执行具体操作或进行条件判断的节点,它们没有子节点。
- 例子 - Action(行动节点): 执行一个具体动作,如“播放攻击动画”、“移动到指定位置”、“开火”等,它会返回执行成功或失败。
- 例子 - Condition(条件节点): 检查一个布尔条件,如“敌人是否在视野内?”、“生命值是否低于20%?”,它返回成功或失败。
- Composite(复合节点): 作为控制流节点,管理其子节点的执行顺序和方式,它们不执行具体行为,只决定逻辑。
-
试比较“状态机”和“行为树”在游戏AI设计中的优缺点。
参考答案: 状态机:
- 优点:
- 概念简单直观: 状态和转换的模型非常容易理解和实现。
- 调试方便: 状态和转换关系清晰,易于追踪AI的行为流程。
- 适合简单、明确的行为: 对于只有几个状态的AI(如巡逻、警戒、追击、攻击),状态机非常高效。
- 缺点:
- 状态爆炸: 当行为逻辑变得复杂时,状态数量会急剧增加,状态之间的转换关系会变得异常复杂,难以管理和维护(“状态爆炸”问题)。
- 代码耦合度高: 每个状态通常包含大量的逻辑代码,修改一个状态可能会影响其他状态。
- 扩展性差: 添加新行为或修改现有行为通常需要创建新的状态或修改现有转换,灵活性不足。
行为树:
- 优点:
- 模块化与重用: 节点是独立的模块,可以在不同的行为树中重用,大大提高了开发效率。
- 逻辑清晰,易于扩展: 通过组合不同的节点,可以构建出复杂的行为逻辑,而不会像状态机那样陷入混乱,添加新功能只需添加新节点或组合现有节点。
- 数据驱动: 行为树的结构(特别是叶子节点的参数)通常可以通过数据文件配置,无需重新编译代码,便于设计师和程序员协作。
- 缺点:
- 学习曲线: 对于初学者,理解行为树的执行流程和节点组合方式可能比状态机更难。
- 调试复杂性: 复杂的行为树可能难以调试,因为一个行为是多个节点共同作用的结果。
- 潜在的性能开销: 每一帧都需要从根节点开始遍历树,对于极其庞大的树可能会有轻微的性能开销,但现代引擎已优化得很好。
- 优点:
分析与设计题(共40分)
背景: 你正在为一款第三人称射击游戏设计一个名为“掠夺者”的精英敌人AI,这个AI需要表现出以下能力:
- 在没有发现玩家时,它会定期在巡逻路线上巡逻。
- 当它发现玩家后,它会进入警戒状态,并尝试呼叫增援。
- 在警戒状态下,它会利用掩体躲避玩家的攻击,并伺机反击。
- 如果玩家距离很近,它会放弃掩体,进行近战攻击。
- 如果玩家的生命值很低,它会优先使用一种特殊的“终结”技能。
- 如果长时间没有找到玩家,它会放弃搜索,返回巡逻状态。
请根据以上需求,完成以下任务:
-
(15分)绘制一个简化的状态机图,用于描述“掠夺者”AI的主要行为状态转换,请标明每个状态和触发状态转换的条件。
参考答案: 状态机图应包含以下状态和转换:
- 状态: 巡逻、警戒、追击、近战、终结、呼叫增援。
- 转换:
- 巡警 -> 警戒:条件:发现玩家。
- 警戒 -> 追击:条件:玩家距离中等,且呼叫增援成功/失败后。
- 警戒 -> 近战:条件:玩家距离很近。
- 警戒 -> 终结:条件:玩家生命值很低。
- 警戒 -> 呼叫增援:条件:发现玩家且满足呼叫增援的条件(如血量健康)。
- 警戒 -> 巡逻:条件:长时间未发现玩家。
- 追击 -> 警戒:条件:失去玩家视线或玩家进入掩体。
- 追击 -> 近战:条件:玩家距离很近。
- 近战 -> 追击:条件:玩家与拉开距离。
- 终结 -> 巡逻:条件:终结技能执行完毕(无论成功与否)。
- (其他可能的转换也应根据逻辑补充)
-
(25分)设计一个简化版的行为树片段,用于实现“掠夺者”AI在警戒状态下的核心逻辑(呼叫增援、利用掩体、反击、近战攻击),请使用
Selector,Sequence,Condition,Action等节点类型,并清晰地标注每个节点的功能。参考答案: 这是一个典型的警戒状态行为树,顶层是一个
Selector,表示AI会尝试多种可能性。[Root: Selector] | +-- [Sequence: 终结判定] | | | +-- [Condition: 玩家生命值 < 20%?] | | | +-- [Action: 执行终结技能] | +-- [Sequence: 近战攻击] | | | +-- [Condition: 玩家距离 < 2米?] | | | +-- [Action: 冲向玩家并进行近战攻击] | +-- [Sequence: 掩体与反击] | | | +-- [Condition: 玩家是否在视野内?] | | | +-- [Selector: 行动选择] | | | +-- [Sequence: 利用掩体] | | | | | +-- [Action: 寻找最近的掩体] | | | | | +-- [Action: 移动到掩体后方] | | | +-- [Sequence: 伺机反击] | | | +-- [Condition: 玩家是否开火/暴露位置?] | | | +-- [Action: 瞄准并射击] | +-- [Sequence: 呼叫增援] | | | +-- [Condition: 我方增援是否可用?] | | | +-- [Action: 呼叫增援]逻辑解释:
- 顶层Selector: AI会依次尝试四个行为序列,一旦其中一个序列成功执行,本轮循环结束。
- 终结判定: 优先级最高,如果满足条件,立即执行终结技能。
- 近战攻击: 如果玩家靠得很近,放弃远程交战,直接进行近战。
- 掩体与反击: 如果玩家在视野内但距离较远,这是一个
Selector,AI会选择是先找掩体还是直接反击。寻掩体序列会先找掩体再移动,伺机反击序列会等待玩家露出破绽。 - 呼叫增援: 如果以上都不满足(比如玩家在掩体后,AI找不到机会),AI可能会呼叫增援来改变局势。
标签: 游戏人工智能期末考试重点 游戏AI期末复习重点 游戏人工智能考点总结