114培训网欢迎您来到游戏设计交流中心!

400-850-8622

全国统一学习专线 9:00-21:00

MOBA类型游戏的人机对战的模式中,电脑的AI是如何设计的?

现代的游戏AI很多是由专门的AI引擎来实现的,如果用文字把AI的规则写下来,那是非常的多

MOBA( Online Battle Arena)中文译为多人在线战术竞技游戏。 online battle arena(MOBA),也被称为Action real-time strategy(Action RTS,ARTS)

这类游戏的玩法是:在战斗中一般需要购买装备,玩家通常被分为两队,两队在分散的游戏地图中互相竞争,每个玩家都通过一个RTS风格的界面控制所选的角色。但不同于《星际争霸》等传统的硬核的RTS游戏,这类游戏通常无需操作RTS游戏中常见的建筑群、资源、训练兵种等组织单位,玩家只控制自己所选的角色。

MOBA游戏相比传统的RTS游戏更偏向于休闲娱乐,对玩家的操作要求均远远低于RTS游戏。再加上这类游戏中很多是免费游戏,因此吸引了一大批难以适应RTS游戏大规模高要求操作的玩家。因为不再过高地要求玩家的操作水平,这个玩家群体比传统RTS游戏的硬核倾向的玩家群体要大得多。

1998年,《星际争霸》发行,暴雪娱乐公司*次在暴雪娱乐制作并发行的游戏中绑定了地图编辑器。利用这款地图编辑器,当时有一位叫做Aeon64的玩家制作出一张名为Aeon Of Strife的自定义地图,这就是所有MOBA游戏的雏形。在这个自定义地图中,玩家们可以控制一个英雄单位与电脑控制的敌方团队进行作战,地图有3条兵线,并且连接双方主基地,获胜的目标就是摧毁对方主基地[2] 。值得一提的是,这款老地图现今依然在《星际争霸Ⅱ》中保持着更新。

这张星际争霸的自定义地图是DOTA的前身,也是所有moba的雏形,因此MOBA游戏的源头应该追寻至《星际争霸》时代的RPG地图。到英雄联盟的出现,在刚开始英雄联盟自称为类DOTA游戏,但随后拳头游戏开始将游戏定义为MOBA游戏,随后MOBA游戏的叫法开始更加流行,但本质上是从类DOTA游戏进化过来的游戏类型,它囊括了比“类DOTA游戏”更多的内容,甚至连DOTA自身也开始被定义为MOBA了。

游戏里的AI是如何实现的?

比如赛车游戏的AI,和你一起跑得赛车根据不同等级的AI表现出不同能力。它基本的设计思想是,通过对地图场景进行数学建模然后结合模型中的应变量结合赛车本身的参数进行数学结合。*特出了带有系数的近似等式。然后通过数学变换(比如三角变换,等比变化,随即变换等)使得AI变的非常具备“人”的思维。 还有一种AI是通过行为库来实现的,在行为库中,定义了大量的行为,这些行为可能是预先定义好的,可能是游戏者在平时游戏的时候被系统录入的。然后AI通过类似责任链(不同等级的责任者对应不同等级的责任行为,你可以去网络搜索一下)的形式获取到某一个时候的行为,从而表现的比较有"智能".

游戏设计模式 之 AI_行为树

引擎:.1.0
语言:
Git仓库地址:

定义——
行为被定义为层次化的目标的集合,其表现为树形结构。
智能体首先选择高级抽象目标,然后递归分解成一个可以遵照执行的原子目标的集合。
以此实现原子目标,最终实现高级抽象目标。

类图——

行为树图——

类图看起来比较复杂~,哈哈,其实不难,记住几个关键单就行。
1、树形结构,使用“组件模式”实现。
从“行为树图”中可以看出,复合目标和子目标组成了一个树形结构。
think每次根据权重(由数值策划提供公式)选择一个“分支”,一次执行完整个分支下的所有叶节点,即可完成策略——实际项目中会有很多层,这里简化一下。
2、通过权重选择策略,每个策略都对应一个继承自Goal_Evaluator的类,对应其返回权重的以及设置目标的逻辑。

下面来看看具体实现
简单讲,需要做的事情有3个
1、编写战略目标

重写Enter()函数,负责插入子目标

