热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

游戏开发中的人工智能复习指南

本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。
游戏开发中的人工智能复习指南

本文档仅供个人复习使用,如需转载,请注明出处:http://blog.csdn.net/hcbbt/article/details/42815479


参考教材:《游戏开发中的人工智能》




关键知识点



  1. 移动算法

    • Bresenham算法用于直线绘制,拦截算法用于目标追踪。
      // Bresenham算法示例
      if (deltaCol > deltaRow) {
      fraction = deltaRow * 2 - deltaCol;
      while (nextCol != endCol) {
      if (fraction >= 0) {
      nextRow += stepRow;
      fraction -= deltaCol;
      }
      nextCol += stepCol;
      fraction += deltaRow;
      pathRow[currentStep] = nextRow;
      pathCol[currentStep] = nextCol;
      currentStep++;
      }
      } else {
      fraction = deltaCol * 2 - deltaRow;
      while (nextRow != endRow) {
      if (fraction >= 0) {
      nextCol += stepCol;
      fraction -= deltaRow;
      }
      nextRow += stepRow;
      fraction += deltaCol;
      pathRow[currentStep] = nextRow;
      pathCol[currentStep] = nextCol;
      currentStep++;
      }
      }

      // 拦截算法示例
      void DoIntercept() {
      Vector u, v;
      bool left = false, right = false;
      Vector Vr = Prey.vVelocity - Predator.vVelocity;
      Vector Sr = Prey.vPosition - Predator.vPosition;
      double tc = Sr.Magnitude() / Vr.Magnitude();
      Vector St = Prey.vPosition + (Prey.vVelocity * tc);
      u = VRotate2D(-Predator.fOrientation, (St - Predator.vPosition));
      u.Normalize();
      if (u.x <-_TOL) left = true;
      else if (u.x > _TOL) right = true;
      Predator.SetThrusters(left, right);
      }


    • 移动模式包括矩形、巡逻和基于物理模拟的移动。



  2. 群聚行为

    • Reynolds群聚算法的核心在于凝聚、对齐和分隔规则。

    • 邻近单位的数量由视野角度和视野半径决定。

    • 避障策略涉及在单位前方设置虚拟触角,检测到障碍物时调整方向。

    • 领头者机制用于引导群体移动。



  3. 势函数

    • Lenard-Jones势函数用于模拟吸引和排斥力。U = - A / (r^n) + B / (r^m)

    • 导数形式为:F = - nA / (r^(n+1)) + nB / (r^(m+1))

    • A、B分别代表引力和斥力的强度,n、m为衰减指数。

    • 应用场景包括追逐、闪躲、避障和群集。



  4. 路径寻找

    • 基本路径寻找方法(略)

    • 随机移动避障的优势在于灵活性。

    • 绕行障碍物的技术包括线段绕行和视线绕行。

    • 面包屑算法通过记录玩家位置并跟随足迹实现导航。

    • 沿道路行走根据权重选择路径。

    • 航点寻径利用节点表进行路径规划。



  5. A*算法

    • A*算法结合了广度优先搜索和优先队列,适用于复杂的路径规划。

    • 地形成本影响路径选择。

    • 影响力映射用于动态调整路径成本。



  6. 脚本AI

    • 脚本语言简化了特定任务的编程。

    • 脚本AI由语言和引擎组成。

    • 堆栈机是脚本语言虚拟机的基本形式,包括虚拟机、堆栈和指令指针。

    • 实例展示了如何描述属性、行为和事件。



  7. 有限状态机(FSM)

    • FSM是一种行为模型,由状态、转换和动作组成。

    • 状态转换通过条件判断来实现。

    • FSM可以看作是有向图。

    • 状态与转移函数通常通过switch语句实现。



  8. 模糊逻辑

    • 模糊逻辑处理不确定性和模糊性,使用[0,1]区间上的隶属度函数。

    • 模糊化、模糊规则生成和反模糊化是模糊逻辑的主要步骤。

    • 模糊逻辑与布尔逻辑的区别在于运算规则、隶属函数和模糊公理。

    • 反模糊化方法包括寻找几何中心和单值输出隶属度函数。



  9. 规则式AI

    • 规则式AI是一组if-then规则,用于推理和决策。

    • 规则系统由工作记忆和规则记忆组成。

    • 演绎法通过匹配规则和事实来解决问题。

    • 归纳法则通过匹配结果来推导规则。



  10. 概率论与贝叶斯技术

    • 概率论基础包括古典概率和贝叶斯网络。

    • 贝叶斯网络由网络结构和条件概率表组成,用于表示随机变量之间的关系。

    • 先验概率、后验概率和条件概率是贝叶斯分析的关键概念。

    • 贝叶斯公式用于更新概率估计。

    • 推理方法包括因果链、预测推理、共通成因网络和共通结果网络。

    • 预测和诊断算法用于计算特定节点的概率。



  11. 神经网络

    • 神经网络模拟人脑的工作方式,具有非线性逼近、鲁棒性和并行处理能力。

    • 前馈神经网络通过权重调整和激活函数进行学习。

    • 监督学习和非监督学习是两种主要的学习方式。

    • 训练过程包括权重初始化、前向传播、误差计算和权重调整。

    • 反向传播算法通过梯度下降法最小化误差。



  12. 遗传算法

    • 遗传算法模拟自然选择过程,通过选择、交叉和变异生成新的解决方案。

    • 种群、个体、基因和染色体是遗传算法的基本概念。

    • 轮盘赌算法是一种常见的选择方法。

    • 简单遗传算法通过迭代过程逐步优化解决方案。




推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 在Windows系统上安装VMware Workstation 2022的详细步骤
    本文将详细介绍如何在Windows系统上安装VMware Workstation 2022。包括从官方网站下载软件、选择合适的版本以及安装过程中的关键步骤。此外,还将提供一些激活密钥供参考。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
author-avatar
佛祖上帝真主保佑我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有