Don't forget to read the rules of the forum. No current release restrictions. | Help Search Members Calendar

Logged in as: The Dreamslayer ( Log Out ) | My Controls · 0 New Messages · View New Posts · My Assistant

Mugen DEV Forum -> Development and Help Forums -> Development Help

Pages: (2) [1] 2 ( Go to first unread post ) |

AI
Track this topic | Email this topic | Print this topic

Chaos Ghost | Posted: Mar 9 2003, 05:49 PM
Newbie Group: Members Posts: 2 Member No.: 2484 Joined: 9-March 03
does any know how to make an AI for a char need help

| Posted: Mar 9 2003, 06:02 PM
Group: Posts: Member No.: Joined: -- | I do! I'll help you out bud. The first thing you gotta do is make the ai activators. There is no clean way to activate ais with characters yet, but the best way is to make commands in the cmd file that are impossible for normal people to do. Here is an example.
[Command]
name = "cpu"
command = ~D,UB, F, a, s, U,x+y+z+a+b+c+s
time = 1
You should make several of these, remembering to keep the time at 1 so the moves are impossible.
Then, go down to the second have of the command file, and make it so that when that move is done, a variable is changed.
[State -1, AI]
type = VarSet
trigger1 = command = "cpu"
v = 30
value = 1
Now that you have that set up, you have to make the ai moves. This is the trickiest part, since every characters is different. If you have proper knowledge of Mugen characters, all you have to do is make moves activate under certain conditions. Like when you want the move to be done...plus you have to include the trigger var(30) = 1(just in the example), and a random trigger so that the move doesn't happen every single time in that situation.
I hope that helps, but ai's is a rather tricky process.

Loona | Posted: Mar 9 2003, 11:47 PM
Sorcerologist Group: Members Posts: 387 Member No.: 1176 Joined: 26-October 02
If I recall correctly, there's an example of this method at Necromancer's Code Archive, currently hosted at XGargoyle's site: http://xgargoyle.mgbr.net
One question, while we're at it: there's a sort of command that allows motions involving holding a buttons or a direction for a certan amount of time (like holding back for 1 or 2 seconds for a Sonic Boom in SF2, for example) - for its depiction in the [command] format you have to type the amount of ticks during which the button in question must be held, but you still have the "time parameter"...
Considering that, is it possible to use a command like "holding Down for 30 ticks" with "time" set to 1 as an AI activator, or would Mugen reject it?
If it worked, it might make it possible to create shorter impossible command strings to activate AI with...
--------------------
Sorcerology 101 - Lesson 2 - Experimentation: Trial and Error

