Project1
标题:
【一些AI设计的经验】异形的机制探索之旅(86)▲
[打印本页]
作者:
疯狂异形
时间:
2013-1-21 14:26
标题:
【一些AI设计的经验】异形的机制探索之旅(86)▲
最近在复习准备一波带走上半学期的期考卷
我会给出一些自己的经验,也就是AI解决方法,你看看哪些能用的就试试看,我也没底
设角色为A,敌人为B
AI优先度抉择
“若B与A的X距离<10,移动速度3,向x移动2距离=3”
“若B与A的Y距离<10,移动速度3,向y轴移动2距离=4”
“若B与A的X距离为10,Y距离为10,向坐标bx-10,by-10发动火焰攻击=5”
因而当A与B的距离为10,10时,B会立即释放火焰攻击
这个时候尽量广泛的去思考可能会遇到的设计问题,比如“要是B在x,y轴的移动中碰到了石头,怎么办?”
像这类问题“被卡住”“释放火球的指令已下,但MP不足”这种问题都属于自然限制类
解决方案
A.关卡设计,数值设计的时候考虑这些问题 ,比如别在地图上放障碍物,比如设计比技能释放消耗多一万倍的MP
B.直接跳过这些结算,比如无限MP,比如飞行单位
C.在一个事件执行后设立一个逆向的执行逻辑做为检查方法,比如“若B与A的X距离<10,移动速度3,向x移动。检查当前坐标x轴-2是否等于原先坐标,检查有效移动数,则有两种可能(。◇B),(◇B。),前者为有效移动数0,B直接被卡住,后者为有效移动数1被卡住;导出剩余有效移动数到y轴移动,再进行结算;然后Y轴移动也被卡住了那就再导到X轴这边搞个“若剩余有效移动数>0则继续循环”(大菠萝2的方法),或者直接开挂吧,穿墙之类的东西就是这么来的。”查查广度优先搜索算法,或者A*算法,借鉴思路
D.准备多个解决方案,被卡住就瞬移,没MP就吸玩家的HP来补充,硬性软性的都可以
E.放弃某个功能,执行另一个功能。比如B被卡住了没关系阿那就直接丢远程AOE好了,丢着丢着玩家就自己过来了;比如B没MP了那没关系消耗HP发技能,或者干脆就放弃这个功能好了。
F.执行关联事件,比如自己无法移动了那就把有效移动数送给其他队友,比如自己没MP了那就搞个什么休眠技能睡一觉起来之后MP全满
G.控制玩家的选择集。B不能移动了那就把玩家拖到自己面前,或者发个技能烧塌可供移动的地板,让玩家可活动区域更加接近B,自己没MP了就搞个什么机制逼玩家也不能用MP(AI太傻那就让玩家和电脑一起变傻)
H.无以伦比的收益。B没法移动或者没MP了,这下可好,玩家强大了,可以卡位虐BOSS之类的了;那好,如果B收到了限制,那就让它进入暴走状态攻击力加倍,或者直接隐形啊召唤大批小怪什么的吧(一般把B变得难以击败能让人感觉到“哦这AI好厉害”)
你也可以看看编程人员是怎么解决一些问题的
http://blog.whhpaccp.com/?post=516
主要就是分清AI的执行主次顺序,别搞什么复杂功能,用简单的功能堆出复杂效果来。简单来说,AI接受观察到一个状态,现在是什么情况;然后运算所有可能做出的行为结果;接着衡量轻重;最后执行
准备多个行为模式,让AI随时能够调用,是最实用的了
作者:
电子最终龙
时间:
2013-1-21 16:49
就是有限狀態機咩~狀態機的好處是可以基本無視掉算法,所有行為直接用觸發器控制。
雖然說複雜度有限,頂多就是需要尋路,但是入門的話滿好使的
主流遊戲的AI似乎相對要複雜些,個體化的狀態機模式不太適合大規模混戰。
一般來說同一場景下應該有唯一的控制器處理多單位行為,這樣怪物的群體協作性會好很多
順便補充一點AI原理吧:
感知器→控制器→模擬器→執行器→環境—|
↑---------------------------------------------- |
控制玩家選擇集這個……雖然設計理念上還是希望為玩家提供開放性挑戰,
不過偷懶的時候也會有“我不希望玩家干些什麽”然後設置一些軟限制
比如說不希望玩家無腦嗑藥就直接給怪物一個技能,玩家中了后一回血就自爆什麽的……
這套路用得多遊戲會顯得很惡意就是了
PS:a*經常會坑關卡師,大部份地圖卡BUG打怪罪魁禍首之一,其實現在玩家的機器夠彪悍了,搞點什麽鳥群啊蜂巢啊獵食算法也無壓力的
作者:
失落迷白
时间:
2013-2-16 07:51
异形您又变得更加漂亮了呢,,{:2_254:}
作者:
eefgl
时间:
2013-2-22 22:13
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1