[心得] AI小技巧: 时域错位(Time-Staggering)

楼主: cjcat2266 (CJ Cat)   2016-02-13 13:22:20
最近赶工都没时间写文,改po小技巧好了 :)
这只是个小概念,不是什么深奥的技术
知道它存在之后应该就不会忘记了
我以前也只是隐约知道它的存在
开始着手游戏AI的时候,才注意到同事们非常重视这个概念
时域错位(Time-Staggering)
意即当核心AI逻辑做了一个决策时,所有NPC"不"同时采取行动
e.g. 主角行踪暴露时,不要让所有敌人同时转身,转身时机稍微互相错开
这样一个简单的小技巧
就可以让整体AI看起来更有机、而不会过于机械化
如果你的游戏有多个NPC
不妨试试看这个技巧,让他们看起来更生动一点 :)
[补充]
同样的概念也可以套用到gameplay上
像是被同一个爆破炸飞的敌人
飞空动画的起头时间、拨放速度也可以稍微错开
看起来就不会像是同步空中芭蕾
早期三国无双同一次击飞的敌人们就有这种机械化的同步感
作者: dklassic (DK)   2016-02-13 13:55:00
推CJ猫,等秘境等好苦啊(
作者: damody (天亮damody)   2016-02-13 14:12:00
现实生活应该会同时吧?
楼主: cjcat2266 (CJ Cat)   2016-02-13 14:20:00
不会喔,有反应时间差异,差零点几秒感觉就不机械化了一群NPC完全同时采取行动,其实很难看
作者: waldfantasy (Kira)   2016-02-13 15:13:00
作者: Dsakura (亚瑠华子)   2016-02-13 15:22:00
除非Npcs会心电感应
作者: ddavid (谎言接线生)   2016-02-14 02:15:00
爆破的话就应该开头同时,但是后续用播放速度不同或数种不同动作模组来做差异吧
楼主: cjcat2266 (CJ Cat)   2016-02-14 04:15:00
我是指开头anim phase稍微不同,不是开始播放时间不同不过的确,不同动画和播放速度差异的效果较明显反正最终目的就是不要让一群NPC表现出过度同步不论是视觉上或感觉上(行动时机)
作者: Frostx (Naga)   2016-02-14 09:58:00
推,不过我私心觉得,无双那样满有喜感的XD
作者: LayerZ (無法如願)   2016-02-14 13:03:00
我个人的想法是,同时广播给所有NPC同步反应是OK的,但是每个NPC要先停下手上的工作再转过来前提是每个NPC闲置时都有动作
楼主: cjcat2266 (CJ Cat)   2016-02-14 17:19:00
我的经验是,"停下手边工作"这个动作也要时机稍微错开不然还是会看起来有心电感应的样子
作者: cowbaying (是在靠北喔)   2016-02-15 09:41:00
把AI的阵列先打乱 然后每个AI都睡个10~50ms再执行看起来就很"不同步"了
作者: Schottky (顺风相送)   2016-02-15 15:12:00
楼上应该是说 100ms~500ms 吧?小于 100ms 人眼不容易分得出差别
楼主: cjcat2266 (CJ Cat)   2016-02-16 04:25:00
嗯,我平常是用100ms为延迟单位,200ms以上就很明显了
作者: cowbaying (是在靠北喔)   2016-02-18 09:22:00
我不是打错 XD 真的是打10~50ms
作者: LayerZ (無法如願)   2016-02-18 14:52:00
我的意思是,同时进行停下手边动作的"动作"例如警铃响起或大喊,所有人就该同时反应,不过怎么反应的动作差异,就会造成不会同时转头
作者: GALINE (天真可爱CQD)   2016-02-18 23:53:00
作者: osanaosana (芋头一颗多少钱)   2016-02-19 16:38:00
楼上这个...玩到后来感觉有点像是新兵训练向后转
作者: damody (天亮damody)   2016-02-21 14:43:00
GALINE那个赞
作者: Frostx (Naga)   2016-02-24 10:38:00
推GALINE的demo
作者: LayerZ (無法如願)   2016-02-26 11:04:00
推个,我把rand换成(s-m)*i/5 XDs+ 才对..
作者: leograss (耶诞夜草男)   2016-03-17 11:09:00

Links booklink

Contact Us: admin [ a t ] ucptt.com