Olá pessoal!  Estou postando um tutorial de inteligência artificial, espero que gostem! 
 
 =================== 
 = --------------------------------------- = 
 = Inteligência Artificial = 
 = by: Equinócio - 13/07/2004 = 
 = Modificado em - 03/03/2006 = 
 = --------------------------------------- = 
 = e-mail: igyur@yahoo.com = 
 = --------------------------------------- = 
 ========================== 
 AVISO: 
 -------------------------------------------------------------------------------------- 
 - Este tutorial visa o auxílio para criar Inteligência Artificial em chars de MUGEN. 
 - Se você quiser pode hospedar este tutorial em seu site. Não precisa me pedir. 
 -------------------------------------------------------------------------------------- 
 Introdução: 
 ----------- 
 O que será mostrado neste tutorial é válido tanto para IA no CMD quanto para IA no CNS. Você não precisa ser um grande conhecedor em CMD ou CNS para elaborar uma IA. 
 É importante, porém, que você saiba as regras a serem obedecidas no CMD. Saber fazer 
 comandos, ordená-los de forma adequada e conhecer alguns Sctrls e Triggers é importante para o entendimento do Tutorial e também da IA. 
 A IA compreende uma seqüência de comandos para ativá-la e as rotinas que serão executadas de acordo com as imposições estabelecidas pelos Triggers. 
 ===================================================== 
 Seqüência de Comandos: 
 ---------------------- 
 A Seqüência de Comandos da IA deve vir antes dos comandos do seu personagem. 
 Eles são os primeiros a aparecer no CMD. Estes comandos devem ser exclusivos 
 do computador, pois caso contrário, se um jogador humano (você) acioná-los sem querer, 
 o seu personagem terá "vida própria" e passará a jogar sozinho, sem 
 que você tenha o controle dele. 
 -> Em alguns chars a Seqüência de Comandos vem entre ou depois dos comandos 
 do personagem. Façamos da maneira mais fácil, que é colocar 
 os comandos da IA no início do CMD. 
 Exemplo: 
 ;=================== 
 ;= ---------------------------- = 
 ;= KFM's Commands = 
 ;= File for M.U.G.E.N = 
 ;= ---------------------------- = 
 ;=================== 
 [Command] 
 name = "CPU_1" 
 command = F, F, F, F, F, F 
 time = 1 
 [Command] 
 name = "CPU_2" 
 command = a, a, a, a, a, a 
 time = 1 
 [Command] 
 name = "CPU_3" 
 command = D, U, D, U, D, U 
 time = 1 
 [Command] 
 name = "CPU_4" 
 command = F, x, F, B, y, B 
 time = 1 
 [Command] 
 name = "CPU_5" -> Nome do comando. Poderia ser "IA_5" ou qualquer outro que você quisesse. Para facilitar as coisas agora e depois, sugiro que coloque o mesmo nome 
 nos comandos, mudando apenas o número, como vê no exemplo. 
 command = c, z, c, z, c, z -> Comando a ser executado pelo computador. 
 O número de dígitos serve também para garantir a exclusividade da IA, a fim de que um jogador humano (você) não possa acioná-la. Por este motivo, dê preferência a 
 comandos com elevado número de dígitos. Algo entre 6 a 12 dígitos, por exemplo. 
 time = 1 -> Tempo para executá-lo. Somente uma máquina pode executar este comando em tão pouco tempo. 
 1 game-tick = 1/60 = 0,01666... segundo!!! 
 Isto é, portanto, humanamente impossível de ser realizado. 
 De acordo com a probabilidade, quanto mais comandos como estes forem colocados, 
 maior a chance de a IA ser ativada em menos tempo. Varia muito o número de comandos, 
 pois há programadores que colocam 15 e outros que colocam cerca de 50 comandos para a IA. 
 ===================================================== 
 Setando uma Variável: 
 --------------------- 
 Este procedimento serve para que, ao setar uma variável, 
 a IA seja acionada durante a luta. 
 Primeiro deve-se escolher uma variável dentre as 60 disponíveis para acionar a IA. 
 Geralmente escolhe-se a Var(59), mas você pode escolher a que quiser, contanto que 
 a mesma não esteja sendo usada no CNS. Dê preferência a uma Var de valor alto, 
 para que ela não seja resetada entre rounds, estando, neste caso, 
 com um valor maior ou igual ao do parâmetro IntPersistIndex* no CNS. 
 Toda variável no início possui valor 0, e para aciná-la deve-se atribuir um valor 
 a mesma. Peguemos como exemplo a Var(59) e atribuamos a ela o 
 valor 1 usando o Sctrl VarSet. 
 OBS*: Você deve mudar o valor do parâmetro IntPersistIndex no CNS. 
 Se no exemplo a Var é 59, mude para 58. Enfim, basta colocar um valor 
 inferior a Var escolhida. Fazendo isto ela não resetará entre rounds. 
 Exemplo: 
 [Statedef -1] 
 ;------------------------- 
 ; Inteligência Artificial 
 ;============== 
 [State -1] 
 type = VarSet 
 trigger1 = command = "CPU_1" 
 trigger2 = command = "CPU_2" 
 trigger3 = command = "CPU_3" 
 trigger4 = command = "CPU_4" 
 trigger5 = command = "CPU_5" 
 trigger6 = command = "CPU_6" 
 trigger7 = command = "CPU_7" 
 trigger8 = command = "CPU_8" 
 trigger9 = command = "CPU_9" 
 trigger10 = command = "CPU_10" 
 trigger11 = command = "CPU_11" 
 trigger12 = command = "CPU_12" 
 trigger13 = command = "CPU_13" 
 trigger14 = command = "CPU_14" 
 trigger15 = command = "CPU_15" 
 trigger16 = command = "CPU_16" 
 v = 59 
 value = 1 
 Como vê, 16 comandos podem ser acionados pela IA. 
 Coloque tantos triggers como este quantos forem o número de comandos colocados 
 na Seqüência de Comandos. Então se você colocou 40 comandos para a IA, 
 coloque 40 triggers aqui. O básico ao setar uma variável é usar o Trigger 
 Command, mas você pode usar Triggerall com o Trigger Ctrl, por exemplo. 
 PS: O que foi dito agora deverá ser feito independente do que optou, pela IA 
 no CMD ou no CNS. Se você optou pela IA no CMD, faça esta parte logo abaixo de 
 "[Statedef -1]". Se preferiu fazer a IA no CNS, faça esta parte logo abaixo 
 de "[Statedef -2]" ou "[Statedef -3]". 
 ===================================================== 
 Rotinas da IA: 
 -------------- 
 1º Exemplo: Rotina de Stand Guard 
 --------------------------------- 
 [State -1, 1] 
 type = ChangeState 
 trigger1 = Ctrl 
 trigger1 = RoundState = 2 
 trigger1 = var(59) != 0 
 trigger1 = Random <= 650 
 trigger1 = P2BodyDist X <= 75 
 trigger1 = StateType = S 
 trigger1 = P2MoveType = A 
 value = 130 
 Ctrl -> Apenas se tiver o controle. 
 RoundState = 2 -> Esta rotina só ocorrerá durante a luta em sí, não podendo 
 ser acionada nem na introdução e nem no desfecho dela. 
 Var(59) != 0 -> Ela é de ação exclusiva da IA, não podendo ser executada 
 por um jogador humano. 
 Random <= 650 -> A probabilidade de isto ocorrer é de 65%. Desta forma, há 35% de chance de o personagem atacar também. Assim ele não fica somente na defesa. 
 P2BodyDist X <= 75 -> O oponente deve estar a menos de 75 pixels de distância. 
 StateType = S -> O personagem deve estar em pé, já que a própria 
 defesa é Stand (130). 
 P2MoveType = A -> O adversário deve estar atacando. 
 ===================================== 
 2º Exemplo: Projétil 
 -------------------- 
 Neste exemplo, o personagem lança um projétil qualquer contra o oponente. 
 ;Esfera de Fogo 
 [State -1, 2] 
 type = ChangeState 
 trigger1 = Ctrl 
 trigger1 = RoundState = 2 
 trigger1 = var(59) != 0 
 trigger1 = p2bodydist X >= 140 
 trigger1 = Random <= 400 
 trigger1 = statetype = S 
 trigger1 = p2statetype != C 
 value = 1200 
 Diferenças em relação ao primeiro exemplo: 
 - Distância em relação ao oponente em que a IA executará a rotina: X >= 140 (pixels) 
 - Probabilidade de a rotina ocorrer: 40%, Random <= 400 
 - Dependendo do projétil, o adversário não pode estar agachado. "P2statetype != C" 
 Coloquei este segundo exemplo para que você perceba o que é básico em uma rotina. 
 Triggers que definem controle, distância, probabilidade e estado do personagem são 
 fundamentais. A criatividade e bom senso do programador definirão o que mais será 
 colocado na rotina. 
 -> Se for usar trigger2, 3, 4 e assim por diante, coloque "RoundState = 2" 
 e "var(59) != 0" em Triggerall. A ordem das rotinas pode ser qualquer uma. 
 O importante é a chance de ocorrência da rotina (usando-se Random, GameTime,...). 
 -------------------------------------------------------------------------------------- 
 As rotinas, tanto no CMD como no CNS, são parecidas. Mas há particularidades, 
 como as que estão logo abaixo. 
 Rotinas no CMD: 
 --------------- 
 Assim como a Seqüência de Comandos vem antes dos comandos do seu personagem, 
 as rotinas da IA também devem vir antes das rotinas do seu char. 
 Nas rotinas feitas nesse arquivo deve-se usar "State -1". 
 Rotinas no CNS: 
 --------------- 
 São parecidas com as do CMD, mas nas rotinas no CNS deve-se usar 
 "State -2" ou "State -3". Alguns programadores optam por fazer as rotinas em outro 
 arquivo CNS, mas isto não é regra, apenas para ficar organizado. 
 Para ser mais claro, em ambos os casos as rotinas vêm logo abaixo do Sctrl VarSet. 
 Exemplo: 
 Se fosse no CMD, teríamos: 
 [Statedef -1] 
 ;------------------------- 
 ; Inteligência Artificial 
 ;============== 
 . 
 . 
 . 
 trigger13 = command = "CPU_13" 
 trigger14 = command = "CPU_14" 
 trigger15 = command = "CPU_15" 
 trigger16 = command = "CPU_16" 
 v = 59 
 value = 1 
 (Coloque as rotinas a partir daqui, em "State -1") 
 Se fosse no CNS, teríamos: 
 [Statedef -2] ou [Statedef -3] 
 ;------------------------- 
 ; Inteligência Artificial 
 ;============== 
 . 
 . 
 . 
 trigger13 = command = "CPU_13" 
 trigger14 = command = "CPU_14" 
 trigger15 = command = "CPU_15" 
 trigger16 = command = "CPU_16" 
 v = 59 
 value = 1 
 (Coloque as rotinas a partir daqui, em "State -2" ou "State -3") 
 -> Nas Rotinas, o Sctrl ChangeState é o mais usado, já que é ele 
 que muda o estado do personagem. 
 Porém, verifica-se em alguns personagens o uso de Sctrls como 
 PowerAdd, PowerSet, LifeAdd em seus CMDs. 
 Sctrls como AssertSpecial, Helper, Explod, HitBy/NotHitBy, Playsnd 
 são alguns exemplos que podem ser aplicados na IA feita no arquivo CNS. 
 Lembre-se de colocar em toda rotina, seja qual for o Sctrl, 
 os triggers "RoundState = 2" e "Var(59) != 0". 
 Eles são muito importantes (explicado no 1º exemplo de Rotinas da IA). 
 -------------------------------------------------------------------------------------- 
 Agradecimentos: 
 - Ixnaydk e Midnight Spirit: por me ensinarem o funcionamento da Inteligência Artificial. 
 -------------------------------------------------------------------------------------- 
 Espero que o tutorial o auxilie durante a criação de Inteligência Artificial. 
 Se tiver alguma dúvida, contacte-me por e-mail. 
 Boa Sorte, 
 Equinócio.