《Unity3D高级编程之进阶主程》第八章 AI(3) 非典型性AI

前面讲了状态机和行为树在AI中的运用,在实际开发过程中,特别是一些在游戏行业做过5-10年左右的很多人似乎似乎已经习惯了用这些固定的工具去写AI逻辑,一想到游戏AI就固定思维的认为,就用状态机去写,或者说就用行为树去写。

思维跳不出这些‘工具’,我们就成不了大师。大师是什么,是能将‘剑’运用到最高境界的人,手里‘无剑’而心中有剑,是他们的至高境界。万事万物都是同一个道理,‘技术’就像剑术,在练习过程中,都会经过几个阶段,到底具体有哪些阶段每个人都不一样,我能确定的是,‘识剑’是第一个阶段,认识剑是怎么样的,或者说认识‘技术’是个怎样的东西用在哪里。而‘用剑’是另一个阶段,如何用剑或者说如何运用这项‘技术’是大多数人停留的阶段,怎么用剑怎么用好剑,是一个非常漫长而枯燥的阶段。‘无剑’就是最后一个阶段,手里没有剑而心中有剑在剑术的造诣上达到了至高的境界,无剑胜有剑在这个阶段体现的淋漓尽致。

我们接触的面要尽量的广,接受和包容的东西要尽量的多,才能体验到更多的东西。游戏开发也是,世界上不是只有RPG角色扮演类一种游戏类型,还有SLG策略类游戏,还有休闲娱乐类游戏,还有体育竞技类游戏,还有学习教育类游戏等等等。只有状态机,只有行为树,或者只有状态机和行为树是无法为项目开发出最好最适合的AI的。我们应该尽量包容非典型性AI。

思路探讨(二十二) 人为什么做不出最正确的选择

人这一生真的能在每个节点都做出最好的决策吗,肯定不能。这个比较理想化的美梦,大多数人都知道是不可能的。

但人真的能在模棱两可的分岔路面前做出最正确的决策吗?我认为是不可能的。(需要明确一点是,模棱两可的选择是指两种或者几种选择都是朝着光明的方向去的,而不是一黑一白或者两种都是黑。)

《Unity3D高级编程之进阶主程》第八章 AI(2)-用行为树构建AI

前面讲了用状态机来构建游戏中的怪物AI,由于它易于理解,容易被人类接受,扩展性和耦合性都很好,所以状态机的用途很广泛。但是状态机也有很大的缺点,就是不能处理和模仿太复杂的智能行为,比如模拟一个人类奔赴一场大型战役中,对战场中的各种繁多的突发事件做出符合人类模式的处理,这种方式状态机就无能为力,由于突发情况太多,组合起来的突发情况更多,做出反应的方式也变化多端,用人类思维逻辑去编写每个状态,状态的数量就会如指数级攀升无法应付,说的直白点就是人类大脑无法应付这么复杂的逻辑编写。

思路探讨(二十一) 生存之战

22周岁毕业,在杭州工作了4年,26岁带着不甘的心独自去了上海,27岁结了婚,28岁有了第一个孩子,29岁第二个孩子降临,今年要32周岁了。从毕业到现在过去了10个年头,有时偶尔回头望去觉得是精彩的,不过精彩的并不是结果,而是这10年里拼搏的过程,那种奋力前行用尽全力突破自我的精神和逆流而上明知山有虎偏向虎山行的勇气。

《Unity3D高级编程之进阶主程》第八章 AI(1)-状态机构架机器人行为

AI机器人在游戏中非常普遍,它们常以模仿人类的行为在游戏中活动。游戏中的怪物的自动行为比较普遍,这种简单的人工智能方式可以用几种不同的方式进行编写,这里我们介绍两种方式,一种为容易被人类思维接受的状态机AI编程,另一种为特别为机器人思考方式编写的行为树AI编程。其实还有很多方式来编写AI,比如和行为树差不多的决策树,以及相对比较复杂的神经网络,以及更复杂的机器学习,在此不多做介绍,由于过于复杂甚至超过了项目的周期,研发和维护成本太高,所以在游戏中的应用并不太多,很少有人尝试。

YOU CAN LIVE YOUR DREAM!

I don’t know what that dream is that you have.

I don’t care how disappointing it might have been, as you’ve been working towards that dream.

That the dream that you’re holding in your mind … that it’s possible.

That some of you already know that its hard… it’s not easy. Its hard changing your life.

《Unity3D高级编程之进阶主程》第一章,C#要点技术(六) 搜索算法

搜索算法

广度优先搜索和深度优先搜索是最直接的搜索方式,但也效率最差,直接使用广度和深度算法,而不加以优化和改进,会浪费太多CPU,以至于整体效率差劲。

好的搜索算法,大部分需要有数据结构的支撑,在数据结构里记录了信息的特征,搜索的记录,和当前搜索内容的环境,以达到裁剪优化的目的。

搜索的目的一般有,一个数组中找出某元素,一个数组中找出某个范围的所有元素,一个2D或3D空间中找出某元素,2D或3D空间中找出某一个范围的所有元素,以及一堆相互连接的结构中找出两点的最短路径等等等。

思路探讨(二十) 如何将你的家庭与普通人拉开差距

这个标题好刺激,说的好像很容易似的,假如拉开差距容易的话,也就不会在这里说了,我直接拉开了,还扯什么蛋。

实际上大部分人都知道怎么拉开差距,但知易行难啊,知道和执行是两码事。

《Unity3D高级编程之进阶主程》第一章,C#要点技术(五) 排序算法

年纪越大,写程序写的越多,时间越长,就越觉得算法的重要性,基础能力决定你到底能走多远。

我们不是写一两年就完事的,从毕业算起,我们可能要写20-30年的程序,这段漫长的长跑路程中,最终比的不是谁熟悉API比较多,也不是谁用插件用的有多熟练,更不是比谁更熟悉某软件,而是比谁的算法能力强,比谁对底层结构更加熟知于心,比谁能够解决的系统复杂度有多高。

《Unity3D高级编程之进阶主程》第一章,C#要点技术(四) 委托、事件、装箱、拆箱

委托(delegate)与事件(Event)的实质