net教授的mugen ai教程1-trigger和ai开关

更新时间:2024-01-24 00:36:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Mugen ai教程

先说一句,制作ai不是那么容易的,必须十分熟悉角色的各种性能,连段,立回,防御,压制都得考虑,是很耗时间的,

特别是要花大量时间作测试。万一出错还得debug。。。 即使如此你还是要做ai?那么 覚悟しろ!(师匠音)

本人才疏学浅,只是对mugen就ai方面有点了解,所以有错误欢迎各位高手指出。

注意事项

1 写ai时数学,标点符号请用英文半角,否则系统不认 2 永远记得改ai前把文件备份一次。否则后果自负。。。最好写到某个阶段就备份下,免得以后改出问题

3 未经过原人物作者同意,或原ai作者同意。

不得公开发布私自制作或改造的ai(主要就是别去mc新闻区这种公共场所发布)。 私底下小范围传播,自己用来做做视频没事。 4 请注意人物版本的对应。

要准备的东西

1 mugen主程序及人物。至少懂得加人物,打ai补丁之类的mugen基础知识。 2 记事本。推荐用notepad2,可以转码。 3 其他好像没啥要准备的了。。。

本文参考资料:

⑨氏主页上的ai相关资料 平成氏ai说明书

trigger表和script表 其他。。。

Episode 0

trigger和type

最好看一下这2个表,尤其是trigger表,熟悉一下trigger(触发器)是啥东西。不看也无所谓。。。就在下面的教程中慢慢熟悉也可。 type表也有种说法是script表。

这2个表在\\winmugen\\docs里有。trigger.html和sctrls.html就是,不过是英文版

简单的说trigger就是“当发生啥情况的时候”,type就是“做什么”,trigger是条件,type是结果。

一般在ai里用得最多的type是changestate,其次是varset,其他的用的不多。

举个简单的例子 [state -1]

type = poweradd ;加气

triggerall = roundstate = 2 ;比赛必须在进行的时候(不是刚开始或者已经分出胜负的时候)

trigger1 = stateno = 500 ;处于state号为500的动作时(假设是聚气动作) trigger2 = life<=300 ;血小于300时

trigger2 = var(30) = 2 ;当某个变量var(30)为2的时候 value = 5 ;加气的值为5

其中triggerall是最主要的条件,满足后接下来才判断是否能满足trigger1或者trigger2。而trigger1和trigger2两者之间是或的关系。但2个trigger2之间是和的关系,2者都得满足,才算是真正满足trigger2。如果有3个trigger2,那3个的条件都得满足,依此类推。 只要满足triggerall,再满足trigger1或trigger2两者之一,就能执行type所定义的事情(这里是加气)。

注意:写的时候trigger1后面别直接跟trigger3,别跳号,会出问题的。。。

所以这个state的解读就是,当比赛进行中的前提下,在做state号为500的聚气动作的时候,或者血量小于300且var(30)=2的时候,就加5气。

由于mugen是每帧判断一次trigger,通常在60FPS下1秒有60帧,所以实际效果是在满足条件的时候,每秒钟回复300气。 PS:分号后是注释,你可以随便写点说明文字之类的话,程序不会把分号后的内容读进去的。但分号必须用英文半角(上面说过了)。

最后再介绍下常用的逻辑符号 && 和 || 或 ! 否

比如trigger1 = (life > 500 && power <1000) || var(30)!=2

就是当血量大于500且能量小于1000,或var(30)不等于2的时候,trigger成立

另外像!var(59)这种表达,就相当于var(59)=0

Episode 1

ai开关

ai开关有什么用?是控制ai的开启和关闭的。 一个人物有被人操纵的时候,和被ai操纵的时候。

ai开关的作用,就是被人操纵的时候,不开启ai。而cpu操纵的时候,会自动判断并开启ai。

所以说好的ai开关要判断出到底是人在操作,还是电脑在操纵。该开ai的时候开,不该开的时候不开。

首先要说明一点:mugen是有自带的ai的,只是这个ai是随机发招,防御而已,相当于乱按流,出招频率也不高,很纱布。

