作者cjcat2266 (CJ Cat)
看板GameDesign
标题[心得] AI小技巧: 时域错位(Time-Staggering)
时间Sat Feb 13 13:22:20 2016
最近赶工都没时间写文,改po小技巧好了 :)
这只是个小概念,不是什麽深奥的技术
知道它存在之後应该就不会忘记了
我以前也只是隐约知道它的存在
开始着手游戏AI的时候,才注意到同事们非常重视这个概念
时域错位(Time-Staggering)
意即当核心AI逻辑做了一个决策时,所有NPC"不"同时采取行动
e.g. 主角行踪暴露时,不要让所有敌人同时转身,转身时机稍微互相错开
这样一个简单的小技巧
就可以让整体AI看起来更有机、而不会过於机械化
如果你的游戏有多个NPC
不妨试试看这个技巧,让他们看起来更生动一点 :)
[补充]
同样的概念也可以套用到gameplay上
像是被同一个爆破炸飞的敌人
飞空动画的起头时间、拨放速度也可以稍微错开
看起来就不会像是同步空中芭蕾
早期三国无双同一次击飞的敌人们就有这种机械化的同步感
--
Web
http://AllenChou.net
Twitter
http://twitter.com/TheAllenChou
LinkedIn
http://linkedin.com/in/MingLunChou
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 160.33.43.15
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1455340945.A.0EA.html
※ 编辑: cjcat2266 (160.33.43.15), 02/13/2016 13:35:19
1F:推 dklassic: 推CJ猫,等秘境等好苦啊( 02/13 13:55
2F:推 damody: 现实生活应该会同时吧? 02/13 14:12
3F:→ cjcat2266: 不会喔,有反应时间差异,差零点几秒感觉就不机械化了 02/13 14:20
4F:→ cjcat2266: 一群NPC完全同时采取行动,其实很难看 02/13 14:21
5F:推 waldfantasy: 推 02/13 15:13
6F:推 Dsakura: 除非Npcs会心电感应 02/13 15:22
※ 编辑: cjcat2266 (172.91.156.131), 02/14/2016 01:29:02
7F:推 ddavid: 爆破的话就应该开头同时,但是後续用播放速度不同或数种不 02/14 02:15
8F:→ ddavid: 同动作模组来做差异吧 02/14 02:16
9F:→ cjcat2266: 我是指开头anim phase稍微不同,不是开始播放时间不同 02/14 04:15
10F:→ cjcat2266: 不过的确,不同动画和播放速度差异的效果较明显 02/14 04:16
11F:→ cjcat2266: 反正最终目的就是不要让一群NPC表现出过度同步 02/14 04:17
12F:→ cjcat2266: 不论是视觉上或感觉上(行动时机) 02/14 04:18
13F:推 Frostx: 推,不过我私心觉得,无双那样满有喜感的XD 02/14 09:58
14F:→ LayerZ: 我个人的想法是,同时广播给所有NPC同步反应是OK的,但是 02/14 13:03
15F:→ LayerZ: 每个NPC要先停下手上的工作再转过来 02/14 13:03
16F:→ LayerZ: 前提是每个NPC闲置时都有动作 02/14 13:04
17F:→ cjcat2266: 我的经验是,"停下手边工作"这个动作也要时机稍微错开 02/14 17:19
18F:→ cjcat2266: 不然还是会看起来有心电感应的样子 02/14 17:19
19F:推 cowbaying: 把AI的阵列先打乱 然後每个AI都睡个10~50ms再执行 02/15 09:41
20F:→ cowbaying: 看起来就很"不同步"了 02/15 09:41
21F:→ Schottky: 楼上应该是说 100ms~500ms 吧? 02/15 15:12
22F:→ Schottky: 小於 100ms 人眼不容易分得出差别 02/15 15:12
23F:→ cjcat2266: 嗯,我平常是用100ms为延迟单位,200ms以上就很明显了 02/16 04:25
24F:推 cowbaying: 我不是打错 XD 真的是打10~50ms 02/18 09:22
25F:→ LayerZ: 我的意思是,同时进行停下手边动作的"动作" 02/18 14:52
26F:→ LayerZ: 例如警铃响起或大喊,所有人就该同时反应,不过怎麽反应的 02/18 14:52
27F:→ LayerZ: 动作差异,就会造成不会同时转头 02/18 14:52
29F:推 osanaosana: 楼上这个...玩到後来感觉有点像是新兵训练向後转 02/19 16:38
30F:推 damody: GALINE那个赞 02/21 14:43
31F:→ Frostx: 推GALINE的demo 02/24 10:38
32F:→ LayerZ: 推个,我把rand换成(s-m)*i/5 XD 02/26 11:04
33F:→ LayerZ: s+ 才对.. 02/26 11:06
34F:推 leograss: 推 03/17 11:09