XGargoyle | Posted: Mar 10 2003, 12:52 AM
Super Saiyajin Ninja Group: Admin Posts: 826 Member No.: 6 Joined: 13-September 02
[quote author=Loona link=board=6;threadid=1016;start=0#msg10970 date=1047253658]
One question, while we're at it: there's a sort of command that allows motions involving holding a buttons or a direction for a certan amount of time (like holding back for 1 or 2 seconds for a Sonic Boom in SF2, for example) - for its depiction in the [command] format you have to type the amount of ticks during which the button in question must be held, but you still have the "time parameter"...
Considering that, is it possible to use a command like "holding Down for 30 ticks" with "time" set to 1 as an AI activator, or would Mugen reject it?
It it worked, it might make it possible to create shorter impossible command strings to activate AI with...
[/quote]
In well-made AIs, this won't happen. During AI, the fighter can access directly to the states (no need to hold buttons and so). If you made a state in which you can't follow a certain movement by another one, then AI won't activate that combo.
AI work in the folowing way:
-Computer controlled fighter starts executing random commands (the normal ones a human can do and the "AI activators")
-After an "AI activator" is executed, a variable is set ON, for example var(30)=1. Now, AI Mode is activated.
-Now computer has direct access to combos and movements under CPU mode. It's not necessary to input any other command for the CPU to execute more commands. As long as he gain control, and under certain conditions, he will execute another "CPU only" movement/combo.
--------------------
XGargoyle: Hoarding mugen creations since 1979
http://xgargoyle.mgbr.net

Baby Bonnie Hood | Posted: Mar 10 2003, 12:57 AM
Junior Member Group: Members Posts: 245 Member No.: 2245 Joined: 8-February 03
[quote author=XGargoyle link=board=6;threadid=1016;start=0#msg10973 date=1047257525]During AI, the fighter can access directly to the states (no need to hold buttons and so).[/quote]
No-charge Smile & Missiles and instant Happy Daggers ahoy! ;D
--------------------
The Silent Storm palette is mandatory for all MUGEN characters >:D

Loona | Posted: Mar 10 2003, 01:16 AM
Sorcerologist Group: Members Posts: 387 Member No.: 1176 Joined: 26-October 02
I read Necro's and SMI's tutorial (in portuguese, at his Geocities site) and well as some other sources on the subject, but the exact topic of a charging time being greater than the "time" parameter - which just occured to me as I read this topic, as a more elegant way to define an impossible command that only the computer mght use - is what's keeping me wondering... It's not impossible that somewhere in Mugen's code is something that rejects or ignores a charge-time greater than the whole command's input time, but I really don't know if Elecbyte bothered, so I was wondering if anyone had already tried that...
*considerings trying that on Shiva along with the AI blocking tips on Necro's tutorial, since the character only has about 3 attacks implemented so far*
--------------------
Sorcerology 101 - Lesson 2 - Experimentation: Trial and Error

SMI | Posted: Mar 10 2003, 02:08 AM
Member Group: Members Posts: 62 Member No.: 111 Joined: 14-September 02
I've been using commands such as
[Command]
name = "ai1"
command = y,y,y,y,y,y,y,y,y,y,a+b+c+z+x+y+U+D+F+B
time = 1
for AI activation commands for quite a time. The buttons sum implies that keyboard users won't be able to access it (keyboard buffer overflow) and the directions sum will avoid joypad users to access it as well. Works quite nice.
--------------------
[murray voice]
I'm a powerful demonic force!
I'm the harbinger of your doom!
And the forces of darkness will applaud me as I stride through the gates of hell carrying your head on a pike!
[/murray voice]

Baby Bonnie Hood | Posted: Mar 10 2003, 02:29 AM
Junior Member Group: Members Posts: 245 Member No.: 2245 Joined: 8-February 03
I don't really recommend using Necro's AI Guard code, because look at this:
[State -3, StandGuard]
type = ChangeState
triggerall = (Var(0) = 1) && (StateType = S) && (Pos Y >= 0) && (P2BodyDist Y <= 0)
triggerall = (P2BodyDist Y >= -120) && (P2StateType != C) && (P2MoveType = A)
trigger1 = (P2BodyDist X <= 120) && (Random <= 799) && (Ctr1)
trigger2 = (StateNo = [140, 155]) || (StateNo = [100, 105])
value = 130
See the bolded part? That means that the AI, while already blocking attacks, must go back to the guarding state. This results in skipping the "getting knocked away while blocking" states entirely; as a result, a character using this AI code will not be pushed away while blocking (and will also float away in the air) and also will not receive any block damage. This code probably worked perfectly back in an older MUGEN version, but not anymore.
Instead, use these AI Guard codes of mine:
;AI Guard
[State -1, Stand guard]
type = ChangeState
triggerall = var(*) > 0
triggerall = StateType != A
triggerall = P2statetype != C
triggerall = (P2Movetype = A) || (enemy, NumProj > 0)
trigger1 = ctrl = 1
value = 130
[State -1, S-to-C guard]
type = ChangeState
triggerall = var(*) > 0
triggerall = StateType != A
triggerall = P2statetype = C
triggerall = (P2Movetype = A) || (enemy, NumProj > 0)
trigger1 = stateno = 150
value = 152
[State -1, Crouch guard]
type = ChangeState
triggerall = var(*) > 0
triggerall = StateType != A
triggerall = P2statetype = C
triggerall = (P2Movetype = A) || (enemy, NumProj > 0)
trigger1 = ctrl = 1
value = 131
[State -1, C-to-S guard]
type = ChangeState
triggerall = var(*) > 0
triggerall = StateType != A
triggerall = P2statetype != C
triggerall = (P2Movetype = A) || (enemy, NumProj > 0)
trigger1 = stateno = 152
value = 150
[State -1, Air guard]
type = ChangeState
triggerall = var(*) > 0
triggerall = StateType = A
triggerall = (P2Movetype = A) || (enemy, NumProj > 0)
trigger1 = ctrl = 1
value = 132
I've been using these ever since I added an AI to BBH, and they've always been working flawlessly
--------------------
The Silent Storm palette is mandatory for all MUGEN characters >:D

Man M | Posted: Mar 10 2003, 02:37 AM
Junior Member Group: Members Posts: 177 Member No.: 55 Joined: 14-September 02
[quote]Considering that, is it possible to use a command like "holding Down for 30 ticks" with "time" set to 1 as an AI activator, or would Mugen reject it?[/quote] It wouldn't work because apparently the time parameter doesn't matter for those commands, so the AI var would be set if a human player pressed down for at least 30 ticks. I tried the command "~30$B" as a trigger for a VarSet, and it set the variable right after I released the button.

tales_of_x | Posted: Mar 10 2003, 04:32 PM
Junior Member Group: Members Posts: 184 Member No.: 643 Joined: 24-September 02
[quote author=Loona link=board=6;threadid=1016;start=0#msg10980 date=1047263856]
Considering that, is it possible to use a command like "holding Down for 30 ticks" with "time" set to 1 as an AI activator, or would Mugen reject it?[/quote]
I also thought that a long time ago, but I think that the commands time begins when you actually finish the first part..... To explain it well: If you have command = ~30$D, U, b as the command line after that you fulfilled the "release down after pressing it for 30 ticks or more" part then the command time starts to count.........
Edit: I put two [ quote ] instead of the beginning and the end........
--------------------
Boys and girls, make love

| Posted: Mar 10 2003, 06:53 PM
Group: Posts: Member No.: Joined: -- | BBH, that's exactly why I hate Necro's AI routines. Cheap. ;_;

Baby Bonnie Hood | Posted: Mar 10 2003, 11:14 PM
Junior Member Group: Members Posts: 245 Member No.: 2245 Joined: 8-February 03
No, they're not cheap. They're just badly done
--------------------
The Silent Storm palette is mandatory for all MUGEN characters >:D

Loona | Posted: Mar 11 2003, 01:55 AM
Sorcerologist Group: Members Posts: 387 Member No.: 1176 Joined: 26-October 02
BBH: thanks for the tip!
I assume this means I have permission to use and modify (maybe in some cases replace the blocking with dodging, for variety's sake...) the code as long as you're credited, right?...
[quote author=Star Ocean link=board=6;threadid=1016;start=0#msg10991 date=1047313975]
[quote author=Loona link=board=6;threadid=1016;start=0#msg10980 date=1047263856]
Considering that, is it possible to use a command like "holding Down for 30 ticks" with "time" set to 1 as an AI activator, or would Mugen reject it?[/quote]
I also thought that a long time ago, but I think that the commands time begins when you actually finish the first part..... To explain it well: If you have command = ~30$D, U, b as the command line after that you fulfilled the "release down after pressing it for 30 ticks or more" part then the command time starts to count.........[/quote]
What if the charging command isn't the first one? Something like:
command = a, ~70$U
time = 1
The weekend will probably be a good time to try and put this to practice...
--------------------
Sorcerology 101 - Lesson 2 - Experimentation: Trial and Error

Man M | Posted: Mar 11 2003, 02:31 AM
Junior Member Group: Members Posts: 177 Member No.: 55 Joined: 14-September 02
[quote]What if the charging command isn't the first one? Something like:
command = a, ~70$U
time = 1[/quote] That would work At least I wasn't able to do the command, and the AI was

Baby Bonnie Hood | Posted: Mar 11 2003, 07:50 AM
Junior Member Group: Members Posts: 245 Member No.: 2245 Joined: 8-February 03
[quote author=Loona link=board=6;threadid=1016;start=0#msg11007 date=1047347727]I assume this means I have permission to use and modify (maybe in some cases replace the blocking with dodging, for variety's sake...) the code as long as you're credited, right?...[/quote]
Yep
--------------------
The Silent Storm palette is mandatory for all MUGEN characters >:D

« Next Oldest | Development Help | Next Newest »

Pages: (2) [1] 2 |

Close Topic Options
Track this topic
Receive email notification when a reply has been made to this topic and you are not active on the board.
Subscribe to this forum
Receive email notification when a new topic is posted in this forum and you are not active on the board.
Download / Print this Topic
Download this topic in different formats or view a printer friendly version.
- M.U.G.E.N Development Forum - Contact an admin - ELECBYTE - Shin Mugen -
Powered by Invision Power Board(U) v1.2 © 2003 IPS, Inc.