notice
博客顶级域名: AI分享站(www.aisharing.com)
2012年4月21日 | 标签: , , ,

从GDC2012回来有一段时间了,一直很忙,没有时间整理在GDC上听到和学到的内容。总的来说,GDC上的讲座很多,在5天的会议时间里,有超过将近340场的各种讲座,作为AI程序员,当然比较关心AI方面的技术内容,在GDC上也确实听到了一些比较有意思的东西,也和世界各地的游戏开发者讨论和分享了一些信息,我会慢慢整理后,在博客上做个记录,分享给大家。另外,GDC比较厚道的是,很多演讲的PPT是可以免费查看和下载的,所有在每篇博客的最后,我会附上该PPT的链接,供大家下载学习。由于讲座和资料都是英文的,有些名词我能理解,但不一定能翻译的很好,我会在一些关键词后面标注英文原文。
今天为大家介绍的是由[......]

继续阅读

没有评论 (已被阅读61次)
2012年2月21日 | 标签: , , ,

GDC2012

2012年游戏开发者大会(GDC 2012)将于2012年3月5日在美国旧金山举行,我有幸届时能够亲临现场,感受下全球游戏开发者的第一盛会。公司很厚道的帮我买的是All Access的票,这意味着,我可以没有任何限制的参加所有我感兴趣的会议,讲座等等,这里不得不赞一下。在GDC的官网上,可以查到所有的讲座会议日程表,除了一些必去的大型会议外(比如,Google开发者日和Microsoft开发者日),作为AI程序员,我的选择更偏向AI方面为主,因为平时工作还涉及一些3D方面的内容,所以3D技术讲座也是备选的内容之一。作为预告,我列出我初步的一个意向,回来后,在博客上会写些心得体会,与大家[......]

继续阅读

7 条评论 (已被阅读161次)
2012年1月31日 | 标签: , , , , ,

第一部分 第二部分
行为树最后一个要讲的地方,是关于前提(Precondition),在第一部分里,我略微提到了一下,这次我们来仔细看看,再来看看关于前提的纯虚基类的定义:

1: class BevNodePrecondition
2: {
3: public:
4: virtual bool ExternalCondition(const BevNodeInputParam& input) const = 0;
5: };

每一个前提类,都需要实现这个判断的虚函数。我在《用类来表示逻辑运算–关于行为树前提的一种实现方式》提到,我们可以用[......]

继续阅读

7 条评论 (已被阅读262次)
2012年1月29日 | 标签: , , , , ,

第一部分
上一次说到了节点的基类,它描述了在行为树上一个节点的基本结构。我们知道,在行为树上有两大类的节点,一种我称之为“控制节点”,像“选择节点”,“并行节点”,“序列节点”都属于此类,这类节点负责行为树逻辑的控制,是和具体的游戏逻辑无关的,属于行为树库的一部分,并且这类节点一般不会作为叶节点。还有一类称为“行为节点”,也就是行为树上挂载的具体行为,是和游戏逻辑相关的,不属于行为树库的一部分,需要自己去继承和实现,这类节点一般都作为叶节点出现。

先来看看“行为节点”的代码,我先从节点的基类继承了一个所有“行为节点”的基类

1: class BevNodeTerminal[......]

继续阅读

没有评论 (已被阅读188次)
2012年1月27日 | 标签: , , , , ,

最近一直在忙新项目的准备,甚少涉及AI的东西,所以博客也疏于更新。春节前,收到一个网友的邮件,说看了行为树的一些东西,但还是不知道如何去入手实现,我就乘着春节假期,动手写了一个简单的行为树的库,和大家一起边分析代码,边说说行为树的具体实现方法。这个库很简单,一共也就800行的代码左右,不过麻雀虽小,五脏俱全,行为树中的主要部分基本都有涵盖,包括前提(Precondition),选择节点(Selector),并行节点(Parallel),序列节点(Sequence)等等。在分析代码前,如果有朋友对行为树的相关概念还不是很了解,建议先阅读本站上对于行为树介绍的相关文章。

这次的代码以及示例程[......]

继续阅读

4 条评论 (已被阅读361次)

自开博以来,经常会有网友发信给我,询问一些关于AI方面的问题,一般我都会尽力一一回答,也希望我的这些经验,对网友有些帮助,我想,有些问题可能是大家都会有的,所以,这一次,我会把一些网友的提问,和我的回答列在这个地方,供更多的同学参考,也欢迎一起讨论,才疏学浅,不吝赐教。