2、编写子目标
Goal_

Goal_

Goal_

以上就是策略与子目标的实现,主要工作就是在Enter(),与Process(dt)中,在恰当的时机返回目标状态即可。

3、(用树形结构,即组合模式)组织起来

如图,Goal_Think类通过每个策略的Goal_Evaluator类计算权重,然后,策略在Enter()中也。
这样便组成了一个树形结构,然后通过Process(dt)驱动行为树运行。

扩展:
配置化——我的思路是策划在json表中配置 战略目标以及其对应的子目表“树”。

如何设计出优秀的游戏AI

游戏发展这么多年,并不是没有狡猾的AI,只是市面上主流的游戏没有使用到狡猾的AI而已,举个最简单的例子,我相信很多人下象棋都下不过大师难度的电脑或者机器人吧,这就是狡猾的AI,再联想下围棋界的阿尔法狗,游戏AI其实并不是没有发展,相反有些ai发展的有点可怕
那么为什么主流游戏,比如RPG、SLG游戏的AI会给很多玩家AI还是很蠢的感觉呢,为什么他们不狡猾一点呢,简单的来说就是——他们不蠢怎么衬托玩家的聪明呢
游戏AI,作为游戏内的设计元素之一,他所最终服务的对象是玩家,一个游戏AI是好是坏不是根据AI的聪明程度来判定的,而是根据他能给玩家带来什么样的反馈来判定的,这个才是游戏AI的最终设计目的
游戏AI服务于玩家的体验,设计目的决定了他的设计方式,想要设计一个好游戏AI,并不是越聪明越好

即时战略游戏(比如 WAR3)的 AI 是怎样实现的?

War3的AI没有必要使用你提及的算法,或者说,根本无法使用。
有相关经验表明,游戏的AI如果采用神经网络等算法,会傻得出奇。
使用派算法的AI总会做出匪夷所思的动作,让人无法理解,游戏性尽失。
其主要原因在于遗传算法、模拟退火算法、神经网络算法、各种分类算法等等,都是高度概括化的,旨在找到*解/或者找到全局关系。但是我们的AI实际不需要*解和全局关系,一是你的电脑没那么叼,这么复杂的情况,如果真的高度概括出来了,其复杂程度是很高的,你的电脑也带不动,其次是算法在训练过程中收敛也会很慢,因为样本太过复杂,所以也许要花上很久(几年?猜的)来收敛,如果我们降低收敛精度要求来使速度加快,AI就会变得非常傻,做游戏明显不能这样。即使上述问题都被解决了,还有个问题就是,电脑得到了*解和*数学模型,你作为玩家就没有胜利的希望了,这游戏给谁玩?
即使设计公司神经病般的决定如此设计,每当你的游戏有更新,兵种变化,数据变化,整个算法就要重新训练,玩家需要重新下载AI的全部内容,对用户的体验和公司的工作效率都有损害。
战略类游戏的AI,还是有限状态机。根据不同情况分类做不一样的事情,全都设计好,设计的尽量详细,就OK了。
关于其复杂度:
这类AI的程序体往往超乎想象的长,当然具体长度和游戏本身的设计也有一定关系,和游戏其它部分代码的设计优化程度也有关系,但是即使在较优环境中,其AI长度也是很长的。具体原因就在于其事无巨细的分类了所有情况,规定了AI在不同时间不同情况所做的不同事情,作为一个战略类游戏,尤其是即时战略类游戏,这是十分复杂的,情况十分多,因此程序本身也会相当的长。
但是他运行速度又快!又像人类在玩!又给了玩家胜利的可能!又容易设计和更改!

DNF的怪物AI是如何设计的?

DNF游戏中的怪物AI设计理念如下:
首先判断设置半径范围内是否有敌对单位;
有的话则生成随机数,根据该随机数对应的路线,驱动怪物向玩家靠近。
没有的话仍然产生随机数,依据该数字产生对应的路线,驱动怪物在范围内移动。
其中玩家设置为怪物的敌对单位,接近到一定距离后怪物会对敌对单位进行攻击。

温馨提示:为不影响您的学业,来校区前请先电话咨询,方便我校安排相关的专业老师为您解答
相关资料
姓名不能为空
手机号格式错误