collapse

Author Topic: Preciso de ajuda em códicos de combos na IA  (Read 1174 times)

0 Members and 1 Guest are viewing this topic.

Offline lideroptimus

  • Initiate
  • **
  • Posts: 66
  • Last Login:October 21, 2014, 05:50:45 PM
Preciso de ajuda em códicos de combos na IA
« on: June 17, 2009, 01:09:53 AM »
Ficaria muito grato se Alguém ou alguma alma caridosa, colocasse um tutorial passo à passo de como codificar combos numa IA (Inteligência Artificial) em triggers.
Eu fiz a primeira fase  da IA de Batman de Alucard, e me ofereci pra ajudar com combos no chão e aéreos. Pensei que fosse ser fácil, e ainda é meio complexo para mim, será que alguém no Brasil, que conhece, poderia me ajudar com esta questão?
Isso porque me interesei por mugen e gostaria de comessar pela IA e depois passaria para parte de criação.

Deixo aqui registrado o porque do pedido, e espero que tenha resposta.

Sem mais, Lideroptimus.



Offline andersontavars

  • Initiate
  • **
  • Posts: 85
  • Country: Brazil br
  • Last Login:July 02, 2020, 04:38:49 PM
    • RdF - paodeacuca
Re: Preciso de ajuda em códicos de combos na IA
« Reply #1 on: June 17, 2009, 01:53:17 AM »
Ficaria muito grato se Alguém ou alguma alma caridosa, colocasse um tutorial passo à passo de como codificar combos numa IA (Inteligência Artificial) em triggers.
Eu fiz a primeira fase  da IA de Batman de Alucard, e me ofereci pra ajudar com combos no chão e aéreos. Pensei que fosse ser fácil, e ainda é meio complexo para mim, será que alguém no Brasil, que conhece, poderia me ajudar com esta questão?
Isso porque me interesei por mugen e gostaria de comessar pela IA e depois passaria para parte de criação.

Deixo aqui registrado o porque do pedido, e espero que tenha resposta.

Sem mais, Lideroptimus.


Olá amigo, pra ser sincero, não comecei pela IA, até porque pra mim isto seria a ultima coisa a fazer, estou estudando o tutorial deste site, já lí ele umas 3 vezes e pra mim ainda não foi o suficiente, ai vai o link, http://www.mugend.kit.net/

Um abraço ai e espero ter ajudado, estou procurando o tutorial de AI, postarei em breve!

Offline ZVitor

  • IMT Content Architect
  • *
  • Posts: 2683
  • Last Login:January 01, 2024, 07:22:36 PM
    • Email
Re: Preciso de ajuda em códicos de combos na IA
« Reply #2 on: June 17, 2009, 02:18:24 AM »
cara, como o andreson disse.... IA eh a ultima parte.... e por coerência seria bom que ela tivesse os mesmo combos do char, embora nem sempre isso aconteça... aqui vai um pequeno exemplo de combo em IA, tirado do scruffy template:

[State -1, Stand Light Punch]
type = ChangeState
value = 200
triggerall = (statetype = S) && var(59)
trigger1 = ctrl = 1
trigger1 = (enemynear, p2dist x <= 60 && enemynear, movetype != A && Random <= 200)

[State -1, Stand Medium Punch]
type = ChangeState
value = 210
triggerall =(statetype = S) && var(59)
trigger1 = (stateno = 200) && (movecontact = 1)


obeservaçõs:
- o trigger que diz que eh IA é o var(59), ou var(59) = 1 .... se o change state for do char deve ter !var(59) ou var(59)!=1
- olha o trigger1 do state 200, ele só acontece SE o inimigo estiver proximo, SE ele não estiver no ar e ainda tem um SE para  o random, ou seja tem uma porcentagem de change do soco fraco acontecer.... mas se tu ver o trigger1 do soco medio, ele vaqi acontecer toda vez que ele estiver fazendo um soco fraco e houver um contato, ou seja combo.... do jeito que está é 100% de chance dele fazer um soco medio se acertar um fraco.

Offline felideo

  • Initiate
  • **
  • Posts: 64
  • Last Login:June 16, 2023, 08:12:55 PM
Re: Preciso de ajuda em códicos de combos na IA
« Reply #3 on: June 17, 2009, 11:31:06 PM »
Opa , ae pessoal... achei este tuto no forum pão de mugen.. é sobre apenas IA... bem os combos são como o ZVitor citou... tambem sou leigo nisso e estou aprendendo tambem, abraços :thumbsup:

Aprenda a fazer IA para o char de uma forma fácil!

Como vê, meu site e e-mail estão no tutorial.
Acesse o site se quiser fazer o download do tutorial e tê-lo mais bem organizado. Escreva para mim caso tenha dúvidas.

Editarei o post em futuras atulizações.

Boa sorte!


