小妖精的完美游戏教室——人工智能,A*算法,引言
今天也要直播魔法,求科学的!
欢迎来到小妖精Balous的完美游戏教室!
经过前两周的学习,相信米娜桑已经对状态机有所了解了呢~虽然状态机能够实现几乎所有的人工智能,但是,在实践中,你们有没有发现,自己做出来的怪物很笨呢?比如说,前面明明有一堵墙,但是怪物还是把脸往墙上撞,不会拐弯;又比如游戏的地图比较复杂,怪物追击玩家追到树林里后,玩家只要在树的周围绕圈子,怪物就不知道该怎么继续追击玩家了,因为怪物总是被几棵树挡住去路!
这样看来,怪物的确很笨呢,因为它们不会在复杂的地形中找到一条正确的道路继续追击玩家,然后,怪物就被玩家给调♀戏了。
再换个栗子,现在你在玩DOTA2,你正在使用卓尔游侠,现在看来,卓尔游侠并不是AI,因为你作为玩家在操控她,然而,当你用鼠标右键点击地图的一块空白区域时,卓尔游侠就会自己跑过去你点的地方,即使周围有小兵或者树挡住卓尔游侠的前进路线,她还是能够找到一条最近的路线跑到目标地点。用这种方法来分析,即便是玩家操控的游戏角色,它们依然也是人工智能。
小妖精跟大家举了这两个例子,是为了要引出这节要讲述的话题——AI寻路!
没错,无论是怪物在复杂地形中追击玩家,还是卓尔游戏能够自动走到目标地点,这些例子都是在解决一个问题,就是AI寻路问题,既然是寻路,肯定就离不开图论,所以,图论基础不好的同学回去翻翻《数据结构》的课本吧。
然后,小妖精会告诉你,课本上讲的东西根本一无是处,这是赤裸裸的现实,因为学校的教育是培养一些能够参加全国比赛的学生,而不是能够参与项目的学生,如果你打算使用深度优先搜索dfs,广度优先搜索bfs,或者是Dijkstra算法的话,你就等着游戏卡帧吧,没错,因为你使用了毫无用处的算法,导致你的cpu运转不过来!!虽然课本上讲的这些算法在编程竞赛中很有用,但到了实践中却是毫无意义的。可悲的是,学校的评级是按照科研水平来评,所以学校为了让自己的学校更出名,肯定是教你一些竞赛中常用的算法,然后,获得全国一等奖的你就会发现,你连个软件也做不出来。
不过,小妖精Balous要教大家的,是有实际意义的算法,A*算法,这个算法的目的,是找到从起点到目标点的最短路径,A*比dfs,bfs以及Dijkstra都要好很多,因为A*是有目的性地去寻找路径,而后面三者则是盲目地去试探性寻找。
因为这章是引言,所以小妖精也不讲太多啦,接下来的课程,Balous将教大家如何创建图,如何使用A*算法。那么,我们下周见咯~~
小妖精的完美游戏教室——人工智能,A*算法,引言的更多相关文章
- 小妖精的完美游戏教室——人工智能,A*算法,启发因子篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- 小妖精的完美游戏教室——人工智能,A*算法,导航网络篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- 小妖精的完美游戏教室——人工智能,A*算法,结点篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- 小妖精的完美游戏教室——人工智能,A*算法,实现篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- 小妖精的完美游戏教室——buff系统
作者:小妖精Balous,未经作者允许,任何个人与单位不得将此源代码用于商业化项目 #region buff /// <summary> /// 是否魔法免疫,魔法免疫的生物不会受到除自己 ...
- 小妖精的完美游戏教室——东方PROJECT,同人,墙
//================================================================//// Copyright (C) 东方同人社// All Rig ...
- 小妖精的完美游戏教室——东方PROJECT,同人,符卡系统
//================================================================//// Copyright (C) 东方同人社// All Rig ...
- 小妖精的完美游戏教室——东方PROJECT,同人,th12灵梦A
╮(╯▽╰)╭没办法,小妖精Balous也很讨厌学院化的教育呀,一点意义都没有. 这次就上传东方地灵殿灵梦A逻辑部分的核心代码吧,估计连老师都看不懂.动画部分的代码就不放上来了. //======== ...
- 小妖精的完美游戏教室——东方PROJECT,同人,子机
//================================================================//// Copyright (C)// All Rights Re ...
随机推荐
- kindeditor4.1.11的使用方法
在引入某个外部框架/功能件的 时候, 通常是 先引入css, 后引入js. css的必要属性是rel和href, js的必要属性是charset和src. js都是用javascript的,所以 cs ...
- node:express:error---填坑之路
express版本4.0之后需要安装的东西 npm install -g express npm install -g express-generator jade转换成ejs(修改为html引擎,打 ...
- lnmp或者lamp环境一键安装
参考网址:https://lnmp.org/install.html 下载并安装LNMP一键安装包: 您可以选择使用下载版(推荐美国及海外VPS或空间较小用户使用)或者完整版(推荐国内VPS使用,国内 ...
- beyond compare 免费版
链接:https://pan.baidu.com/s/10lPUEpFPZU76HRbJfbZ2ZA 提取码:r2go
- npm 是干什么的
网上的 npm 教程主要都在讲怎么安装.配置和使用 npm,却不告诉新人「为什么要使用 npm」.今天我就来讲讲这个话题. 本文目标读者是「不太了解 npm 的新人」,大神您别看了,不然又说我啰嗦了 ...
- .gitignore无效
有个别文件不想跟踪,比如pycharm的配置文件. 但是这个文件已经被git跟踪的情况下,再加入.gitignore是无效的. 只需要: git rm --cached .idea/workspace ...
- 3、VNC
VNC(Virtual Network Computing,虚拟网络计算机) VNC分为两部分组成:VNC server 和 VNC viewer VNC安装 1.yum install tigerv ...
- 『TensorFlow』读书笔记_多层感知机
多层感知机 输入->线性变换->Relu激活->线性变换->Softmax分类 多层感知机将mnist的结果提升到了98%左右的水平 知识点 过拟合:采用dropout解决,本 ...
- Python—全局变量、局部变量、匿名函数
局部变量和全局变量 college1 = 'JMU' #全局变量 def change_name(name): college1 = 'LiGong' #局部变量,此函数是其作用域 # global ...
- 微信https抓包,不同安卓版本、微信版本对证书的要求
安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统提供的证书 安卓系统 7.0 以上版本,微信 7.0 以下版本,微信会信任系统提供的证书 安卓系统 7.0 以上版本,微信 7.0 以上版本, ...