太空帝国6中文版4系统的AI是不是很低

在游戏开发AI系统 - CSDN博客
在游戏开发AI系统

从今天开始,我为大家讲解开发AI系统,在游戏开发,特别是大型三维网络游戏中,人工智能的开发占有重要的比例。一个游戏的好玩程度跟人工智能部分的开发有很大关系。我们首先学习 一些关于游戏AI方面的基础知识,让大家有个大体的了解,然后我们会结合Unity,做出一些简单的示例来让大家学习如何在unity中制作AI系统。 本节内容可能有些枯燥,这是在网上搜集的关于 AI方面的一些理论知识。大家可以慢慢研究,然后大家可以在网上多找一些资料来学习。
— AI的描述
使得游戏表现出与人的智能行为/ 活动相类似,或者与玩家的思维/感知相符合的特性
— AI的实现
— 技术实现
— 利用充分的领域知识和常识
— 客观世界的运动规律(game physics)
— 利用已有的AI技术
— 融合娱乐性
— 游戏中涉及的AI技术
— 专家系统
— 用知识表示专家的经验,并在此基础上作自动推理
— 案例式推理
— 将输入与数据库中已有的案例进行比较,选取最为相近的案例,其已有的解决方法即为输出
— 有限状态机
— 基于规则的系统,有限个状态连接成一有向图,每一条边称为一个转移
— 游戏中涉及的AI技术1
— 产生式系统
— 包含多个产生式,每一条产生式由条件和动作两部分组成,当产生式的条件满足时,系统就执行相应的动作
— 决策树
— 给定输入,从树的根部开始,将输入与当前结点相比较,选择当前结点的某一个子结点作为下一次比较的对象。当到达树的叶子时,则给出相应的决策
— 搜索方法
— 找到一列动作(或状态转移),使得最终的结果满足某一特定目标
— 游戏中涉及的AI技术2
— 规划系统
— 给定世界的初始状态,以及下一步可能采取的动作的精确定义,找到完成某个特定目标的最优路径
— 一阶谓词逻辑
— 谓词逻辑通过定义“物体”、“属性”、“关系”等对当前场景的状态进行推理
— 情景演算
— 用一阶逻辑计算在给定情景下AI生命的反应
— 游戏中涉及的AI技术3
— 多Agent
— 研究在多个相互竞争相互合作的智能体之间所产生的交互智能行为
— 人工生命
— 多agent系统一种,试图将生命系统中一些普遍规律应用到虚拟世界的人工智能体上
— 群组行为(Flocking)
— 人工生命的一类,研究协同移动技术,例如人工智能体如何在大量的羊群中移动
— 游戏中涉及的AI技术4
— Robotics
— 让机器在自然环境下交互的工作
— 遗传算法
— 直接模拟生物进化过程,通过随机选择、杂交和突变等对程序、算法或者一系列参数进行操作
— 神经网络
— 模拟动物神经系统功能的机器学习方法
— 通过反复调节系统内部中各个神经元之间的连接参数,使得训练得到的系统在大多数情况下作出优或者近似优的反应
— 游戏中涉及的AI技术5
— 模糊逻辑
— 与传统二值(对-错)逻辑不同,模糊逻辑用实数表示物体隶属于某一类的可能性
— 置信网络
— 提供建立不同现象之间内在因果关系的工具,并利用概率理论处理未知的和不完全的知识
— 对当前状态作出判断,并决定下一步可能的动作以及其带来的后果
— GAME AI技术的分类
— 确定型
— 基于领域固定领域知识,模拟简单的固定行为
— 行为型
— 基于行为模式来模拟智能行为
— 战术型
— 策略模拟
— RTS(realtime strategy)
— 其他
特定状态的查找
— 结点 - 包含查找目标
— 终点 - 搜索路径的结束
— 查找空间 - 所有结点的集合
— 目标 - 所要到达的结点
— 经验 - 在一定程度上提示下一步搜索的方向
— 解答路径 - 从起始结点开始,到目标的一条有向路径
启发式搜索
— 定义目标函数,反映拥有的先验知识
&o 估计离目标的距离
&o 估计到达目标的花费
— 用上述估计指导路径的搜索,加快搜索过程
贪婪搜索法
— 永远沿着具有最小目标函数值的路径进行搜索
— 不一定能够找到目标
— 可能得到局部最优解,而不是全局最优
&A*启发搜索
— 考虑到贪婪搜索法不能保证找到最优解
— 改进 - 目标函数由两个部分组成
&o 从当前状态到目标状态的“花费”(估计)
&从初始状态到当前状态的“花费
— 优先队列PQ - 初始为空
— V(一系列三元组(状态,f,回溯指针)集合,表示访问过的结点)- 初始为空
— 将初始结点S置于PQ中,V中放入(S, f(s),NULL)
— 算法:
o 如果V为空,退出程序,没有解
&o 否则,从PQ中取出第一项,记为n
&o 如果n就是目标结点,则搜索结束
&o 否则,产生n的后继结点
— &对n的每一个后继结点n’
&o 计算f’=g(n’)+h(n’)=g(n)+cost(n,n’)+h(n’)
&o 如果n’未被访问过,或者n’曾经被访问过,但是记录的f(n’)&f’,或者n’已经在PQ队列中,但是记录的f(n’)&f’
— 放置/更新n’于优先队列中,使其对应的目标函数值为f’
— 添加(n’, f’, n)至V当中
&o 否则忽略n’
&A*算法性质
— 令h*(n)=从目标到n最小花费真实值.
— 经验h称为可行的当且仅当对所有的状态n, h(n) <=h*(n).
— 可行经验确保永不过估计结点到目标的花费
— 具有可行经验的A*算法一定收敛到最优解
— 比较费内存
— 当不存在解时,算法失败
&o 避免对全空间进行搜索
&o 作双向搜索
&群体行为的模拟
— 物群的行为
o 物群聚集在一起飞行,遇到另一物群时,他们将避开和分散,必要时分成多群
o 分开后,将寻找伙伴,形成新的物群,并最终恢复原来的物群
o 物群能够对付突发行为,能否对不断变化的环境做出实时的反应,并作为一个整体行动
— 物群模拟的简单规则
o 分离(separation):同物群中的其他成员若即若离。
o 列队(alignment):与物群中的其他成员保持相同的航向
o 内聚(cohesion):不掉队
o 避开(avoidance):避开障碍物和天敌
o 生存(survival):必要时进行捕食或者逃脱被吃
— 游戏中的物群行为
o RTS游戏的部队的编队模拟
o RPG游戏中的群体行为模拟
— 行为模拟的实现
o 不纪录任何信息
o 每次将重新评估其环境
— 示例
o 前进方向不确定,但整体行动
o 避开障碍物
o 飞行动物
— 老鹰:飞行速度快,视野广,吃麻雀
— 麻雀:飞行速度一般,视野一般,吃昆虫
— 昆虫:飞行速度慢,视野小,不捕食,能繁殖
o 物群的喂养
— 饿→吃→试图接近猎物
— 昆虫不能灭绝
— 传统逻辑把思维过程绝对化,从而达到精确、严格的目的
— 举例:一个被讨论的对象X,要么属于某一个集合A,要么不属于该集合,两者比居其一,而且两者仅居其一,决不模棱两可
— 对于命题:张三的性格稳重,如何判断这一命题的真假?
— 对于上述的例子,模糊逻辑允许我们用一个[0,1]的实数表示X属于A的隶属程度。传统逻辑即隶属程度只能从0和1之间选择的情况
— 对于“性格稳重”这个模糊概念,我们能够用“一点而也不稳重”、“不太稳重”、“不好说”、“有点稳重”、“挺稳重”、“很稳重”等没有明确界限的词语形容
— 将重心转移至物体属于某个集合的隶属程度上
— 在AI领域的主要应用为
— 决策
— 行为选择
— 输入、输出过滤
符合逻辑操作
— 设A,B,C均为U中的模糊集
– 若对8x2U,均有mc=max(mA(x),mB(x)),则称C为A与B的模糊并
– 若对8x2U,均有mc=min(mA(x),mB(x)),则称C为A与B的模糊交
— 举例:车辆驾驶
— 前提:两辆车之间不能相撞
— 在模糊逻辑中的实现:
o 用两个变量描述每一辆车
– 当前时刻,车与前面一辆车之间的距离d
– 当前时刻与前一时刻距离的差dd
— If dd=0且d=两个车位长,保持现有速度
— If dd&0且d&两个车位长,减慢速度
— If dd&0且d&两个车位长,加快速度
— 简化的人脑模型
o 人脑大概有1012个神经元
o 每一个神经元都能够处理和发送信息
— 神经元的三个主要组成部分:
o 细胞体,神经元新陈代谢的中心
o 树突,接收来自其他神经元的信号
o 轴突,向其他神经元发送信号
— 生物学发现
o 神经元是人脑的基本组成部分
o 如果将神经元看作结点,它们之间的连接看作弧,则这些神经元组成一个稠密连接的图
— 虽然单个神经元的工作过程较简单,当大量神经元连成一个网络并动态运行时,系统是非常复杂的
— McCulloch and Pitts与1943年第一次提出人工神经网络概念
— 一个处理单元将接收的信息x0,x1,L,xn-1通过用W0,W1,L,Wn-1表示互联强度,以点积的形式合成自己的输入,并将输入与以某种方式设定的阈值q相比较,再经某种形式的作用函数f的转换,得到该单元的输出y
— f可以是阶梯函数、线性或者是指数形式的函数
— 神经网络是基于人脑的平行体系结构
— 与多处理器计算机相类似
o 独立处理单元
o 高度互联
o 简单消息传递
o 适应性交互
— 初始化:随机设定各条边的W值
— 给定一对(输入,输出),已有神经网络根据输入计算输出,将其与预计输出相比较,并根据两者之间的差值调整各条边的W值
— 神经网络也可以自动学习,但是相比训练,收敛速度要慢很多
— 对已知样本分类的正确率
— 对未知样本分类的正确率
— 过训练
神经网络应用
— 对于那些传统计算解决不了的问题,神经网络也无法解决
— 神经网络可以简化某些特定问题的解答,例如,从数据中提炼一个模型
— 对于数据形成过程未知或者复杂的问题而言,神经网络能够帮助我们从一定程度上理解内在的规律
神经网络与游戏
— 判断所处的环境
— 决定下一步的动作
— 用于表示积累的经验
AI引擎设计
— AI引擎可以帮助解决很多问题
o 使得游戏角色之间交流更为容易
o 提供实现AI行为的解决方法
o 协助保留每一个错误报告
— 对于行为简单的物体,使用简单的确定性AI技术
— 对于不是主要角色,但是需要一点智能行为的物体,可以对其设定几种模式,并加上一点随机的因素扰动即可
— 对于比较重要的角色,可以使用有限状态机技术,加上另外一些辅助技巧
— 对于最最重要的角色,你需要利用一切可能利用的技术
o 状态驱动,使用条件逻辑、概率、以及经历过的状态等控制状态转移
o 如果状态转移条件满足,物体要能够发生强制性状态转移动作
什么是好的AI
用户觉得游戏角色挺聪明的,感觉到游戏角色的确随着经历而在成长,一层层的揭开面纱,知道最后才恍然大悟
本文已收录于以下专栏:
相关文章推荐
原文链接:
/archives/tag/tensorflow
Deep Q Network是DeepMind最早(2013年)提出来的,是深...
从本节开始我们通过做一个小的游戏,来给大家讲解AI中的巡逻机器人的功能。巡逻机器人是指在游戏中,如果对手没有出现(或者是没有发现敌人)的情况下,巡逻机器人在巡逻区域内自动来回行走,巡逻周围情况。一旦发...
接续上面一篇没写完的东东。
上次提到,行为树可以让代码更加模块化,也可以提高重用性。这次我们就来看看一个行为树框架是什么样的。如果你对行为树比较陌生,可以先浏览一下游戏AI
- 行为树Part1:简介。
关键词在展开之...
Finite State Machine
This is a Deterministic Finite State Machine framework based on chapter 3...
说道NpcAi,这个是个很大的话题,人工智能(Artificial Intelligence) ,英文缩写为AI。
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等...
using UnityE
using System.C
public class DjNPC : MonoBehaviour
//敌人站立状态
什么是MMORPG的AI?
  玩MMORPG的地球人都知道,MMORPG的AI实在是弱智的要死。即使是在WOW这样顶级的游戏中,AI也是有限得掉渣,绝大部分NPC都像一个木桩一样,哪怕是精心设计的...
RPG黑暗之光(4)添加第一个NPC、NGUI实现任务系统
1、添加第一个NPC
2、NGUI实现任务系统
using UnityE
using Sy...
Unity3D  3.4.1
MB525defy   Android 2.2.1
         羽化的第十二篇博客。最近心情挺好,开始看C#了-0- 为...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)拒绝访问 | www.civclub.net | 百度云加速
请打开cookies.
此网站 (www.civclub.net) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3bbaf177f0b9438e-ua98).
重新安装浏览器,或使用别的浏览器

我要回帖

更多关于 太空帝国4 的文章

 

随机推荐