但我们可以利用这个默认ai来判断是不是人在操作。

先给个ai开关的实例吧。

ai开关通常分2部分,第1部分通常在cmd里,就是为ai设计的指令 以下就是某体术青子的ai用cmd ; AI

[Command]

Name = \

Command = a, b, c, x, y, z, s Time = 0 [Command]

Name = \

Command = x, y, z, a, b, c, s Time = 0 [Command]

Name = \

Command = z, y, x, c, b, a, s Time = 0 [Command]

Name = \

Command = c, b, a, z, y, x, s Time = 0 [Command]

Name = \

Command = a, b, c, z, y, x, s Time = 0 [Command]

Name = \

Command = z, y, x, a, b, c, s Time = 0 [Command]

Name = \

Command = x, y, z, c, b, a, s Time = 0 [Command]

Name = \

Command = c, b, a, x, y, z, s Time = 0 [Command]

Name = \

Command = a, a, a, a, a, s

Time = 0 [Command]

Name = \

Command = b, b, b, b, b, s Time = 0 [Command]

Name = \

Command = c, c, c, c, c, s Time = 0 [Command]

Name = \

Command = x, x, x, x, x, s Time = 0 [Command]

Name = \

Command = y, y, y, y, y, s Time = 0 [Command]

Name = \

Command = z, z, z, z, z, s Time = 0 [Command]

Name = \

Command = s, s, s, s, s, s Time = 0 [Command]

Name = \Command = U, U, U, U Time = 0 [Command]

Name = \Command = D, D, D, D Time = 0 [Command]

Name = \Command = F, F, F, F Time = 0 [Command]

Name = \Command = B, B, B, B Time = 0

这些指令应该能看懂吧,以防万一再说以下,U=UP(上),F=forward(前),B=back(后),D=down(下)

小写的a,b,c,x,y,z就表示6个拳脚之类的攻击键,s是start键,time就是表示必须在几F内输入指令才会成功。 至于其他符号

1.保持状态 (/) 例如:/D 意思为必须保持 \下\这个按键不放.

当然也可以用在一组命令里,意为在按下控制键之前方向键保持按下状态,当然/后可以用控制键,不光是方向键.

注意:标记“~”用于设置按键状态为放开 例如: ~a表示这个键不用保持按下状态,可以按下后即放开.

在~前加一个数字,用于表达按下时间的长短.例如:~30a 2.动作方向 ($) 例如:$D 意为DB,DF 也在.

3.按键同时 (+) 例如:a+b+c 意为这三个键同时按下. 这些命令是可以组合的,例如: ~30$D,a+b

所以第一个“ai_0”的command的意思是

必须在0F内输入a, b, c, x, y, z, s,显然这是人办不到的,以下19个ai指令都必须在0F内输入,都是人类完成不了的事。

所以当人操作的时候,是不会成功按出这19个ai指令的,永远都不可能发出ai指令。 但是当cpu操纵的时候就不一样。mugen自带的ai虽然纱布,但是ai和人不一样,不用“输入”,便可以直接成功发出指令。

mugen自带的ai是只要是定义过的指令都会随机用。那样就会有相当概率发出ai指令。

发出ai指令的后果是怎样?当然不能没结果,我们要的结果就是当有一个人类不能完成的ai指令被发动时,就判断出这是cpu在操纵人物, 然后启动我们自己编写的ai

而这必须由ai开关的第二部分完成。看一下实例吧。 第2部分,ai的启动 [State -3, AI]

Type = VarSet ;设置变量的值

TriggerAll = Var(59) = 0 ;当var(59)=0(ai没有被开启的时候) triggerall = RoundState = [1,2] ;当对局处于开始阶段或进行阶段的时候 Trigger1 = command = \Trigger2 = command = \Trigger3 = command = \Trigger4 = command = \Trigger5 = command = \Trigger6 = command = \Trigger7 = command = \Trigger8 = command = \Trigger9 = command = \Trigger10 = command = \Trigger11 = command = \Trigger12 = command = \Trigger13 = command = \

本文来源:https://www.bwwdw.com/article/6f3o.html

Top