摘要:
1. 基本的路径寻找 从最基本得层次来讲,路径寻找只是让某个游戏角色,从其最初位置移向所需到达的目的地的过程而已。本质上,这一点和第二章中的基本追逐算法的原理相同。具体如:简单追逐追逐方法(最简单的使坐标逐渐相同)和视线追逐方法(使用Breseman方法)。但是,如果游戏环境中有障碍物,那么就需要考虑其他事情了。如下图所示,两种方法产生的路径都可能被障碍物阻截。 1.1 随机移动避开障碍物 此方法适用于障碍物较少的情况,如下图,环境中的树木不是很多,随意移动一下巨人,玩家就能进入巨人的视线。这种方法简单有效,避免了负责路径算法对CPU的消耗。if(玩家在视线内){采用直线路径走向玩家}else 阅读全文
摘要:
1. 缘起 来自BBS上的面试题目,struct{int a; char b;}的大小是多少?答案是8。上网看了下,是字节对齐。2. 字节对齐的基本规则首先,每种类型的变量的默认对齐长度都是自己的变量长度,比如:char占一个字节,那么对齐长度就是一个字节,int占四个字节,对齐长度就是四个字节,double占八个字节,对齐长度就是8。int的对齐长度为4的实际意义是,int变量必须存储在四的倍数的地址上。 那么对于struct{char b; int a},其长度是8,因为b虽然只占用1个字节,但是a必须从4的倍数开始存储,因此b后面的3个字节都废掉了。因此一共需要8个字节才能把b和a存下来 阅读全文
摘要:
1. 概述 势函数属于物理学原理,我们主要使用势函数控制游戏里单位的行为。例如,我们可以使用势函数,建立成群结队的单位,仿真群体移动,处理追逐和闪躲,以及避开障碍物问题。我们专门研究的势函数叫做Lenard-Jones势函数。物理学中,Lenard-Jones势能代表的是,分子间吸引和排斥的势能。这里的U代表的是原子内的势能,和分子的间隔距离r成反比。A和B是参数,与m和n这两个指数一样。如果我们取该势函数的导数(derivative),就可得到一个代表某力的函数。这个力函数根据这两个分子的接近程度,产生引力和斥力,就我们的情况而言,分子指的就是游戏中正在行动的单位。就是这种可以表示引力和斥力 阅读全文
摘要:
1. 基本群聚 这一节介绍的算法,来自于Craig Reynolds在1987年发表的论文《Flocks,Herds and Schools:A Distributed Behavioral Model》。在论文中,他提出算法原型仿真整群的鸟、鱼或其他生物。 这个算法的做出的行为非常类似水中的鱼群或成群的飞鸟。所有的“类鸟群”(指模拟的群体)可以同时朝同一方向移动,接着下一时刻,群聚形成的形体之尖端会转弯,而群体中其余的部分也会跟着转,形成的类鸟群在群体中传达转弯的行为,而形成波浪状。 算法的三个规则: 凝聚:每个单位都往其邻近单位的平均位置行动。 对齐:每个单位行动时,都要把自己对齐在其邻近 阅读全文
摘要:
1. 简述 中午逛bbs,无意中,发现两位微软大牛要来南开,下午两点到伯苓楼听了下,这里记录一下收获与思考。2. 大牛介绍 李航博士 微软亚洲研究院高级研究员 简介: 李航 日本京都大学电气工程系毕业,日本东京大学计算机科学博士。曾任职于日本NEC公司中央研究所,2001年至今任职于微软亚洲研究院,现任高级研究员及主任研究员。北京大学,南开大学,西安交通大学客座教授。李航的研究方向包括信息检索,自然语言处理,统计机器学习,及数据挖掘。http://research.microsoft.com/en-us/people/hangli/ 题目: 【Statistical Machine Learn 阅读全文
摘要:
1.标准算法移动模式,实际上就是控制角色移动的方式。比如:可以建立圆形、方形、蛇形、曲线以及其他类型的模式。标准移动模式算法使用控制指令,指示计算机控制的角色,在每一轮游戏循环中如何移动。下以一个蛇形的移动模式为例,进行说明:下面就是一组控制指令:(turn_right, turn_left, step_forward, step_backward) (0, 0, 2, 0) (0, 0, 2, 0) (10, 0, 0, 0) (10, 0, 0, 0) (0, 0, 2, 0) (0, 0, 2, 0) (0, 10, 0, 0) 有了上面这些控制指令,只有重复依次调用这些指令,就能让角色 阅读全文
摘要:
1. 追逐/闪躲的组成 完整追逐/闪躲由三部分组成: ·作出追或逃的决策判断(在后文谈论到状态机和神经网络时,再讨论) ·开始追或逃(本章重点) ·避开障碍物(第五章和第六章,再讨论)2. 基本追逐和闪躲 假设:追逐者坐标(predatorX, predatorY),闪躲者坐标(preyX,preyY) 连续环境的基本追逐代码if(predatorX>preyX)predatorX--;elseif(predatorX<preyX)predatorX++if(predatorY>preyY)predatorY--;elseif(predatorY 阅读全文
摘要:
1. 定性AI与非定性AI 定性行为或其表现是特定的,而且是可预测的,没有不确定性。 非定性行为有某种程度的不确定性,有点不可预测。比如:让非玩家角色学习到适应玩家的作战战术。这样的学习能力可以利用神经网络、贝叶斯技术或遗传算法而得到。2. 几个实用非定性AI方法的主流游戏 "Creatures"、"Black & White"、"Battlecruiser3000AD"、"Fields of Battle"以及"Heavy Gear"。 阅读全文
摘要:
1.问题举例继续使用第2章中的例子,即Aldo有时会去进行水上运动,天气情况对于Aldo选择是否去水上运动有很大的作用,可以想象,如果天气好,很可能Aldo就会去,如果天气恶劣,Aldo就不会去。现在已知若干天的天气情况,和Aldo是否去参与了水上运动的记录,根据新的一天的天气情况来预测Aldo是否会去进行水上运动。2. 决策树的一般形式通常决策树代表实例属性值约束的合取得析取式。从树根到树叶的每一条路径对应一组属性测试的合取,树本身对应这些合取的析取。 上面的决策树对应的合取析取式为: (Outlook=Sunny Λ Humidity=Normal)V (Outlook=Overcast) 阅读全文
摘要:
1.问题举例Aldo有时会去进行水上运动,天气情况对于Aldo选择是否去水上运动有很大的作用,可以想象,如果天气好,很可能Aldo就会去,如果天气恶劣,Aldo就不会去。现在已知若干天的天气情况,和Aldo是否去参与了水上运动的记录,根据新的一天的天气情况来预测Aldo是否会去进行水上运动。下面就是一些样本: 2.概念学习概念的学习是指从有关某个布尔函数的输入输出训练样例中推断出该布尔函数。布尔函数一般形式:F(b1, b2, ..., bn),其中 bi的定义域为{0,1}i,F的值域为{0, 1}。 在一般的定义域上的,取值在 {0, 1} 中的函数也叫做布尔值函数,概念学习定义中的布尔函 阅读全文