作者artpoet (灵魂之舞)
看板GameDesign
标题Re: [程式] 一般游戏的AI作法有人知道吗?
时间Tue Jan 29 12:08:26 2008
我个人不算什麽老手
只能提供一点粗浅的想法互相讨论
首先AI的撰写方法
一般最常用的就是前面大大所提到的有限状态机
有限状态机顾名思义
就是在有限数量的状态下经过判断而反应出不同的行为模式
就以你在文章中推文的范例来说好了
HP太少时补血,HP正常时随机攻击
此时"HP太少"跟"HP正常"....即为所谓的"状态"
当遇到"HP太少"这项状态该做什麽
或当遇到"HP正常"这项状态该怎麽反应
即为使用有限状态机设计AI的基本概念
所以其实你的原始想法里面
已经存在着有限状态机的雏型了
另外,为了用较容易的方式设计出一个具有多变性的AI
AI的设计也经常会使用到机率来加以辅佐
例如:
当"HP太少"时:
XX%的机率用魔法补血、XX%的机率用道具补血、XX%的机率继续攻击、XX%的机率逃跑
而前提是对该角色是否具有补血魔法或补血道具进行判断
并要对MP不足、道具不足时的行为反应进行设定
(当然、此部份方法很多,有限状态机的状态是有限的,但设计的方法是无限的)
将许多不同模组的判断式以及反应方法,透过流程来撰写成文件
原则上就会具有有限状态机的大致型态了
再来,AI设定一个很重要的要点就是,流程
一开始处於最原始的状态
接着就要开始设计不同层级的先後判断模式
例如:
===============================================================
初始待机状态
----------------------------第一层-----------------------------
敌对角色是否进入攻击范围内
是=>进行第二层判断
否=>回到初始待机状态
----------------------------第二层-----------------------------
敌对角色等级是否比自己高出超过五级、自己血量是否少於10%
是=>90%朝玩家反方向移动(移动多远、多久,就要延伸到第三层)
10%朝玩家进行普通攻击(使用何种技能,就要延伸到第三层)
否=>95%朝玩家进行普通攻击
5%使用技能(使用何种技能,同样就要延伸到第三层)
===============================================================
也就是说
经过了两层(或更多)的判断以後,才能决定该角色所要做出的行为模式
再来,谈谈你的纸牌游戏吧
我个人纸牌游戏的经验不多
因此只能大略提一点想法
首先要做纸牌游戏的AI
先要透彻了解该纸牌游戏的"规则"
当你手上拿到一组牌组之後
依据你的规则所给予的优势
不同牌组可以给予不同的出牌机率
这部份很难用量化的文字叙述
因为不同规则给予纸牌的出牌方向有着很大的差异
但纸牌游戏通常都是以完全扣除对方生命值、以及保持自己生命值为最终目的
你可以以这个为方向
整理出你的纸牌游戏规则中,能够较占优势的出牌顺序有哪些
如果手上刚好有可以达成优势出牌顺序的纸组
那麽优势出牌顺序的首张牌卡即可大幅增加其出牌机率
不过前提是,要先进行对於自己以及对方生命值的估算
假如自己生命值过低,而对方生命值又非一两次可以击倒
此时就可能要增加防守、回避、补血性质的牌卡出牌机率
最後一点能够较轻易设计出具有挑战性AI的方法就是,作弊
例如连续派给电脑较占优势的牌组
或者让电脑可以依据玩家手上的牌组进行反应
当然这部份要适当参酌
不可以作弊做到让玩家摔手把砸键盘的程度
我自己设计AI时常说的说法是:
"只要不被玩家发现作弊就不算作弊"
因此即便作弊,还是要调整不同的给好牌机率
不能每次都给电脑好牌
也可在电脑生命值过低的状态下再提升给予好牌的机率
大致上就这样
AI设计上细部可以再拆解、举例、分析的部份当然还有很多
我这边提供一点基本的想法
希望对你能有所助益
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.134.1
1F:推 geken:推 01/29 15:14
2F:推 kuso0516:推作弊XD 01/29 20:13
3F:推 mudgame:这篇好长,分两三次才看完..^^" 01/29 20:39
4F:→ mudgame:不过真的很受用,尤其那个作弊..>O< 以前都没想过可以这样 01/29 20:40
5F:→ mudgame:做,难怪有时打游戏王,会发现电脑的牌超好,我的超烂这样XD 01/29 20:40
6F:→ mudgame:然後..谢谢大大的指导,总算对AI有比较进一步的认识了~:) 01/29 20:42
7F:推 chrisho:都有作弊啦,只差明不明显而已,像三国志大战hard最後... 01/30 12:10
8F:推 softcloud:按 电脑作弊啦! 01/30 14:00
9F:推 LinaInverse:记得AOE作弊也很明显..@@ 01/30 16:28
10F:推 kuso0516:战略游戏作弊都超严重的XD 01/30 17:31
11F:推 chrisho:不作弊的话,最好开发者都有那美国时间全专做AI... 01/31 12:07
12F:推 ddavid:有一个可能性啦,就是学生在校把游戏AI当专题、论文做,直 01/31 16:05
13F:→ ddavid:接带进游戏公司、同人游戏发表或是自组公司XD 01/31 16:06
14F:推 loading1:作弊还挺有趣的 02/02 21:42