游戏开发论坛

 找回密码
 立即注册
搜索
查看: 14353|回复: 35

[讨论] 谈点AI设计的,哪位前辈讲解下!

[复制链接]

18

主题

1581

帖子

1991

积分

金牌会员

Rank: 6Rank: 6

积分
1991
发表于 2007-6-27 13:01:00 | 显示全部楼层 |阅读模式
最近要做一款棋牌单机手游,就是小时侯很多人玩的那种用象棋在半个棋盘上玩的翻棋游戏(通用斗兽棋规则)——帅(将)>士>象>车>马>兵(卒)>帅(将)[舍弃炮的设定]。。。对同的棋子攻击将同时抵消。

目前碰到点困难,就是AI设计。。。

这里有这么几个要考虑的问题:

1.翻牌
2.攻击(包括移动后进攻)
3.回避(移动实现)
4.对子

如何确定NPC进行这些操作,优先级如何做比较好?

我想请教下一些设计经验。。。

135

主题

3447

帖子

3800

积分

论坛元老

总版主

Rank: 8Rank: 8

积分
3800
QQ
发表于 2007-6-27 13:10:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

这个东西就是纯粹的数学问题了,如果要求不是很高应该可以参考写象棋比较常见的“贪婪算法”。

5

主题

170

帖子

170

积分

注册会员

Rank: 2

积分
170
发表于 2007-6-27 13:13:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

晕了,最近为一个格斗游戏的AI搞的头大,哪个高人说说怎么设计

149

主题

4781

帖子

5094

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5094
QQ
发表于 2007-6-27 13:30:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

AI无非就是条件、需求与判断之间的逻辑,从怪物的逃跑到现在很流行的山口山仇恨规则,都是把自己的思路清晰化之后整理需求的结果。楼主你可以先把哪些花俏的算法之类表面的东西去掉,先从最基本的判断条件入手,然后相互指引才能明白你到底想要做的是什么东西。

如果简单的解释就是,如果你能把需求、判断以及结果作成一张流程图,那么你的AI就是成功的。举例:
需求:怪物血少的时候逃跑
判断:HP<30%
触发:
   判断:目前主攻击玩家
   判断:玩家方向
   判断:有效空间>10码
   触发:向玩家相反方向移动10码

32

主题

782

帖子

1772

积分

金牌会员

吐槽机器

Rank: 6Rank: 6

积分
1772
QQ
发表于 2007-6-27 13:55:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

棋类AI和其他游戏的AI不一样吧...
棋类的纯数学算法问题,一般游戏的怪物AI也就是二择或者多择画流程图就好了

149

主题

4781

帖子

5094

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5094
QQ
发表于 2007-6-27 14:01:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

棋类AI毕竟没有怪物AI好理解嘛,所以用最容易让看官理解的语言来举例方便沟通。但是我觉得不见得棋类AI就是纯数学的问题。


PS:yii和tony一样喜欢用概念,帮新人简单答疑一下什么是贪婪算法

贪婪算法就是一步一个最优解,每步都是有去无回的架势,做出这些最优解的策略号称贪婪准则(greedy criterion)。最优解在贪婪算法(greedymethod)中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。

1

主题

155

帖子

166

积分

注册会员

Rank: 2

积分
166
发表于 2007-6-27 14:28:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

初步想了一下,感觉还是比较有难度。
但AI的实现可以分等级的,比如低级、中级、高级这样几个档次,可以尝试先实现比较弱智的AI,循序渐进。
你对这个AI的期望程度如果比较高的话,自己最好先成为这种棋的高手。
我觉得比较难的地方是中盘时候一些复杂情况的判断。

18

主题

1581

帖子

1991

积分

金牌会员

Rank: 6Rank: 6

积分
1991
发表于 2007-6-27 14:34:00 | 显示全部楼层

Re: Re:谈点AI设计的,哪位前辈讲解下!

terrybiff: Re:谈点AI设计的,哪位前辈讲解下!

棋类AI和其他游戏的AI不一样吧...
棋类的纯数学算法问题,一般游戏的怪物AI也就是二择或者多择画流程图就好了




恩,正是这个问题。。。如果单纯要我去做一般MMORPG中怪物AI,那些都没什么问题,无非是参考一个判断来触发的。

但棋盘就有点不同,如果和MMORPG里怪物比较的话。。。可以这么看。。。前者你是和多个敌人战斗,有多种情况同时发生,因此优先级别也可能出现多重(除非更细);后者就是单个敌人,也许有2种或三种情况同时发生,但是还是比较简单可以进行优先区分。。


MMORPG中里,可以根据怪物的HP、级别、仇恨等等判断怪物AI下一步;

但棋牌里,单个看一个棋子目前的状况根本不妥,因为棋盘游戏并不是一、二个字之争,而是有衍生效应在里面。。。不可能因为你可以攻击一个棋子就义无返顾攻击,相反,你要观望整个棋盘(当然,NPC不用做这一点,只要一个小范围具体对待,但这个小范围要考虑的东西也够多的了)。不可能你为了吃1个字而损失更重吧


比如:你的士与兵靠在一起,电脑是将,将与士并靠着,此时如果单从纯攻击角度谈——攻击士条件成立,攻击士本身无任何威胁,士属于大子(优先吃掉)……难道电脑就不会去考虑士旁边还有一个兵的存在吗?

接着,游戏中,棋子本身也有一个移动攻击概念,这里按SPY说的,贪婪算法就可能真适用。因为移动一格本身是作为一回合的,他的具体攻击可能要在下一个回合才能发生,甚至说下一个回合还无法发生(1.玩家移动棋跑了;2.2个棋子相差2格甚至以上距离)。

接着就是追逐了,按一般简单游戏的算法,AI的追逐无非以一个基点为移动目的,这个基点可以是目标本身,也可以是根据目标移动方向计算的目的地(根据速度和时间比,AI进行拦阻),但棋盘则不同,这个拦截就无法直接套用上面说的追逐。。。因为棋盘游戏AI还得考虑一个“包围”。这个“包围”本身是分次进行的,不像一般ACT、STG游戏里,可能有3个敌人根据你当前坐标和移动方向进行分段拦截的设计。。



23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
发表于 2007-6-27 14:34:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

对棋类AI了解不多...学习了

现在只记得一个遍历博弈树,进行α-β剪枝的图搜索技术了。
当然要完全遍历,通常是不可能的,可以设定一个搜索深度,难度低的AI深度小,高难度的AI搜索深度适当增加。另外增加搜索深度是以消耗时间和空间为代价的。

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
发表于 2007-6-27 14:37:00 | 显示全部楼层

Re:谈点AI设计的,哪位前辈讲解下!

根据这个棋的规则后推若干步,推出每步的全部或部分结果。根据结果计算节点得分,选择得分最高的节点作为自己的下一步
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-17 11:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表