Naruto SuperStorm3
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Naruto SuperStorm3


 

 Como Criar AI (Inteligência Artificial)

Ir para baixo 
AutorMensagem
NightWolf
Admin
Admin
NightWolf


Regras: Regras: :
Como Criar AI (Inteligência Artificial) Green_left100 / 100100 / 100Como Criar AI (Inteligência Artificial) Green_right

Mensagens Mensagens : 858
Data de inscrição Data de inscrição : 22/12/2009
Elemento 1: : Raiton
Elemento 2: : Suiton
Elemento 3: : Doton
Kekkei Genkai : : Rinnengan
Vila: : Konohagakure
Clan : Nara
Localização : No forum

Dados Ninja
. .: 40

Como Criar AI (Inteligência Artificial) Empty
MensagemAssunto: Como Criar AI (Inteligência Artificial)   Como Criar AI (Inteligência Artificial) Icon_minitimeTer Nov 01, 2011 4:44 pm

Copiei o post do cara e colei aqui,créditos à ele:

Olá pessoal!

Estou postando um tutorial de inteligência artificial, espero que gostem! smile

===================
= --------------------------------------- =
= 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.
Ir para o topo Ir para baixo
http://www.naruto2morrow.blogspot.com/
 
Como Criar AI (Inteligência Artificial)
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Quem Poderia criar esse char pra mim
» HOLA ALGUIEN ME PUEDE A YUDAR A CRIAR UN CHAR DE SASUKE
» Quer ganhar rep?
» Tutoriais para criar um combo, goupes, efeitos, etc para seu char.
» Tutorial: Como selecionar diferentes Smileys?

Permissões neste sub-fórumNão podes responder a tópicos
Naruto SuperStorm3 :: Aprenda a Criar!!!! :: Escola de Chars :: Tutoriais-
Ir para: