小妖精的完美游戏教室——人工智能,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 ...
随机推荐
- jackson中@JsonProperty、@JsonIgnore等常用注解总结
本文为博主原创,未经允许不得转载: 最近用的比较多,把json相关的知识点都总结一下,jackjson的注解使用比较频繁, jackson的maven依赖 <dependency> < ...
- Leetcode480-Binary Tree Paths-Easy
480. Binary Tree Paths Given a binary tree, return all root-to-leaf paths. Example Example 1: Input: ...
- R语言-默认镜像设置
问题1:如何设置默认镜像 你希望下载某些R包,因此希望设定默认的CRAN网站镜像,这样R每次下载时不需要你选择镜像. 解决方案 该方案要求用户R系统中包含一个.Rprofile文件,如方法3.16描述 ...
- App自动更新(DownloadManager下载器)
一.开门见山 代码: object AppUpdateManager { const val APP_UPDATE_APK = "update.apk" private var b ...
- js设置、读取、删除cookie
设置cookie: function setCookie(oJson , time){ var data = new Date( new Date().getTime() + time*24*60*6 ...
- Session 和 Cookie的区别
2019-03-26 18:16:47 一.区别概论 Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群.数据库.文件中:Cookie是客户端保存用户信息的一种机制 ...
- 盘符格式转换成NTFS格式
点击屏幕左下角“开始”,找到运行,在其中输入:cmd,确定,打开“命令提示符”; 在命令提示符下输入: convert X:/FS:NTFS(其中X是你要转换的盘符盘符). 执行后,重新启动电脑 这样 ...
- border——边框属性
一.第一层次(复合样式) <style> p.one{border:1px solid black;} /*边框:1像素 实心的 黑色:*/ </style> <body ...
- CST时区,MYSQL与JAVA-WEB服务器时间相差13个小时的问题
最近倒腾了一台阿里云主机,打算在上面装点自己的应用.使用docker安装了安装mysql后,发现数据库的存储的时间与java-web应用的时间差8个小时,初步怀疑是docker容器时区的问题.经过一系 ...
- 数据的双向绑定 Angular JS之开端篇
接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 ...