QUOTE
===================
= --------------------------------------- =
= Inteligência Artificial =
= by: Equinócio - 13/07/2004 =
= Modificado em - 03/03/2006 =
= --------------------------------------- =
= site: http://2dgraphic.tripod.com =
= e-mail: igyur@yahoo.com =
= --------------------------------------- =
==========================


AVISO:
--------------------------------------------------------------------------------------
- Este tutorial visa o auxílio para criar Inteligência Artificial em chars de MUGEN.

- Se este tutorial o auxiliar de alguma maneira, peço que não coloque meu nome em lugar algum como forma de agradecimento.

- Se você quiser pode hospedar este tutorial em seu site. Não precisa me pedir.

- Fiz pequenas modificações no tutorial em 03/03/2006. Tentei dar melhores explicações.

--------------------------------------------------------------------------------------

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:

- Deus: por me dar oportunidade de aprender sobre MUGEN e Inteligência Artificial.

- 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.
« Last Edit: June 18, 2009, 03:01:44 AM by felideo »

Offline lideroptimus

  • Initiate
  • **
  • Posts: 66
  • Last Login:October 21, 2014, 05:50:45 PM
Re: Preciso de ajuda em códicos de combos na IA
« Reply #4 on: June 18, 2009, 02:57:33 PM »
cara, como o andreson disse.... IA eh a ultima parte.... e por coerência seria bom que ela tivesse os mesmo combos do char, embora nem sempre isso aconteça... aqui vai um pequeno exemplo de combo em IA, tirado do scruffy template:

[State -1, Stand Light Punch]
type = ChangeState
value = 200
triggerall = (statetype = S) && var(59)
trigger1 = ctrl = 1
trigger1 = (enemynear, p2dist x <= 60 && enemynear, movetype != A && Random <= 200)

[State -1, Stand Medium Punch]
type = ChangeState
value = 210
triggerall =(statetype = S) && var(59)
trigger1 = (stateno = 200) && (movecontact = 1)


obeservaçõs:
- o trigger que diz que eh IA é o var(59), ou var(59) = 1 .... se o change state for do char deve ter !var(59) ou var(59)!=1
- olha o trigger1 do state 200, ele só acontece SE o inimigo estiver proximo, SE ele não estiver no ar e ainda tem um SE para  o random, ou seja tem uma porcentagem de change do soco fraco acontecer.... mas se tu ver o trigger1 do soco medio, ele vaqi acontecer toda vez que ele estiver fazendo um soco fraco e houver um contato, ou seja combo.... do jeito que está é 100% de chance dele fazer um soco medio se acertar um fraco.

Obrigado zvitor, era exatamente o que eu estava procurando, e ja estou colocando em prática, nada que um pouco de imaginação não resolva. Valeu mesmo ^^

Respondendo a Zvitor e andersontavars, simpresmente comecei pela IA porque gosto muito de personagens inteligentes e é o que me motiva mais a catucar o FightFactory "hehe", acabei catucando mais e por final me interesei. =)

E andersontavars, vou olhar com carinho, este link, pode ser muito utíl.
felideo, eu olhei varaias vezes este tutor sobre IA, e faz tempo, e sinceramente nunca concegui compreender, no entanto, achei um bem mais facil o que aprendi com o usuário de codenome "Liger" na mugen infantry, mas obrigado mesmo assim. se quiser de uma olhada por lá.
« Last Edit: June 18, 2009, 03:05:43 PM by lideroptimus »

Tags:
 


* IMT Facebook

Help us by Donating!

IMT Discord

Join us at our Discord! Click the image below!

* IMT Shoutbox

Sorry, this shoutbox does not exist.

* Recent Posts

SPIDER-VERSE THE AMAZING MUGENSTORY©EPISODE 10 "THE OTHERVERSE" 1080P BY REB3LTV by Rage
[March 27, 2024, 02:44:21 PM]


D2TD VS Showcase Thread by D2TD
[March 24, 2024, 11:09:37 AM]


Tree Of Erebus Stage 1.1 & 1.0 by MatreroG
[March 22, 2024, 08:13:48 AM]


.Batzarro's. Sprite Edits by MatreroG
[March 20, 2024, 07:58:08 AM]


World Heroes 2 Shura Stage by Vegaz by LightFlare
[March 19, 2024, 12:44:28 PM]


MOVED: Prepare your ****! ***** Soldier gets his **** ready in MUGEN! by Rage
[March 18, 2024, 11:08:23 AM]


[WIP] Pocket Dimensional Clash 2 by O Ilusionista
[March 14, 2024, 01:34:08 PM]


R.I.P. Akira Toriyama "Dragonball Legend" by Rage
[March 12, 2024, 03:01:39 PM]


DBFZ Rocky Field (noon) by jafar
[March 10, 2024, 11:59:23 PM]


World Heroes 2 Neo Geegus Stage by Vegaz by LightFlare
[March 09, 2024, 11:04:56 AM]

* IMT Calendar

March 2024
Sun Mon Tue Wed Thu Fri Sat
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 [28] 29 30
31

SimplePortal 2.3.5 © 2008-2012, SimplePortal