今天也要直播魔法,求科学的!

  欢迎来到小妖精Balous的完美游戏教室!

  经过前两周的学习,相信米娜桑已经对状态机有所了解了呢~虽然状态机能够实现几乎所有的人工智能,但是,在实践中,你们有没有发现,自己做出来的怪物很笨呢?比如说,前面明明有一堵墙,但是怪物还是把脸往墙上撞,不会拐弯;又比如游戏的地图比较复杂,怪物追击玩家追到树林里后,玩家只要在树的周围绕圈子,怪物就不知道该怎么继续追击玩家了,因为怪物总是被几棵树挡住去路!

  这样看来,怪物的确很笨呢,因为它们不会在复杂的地形中找到一条正确的道路继续追击玩家,然后,怪物就被玩家给调♀戏了。

  再换个栗子,现在你在玩DOTA2,你正在使用卓尔游侠,现在看来,卓尔游侠并不是AI,因为你作为玩家在操控她,然而,当你用鼠标右键点击地图的一块空白区域时,卓尔游侠就会自己跑过去你点的地方,即使周围有小兵或者树挡住卓尔游侠的前进路线,她还是能够找到一条最近的路线跑到目标地点。用这种方法来分析,即便是玩家操控的游戏角色,它们依然也是人工智能。

  小妖精跟大家举了这两个例子,是为了要引出这节要讲述的话题——AI寻路!

  没错,无论是怪物在复杂地形中追击玩家,还是卓尔游戏能够自动走到目标地点,这些例子都是在解决一个问题,就是AI寻路问题,既然是寻路,肯定就离不开图论,所以,图论基础不好的同学回去翻翻《数据结构》的课本吧。

  然后,小妖精会告诉你,课本上讲的东西根本一无是处,这是赤裸裸的现实,因为学校的教育是培养一些能够参加全国比赛的学生,而不是能够参与项目的学生,如果你打算使用深度优先搜索dfs,广度优先搜索bfs,或者是Dijkstra算法的话,你就等着游戏卡帧吧,没错,因为你使用了毫无用处的算法,导致你的cpu运转不过来!!虽然课本上讲的这些算法在编程竞赛中很有用,但到了实践中却是毫无意义的。可悲的是,学校的评级是按照科研水平来评,所以学校为了让自己的学校更出名,肯定是教你一些竞赛中常用的算法,然后,获得全国一等奖的你就会发现,你连个软件也做不出来。

  不过,小妖精Balous要教大家的,是有实际意义的算法,A*算法,这个算法的目的,是找到从起点到目标点的最短路径,A*比dfs,bfs以及Dijkstra都要好很多,因为A*是有目的性地去寻找路径,而后面三者则是盲目地去试探性寻找。

  因为这章是引言,所以小妖精也不讲太多啦,接下来的课程,Balous将教大家如何创建图,如何使用A*算法。那么,我们下周见咯~~

小妖精的完美游戏教室——人工智能,A*算法,引言的更多相关文章

  1. 小妖精的完美游戏教室——人工智能,A*算法,启发因子篇

    //================================================================//// Copyright (C) 2017 Team Saluk ...

  2. 小妖精的完美游戏教室——人工智能,A*算法,导航网络篇

    //================================================================//// Copyright (C) 2017 Team Saluk ...

  3. 小妖精的完美游戏教室——人工智能,A*算法,结点篇

    //================================================================//// Copyright (C) 2017 Team Saluk ...

  4. 小妖精的完美游戏教室——人工智能,A*算法,实现篇

    //================================================================//// Copyright (C) 2017 Team Saluk ...

  5. 小妖精的完美游戏教室——buff系统

    作者:小妖精Balous,未经作者允许,任何个人与单位不得将此源代码用于商业化项目 #region buff /// <summary> /// 是否魔法免疫,魔法免疫的生物不会受到除自己 ...

  6. 小妖精的完美游戏教室——东方PROJECT,同人,墙

    //================================================================//// Copyright (C) 东方同人社// All Rig ...

  7. 小妖精的完美游戏教室——东方PROJECT,同人,符卡系统

    //================================================================//// Copyright (C) 东方同人社// All Rig ...

  8. 小妖精的完美游戏教室——东方PROJECT,同人,th12灵梦A

    ╮(╯▽╰)╭没办法,小妖精Balous也很讨厌学院化的教育呀,一点意义都没有. 这次就上传东方地灵殿灵梦A逻辑部分的核心代码吧,估计连老师都看不懂.动画部分的代码就不放上来了. //======== ...

  9. 小妖精的完美游戏教室——东方PROJECT,同人,子机

    //================================================================//// Copyright (C)// All Rights Re ...

随机推荐

  1. js-input框中写入的小写小写字母全部转换成大写字母的js代码

    <input type="text" id="blinitials" name="blinitials"  onkeyup=" ...

  2. Code Pages

    https://docs.microsoft.com/en-us/windows/desktop/intl/code-pages Most applications written today han ...

  3. 浅谈String中的==和对象中引用对象类型的==

    @Test public void test02() { StringBuffer sb = new StringBuffer(); sb.append('a'); sb.append(11); Sy ...

  4. 浅谈StringBuffer

    StringBuffer,由名字可以看出,是一个String的缓冲区,也就是说一个类似于String的字符串缓冲区,和String不同的是,它可以被修改,而且是线程安全的.StringBuffer在任 ...

  5. js 字符串跟数组的相互转化

    一:字符串转化为数组 例子: var str = "3:2;2:1"; 要变成 arr= [{ a:"3", b:"2", bol:fals ...

  6. Django 模板继承

    本质上来说,模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载. 让我们通过修改 current_datetime.html 文件,为 current_date ...

  7. Vmware ESXi 的虚拟机的开机自启动

    ESXi 6.7 以前就注意到虚拟机有个菜单[action->autostart]可以用来自启动(物理机开机之后), 可是设置完之后,总是没成功. 今天重新google了,发觉不但虚拟机,整个物 ...

  8. 虚拟机里C盘空间不够 用Macrium Reflect工具克隆

    一个很重要的虚拟机,因为需要装slack, 进而需要装 .NET4.5 , 结果发觉C盘不够了. 只好重新添加了一个80G的虚拟硬盘,然后用 Macrium Reflect工具把原来的C盘和引导分区, ...

  9. 【转】 pthread设置线程的调度策略和优先级

    转自:https://www.cnblogs.com/tianzeng/p/9192706.html 线程的调度有三种策略:SCHED_OTHER.SCHED_RR和SCHED_FIFO.Policy ...

  10. axios和promise

    什么是axios axios is a promise based HTTP client for the browser and node.js Features: Make XMLHttpRequ ...