Q:你好,我在你的博客上看了你的一些关于行为树的文章,写得很好,让我受益匪浅。我想实践一下怎么用,在网上找了一个相关的库libbehavior(https://code.google.com/p/libbehavior/),想用这个库做个小例子,它里面有一些演示程序,但牵涉到很多库,不好学习,我就想将一个简单的状态机示例[......]

继续阅读

4 条评论 (已被阅读199次)
2011年12月3日 | 标签: , , , , , ,

(ecto真不好用,居然写得东西都没了,害我只能把这篇文章再写了一遍,郁闷啊,跪求一个mac下的支持wordpress的离线博客编辑软件)

提到参数,在我们写程序的时候,作为一个常用的提醒是,一般都会避免去使用“魔数”(Magic Number),因为它含义不清,比如if(i>5){…},如果没有任何注释的话,很难有人会理解这个“5”是什么意思。在AI中,这样静态的参数的使用更频繁,有时为了定义一些阈值,有时为了可以给游戏设计人员调整AI行为等等,当这些参数慢慢多起来的时候,就需要更好的来管理,修改和查看,所以,如何设计一个好的参数系统就很有必要了。这个想法也源自我上一个项目的[......]

继续阅读

没有评论 (已被阅读123次)

记得以前我在博客中,提到过一种层次化的AI架构,这种架构的核心就是定义了“请求层”的概念,用来分隔决策和行为,并通过行为请求来清晰的定义了决策和行为之间的输入输出关系,不过,当我们仔细审视这个结构的时候,发现其中貌似缺失了对于某种情况的处理,这就是我今天要谈到,如何处理“被动式的行为请求”

一般来说,我们通常所认为的决策是一种“主动式(Active)的行为请求”,比如,我按了个键,玩家所控制的角色就是做出某些行为,或者AI通过对于当前情况的判断,做出了下一步的行为决策,所以说,主动式的行为请求,就是表达了一种“我想要去做什么”的语义。在游戏中,大部分的行为都是输入主动式的行为,那FPS([......]

继续阅读

没有评论 (已被阅读140次)
2011年10月27日 | 标签:

 

 

football city stars online logo
官方网站由此进入
《全民足球》是育碧开发的首款休闲类网络游戏。游戏以街头足球为主题,基于城市街区的真实地图概念,支持8名玩家进行同场竞技。游戏拥有独一无二的角色扮演加足球竞技的游戏模式,玩家可创建各具特点的角色球员,通过比赛和任务,提升其属性技能和天赋,获取奖励和成就。玩家并可基于所在城市街区创建足球俱乐部,和同城玩家一起创造辉煌。

拥有高品质全物理运算的核心游戏性,支持2对2, 3对3和4对4玩家间比赛,3大游戏模式: 单人训练, 自由对战和组队对战,守门员为AI。

玩家可以按自己喜好创建球员角色,自定义项包括性别、场上位置、惯用脚、[......]

继续阅读

没有评论 (已被阅读86次)
2011年10月27日 | 标签: , , , ,

最近在做项目前期的一些调研的工作,研究并参考了几个引擎和框架的设计,包括内部引擎,商业引擎,和开源引擎,通过比较和学习后,觉得对于游戏中的实体实现,用“组合”的设计模式会比用“继承”的更为便利,想到我早些时候的一个项目里用到的一个引擎,也是实现了组合式的实体,而且对于AI程序员来说也是和“游戏实体”打交道最多的,一个好的设计可以大大的提高代码的质量和可维护性。所以,我觉得很有必要在这里记录一下,也和大家一起分享一下我的一些心得。

在学习面向对象编程的时候,一个很重要的概念就是“万物皆对象”,我们可以把现实世界的物体抽象成一个个的Object,并且通过继承的方式实现多样化的对象集。这个是面[......]

继续阅读

2 条评论 (已被阅读120次)
2011年10月15日 | 标签: , ,

第一部分 上次我们说到,游戏中的运动系统一般有两种方式,“动画配合运动”以及“运动配合动画”。对于第一种方式,由于是采用运动函数或者经验数据表,所以可以很简单的将“未来时间”带入其中,来预测未来某一时刻的运动结果。但对于第二种情况,因为所有的运动结果都是从动画中取得的,如果不知道动画信息,就无法知道相应的运动结果,所以,简单的将时间带入是不能作出预测的,对于这样的情况,如果我们要做预测的话,就不得不将动画的因素考虑在里面。 举个简单的例子,一个人做一个跑动中转身停下的行为,假设他当前时刻T1,处于A1位置,速度是V1,朝向是F1(假设和速度方向一致),他的目标状态是速度是0(没有速度),[......]

继续阅读

没有评论 (已被阅读78次)

无觅相关文章插件,快速提升流量