Ajuda com IA Dinamico

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Ajuda com IA Dinamico

Mensagem por Convidad em Seg 21 Nov 2011, 14:22

E aew galera,tudo bem ?
Estive criado um jogo estilo yu-gi-oh,com atk ,def e tals,mas o problema e que vejo possibilidades apenas para modo dual player,quero dizer,minha visão de criação desse jogo se limita ao jogo de duelo entre dois players.
Com isso pensei,seria bem legal ter uma espécie de IA para fazer o jogo como o modo single player,apenas você e a máquina.Mas com isso veio minha dúvida :

Como fazer algo automatizado ? Pois colocar possibilidade por possibilidade vai ficar trabalhoso.
A máquina terá que ver o que é melhor por exemplo : destruir um monstro do inimigo ou destruir a carta mágica com efeito "x" ...........
Desde já agradeço Exclamation


Última edição por TRFN em Seg 21 Nov 2011, 14:47, editado 1 vez(es)

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Ajuda com IA Dinamico

Mensagem por saim em Seg 21 Nov 2011, 14:38

Se por "precisas e objetivas" você quer dizer "com código", pode esquecer.
O lance é que uma IA desse porte, além de ser, sim, um bocado complexa, requer um completo entendimento da engine que você tem E das estratégias a serem adotadas em CADA caso. Mais que isso, requer também que se saiba quais estratégiasNÃO adotar. E ainda é preciso saber ser justo com o jogador, ou seja, a IA só tomará as decisões com base nas cartas que estão abertas. Não usar, jamais, as cartas encobertas pra serem levadas em conta nas decisões.

Bom, já que estou gastando seu tempo, um resumo dessas dicas:

será preciso conhecer a engine por completo para:
- Saber quais cartas devem estar na mesa a cada momento
- Saber que tipo de ação um jogador poderia tomar (e, portanto, que tipo de ação a IA pode tomar)
-

será preciso conhecer bem as estratégias para:
- definir qual o melhor curso de ações em função das cartas que estão na mesa e da probabilidade das cartas que não estão na mesa serem desse ou daquele tipo
- em função do que for "melhor", tomar decisões que pareçam ao jogador agressivas, conservadoras ou até idiotas, dependendo do estilo que você quer dar ao inimigo.

Será preciso saber contar cartas para:
- Estimar quais cartas o jogador pode ter e levar a probabilidade dele ter essa ou aquela carta na tomada de decisão.

Enfim, é basicamente uma questão de prever todas as possibilidades e tomar decisões baseadas em que caso o presente momento se encontra. Sei que não é um jogo de truco, mas seria assim: eu tenho zap e sete de copas, o que é garantia de vitória. Assim, a jogada destina-se a valorizar o jogo.
Conservador: Eu jogo a terceira carta, vejo o resultado. Se ganhei, truco a volta. Se perdi, espero pra ver o que o adversário tem e truco na hora de mostrar minha carta, o que pode induzi-lo a aumentar a aposta.
Agressivo: Truco logo de cara. Se o adversário (jogador) correr, fim, pego um "tento" ("tento" é ponto, caso você não jogue truco). Se ele chamar, eu tento PERDER a primeira rodada pra ele gritar que aumentou a aposta (seis!!!) e, na mesma hora, aumento de novo.
Note, em nenhum dos casos eu sei o que o jogador tem, só planejo o curso de ações com base no que está disponível. Se você jogar bastante, vai acabar descobrindo as melhores estratégias e poderá implementá-las na sua IA. Ou isso ou o jogador vai descobrir a melhor estratégia e acabar com os inimigos sem o menor esforço (a menos, claro, que você trapaceie e coloque inimigos impossíveis de serem vencidos).

Não foi muito objetivo, né? Foi mal, mas é que não dá pra ser objetivo. A pergunta É subjetiva.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Ajuda com IA Dinamico

Mensagem por Convidad em Seg 21 Nov 2011, 15:10

Olha cara,desculpa se fui um pouco "inventador de moda" ao colocar aquilo no final,não foi essa minha intenção,precisava mais de ideias que tudo.
É que as vezes não sei expor minhas ideias.
A propósito,jogo truco sim,todos os dias eu jogo(2° a 6° feira,na escola) .
Mas voltando ao assunto,eu entendi o que você quis dizer basicamente,inclusive até tinha pensado em algo "parecido",só não aprofundei como você aprofundou no assunto.O que seria minha ideia é tipo inserir todas as jogadas possíveis e ver qual a melhor,já que o máximo de cartas e 5 no campo de batalha é também o máximo no baralho é 40 cartas.Veja um exemplo do que pensei :
Código:

//c_showed :: Verifica se a carta está para cima ou para baixo.
//card[...] :: Slots para cartas,lugares "possiveis" para ficarem.
//isso é só um "exemplo é ideia",não tem nada a ver com oque estou fazendo por hora............

if((card[0]=exodia && c_showed[0]=true) or (card[1]=exodia && c_showed[1]=true) or (card[2]=exodia && c_showed[2]=true) or (card[3]=exodia && c_showed[3]=true) or (card[4]=exodia && c_showed[4]=true)){
action="perdeu"; // neste exemplo,se o cara tiver um exodia a partida acaba,mas ele tem que estar para cima,mostrada no caso.
}


Essa é minha ideia,mas se eu tiver que transcrever todas as jogadas possíveis,criar uma condição para cada uma das cartas ,segundo as cartas que o jogador tem : vai ficar enorme.
Imagina que tenha 100 cartas diferentes é que eu vou ter que verificar quais 40 cartas o player tem das 100......é ainda analizar as jogadas,todas as possíveis jogadas............queria algo mais dinâmico........

mas vlw ai pela ajuda Saim.Se alguem souber o modo de simplificar isso,me fala.

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Ajuda com IA Dinamico

Mensagem por saim em Seg 21 Nov 2011, 16:17

O que você pode fazer pra simplificar (se é que dá pra fazer isso, eu nunca joguei esses jogos de cartas com "efeitos especiais") é aninhar algumas possibilidades. (não sei se se usa esse termo, "aninhar", em português. No original é "nesting").
Código:
if card[0]=???{
  if c_showed=???{
    //algo
    }
  else if c_showed=???{
    //outra coisa
  }
  else{
    //outra coisa
  }
}
else if card[0]=!!!{
 //por aí vai
 }
Claro que, pra muitas possibilidades, o código vai ficar grande de qualquer jeito. E você pode criar um script pra um dado tamanho de aninhamento, se achar que isso pode facilitar. Por exemplo:
Código:
if card[0]=???{
 scriptDaCard0Ser???
 }
 else{
  scriptDaCard0NãoSer???
  }
Ou ainda, você pode prever algumas situações mais comuns e usar choose a partir daí. Como um boss com ataques aleatórios: na hora do ataque, ele faz "a=choose(0, 0, 0, 1, 2); event_perform(ataque[a]);". Isso daria uma orientação genérica à sua IA e um pouco de imprevisibilidade.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Ajuda com IA Dinamico

Mensagem por Convidad em Seg 21 Nov 2011, 16:29

entendo....
Você me deu uma ideia muito boa,vou fazer um sistema para descobrir todas as cartas da mesa viradas para cima é registrar as possibilidades,é ai ele escolhe uma coisa a fazer,hora ele faz burrada,hora ele faz uma jogada inteligente.Assim acho que o jogo não vai ficar "impossível" de ganhar da "máquina".
Sobre a varialvel c_showed,é só para verificar se a carta está para cima,é se a carta não estiver,ele nem vai analizar,assim poupa meu trabalho.
A ideia dos scripts e uma boa.Assim não vou me confundir tanto.
Pelo que vejo vou ter que fazer uma possibilidade de jogada,segundo cada carta que o player pode possuir.Mas não só isso,vou ter que também fazer um sistema para que a "maquina" jogue também,tenha estratégias e tals.
Segundo o que percebo,as jogadas vão depender das cartas e jogadas do "jogador" .
Obrigado saim pela ajuda,se eu tiver outra dúvida eu falo.
Se tiver alguma ideia me fala aqui saim.

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Ajuda com IA Dinamico

Mensagem por saim em Seg 21 Nov 2011, 16:54

Tenho sim. Quer dizer, talvez eu tenha. Como disse, não conheço esses jogos, então posso estar falando bobagem, mas...
Já jogou FFXII? Se não sabe do que estou falando, pode simplesmente responder "não, nunca" e deixar de ler o resto.

Sabe aquele sistema de gambits? Em que você determina que ações cada personagem tomará a partir de determinadas situações, tipo "se houver qualquer amigo morto, usar phoenix down, mas antes disso, se eu estiver pra morrer, usar healing".
Spoiler:
Isso foi a maior trapaça já vista na história dos games! Ao invés de fazer a IA pra você, o que deixaria o jogo MUITO chato (o jogador ficaria só assistindo a programação correr) a square te mandou escrever a IA e ainda por cima te cobrou em pontos de experiência por isso! E tem gente - tipo o saim - que adorou!
Bom, o que eu vim sugerir é algo como esse sistema de gambits, só que você mesmo escreve, não deixa pro jogador fazer isso. Quer dizer: se a vida do inimigo está no fim, ele tomará atitudes mais desesperadas, se a magia dele está pra acabar, ele vai usar ataques mais focados no plano físico, por aí vai.
Claro que se seu jogo não usar variáveis como "vida" ou "magia", estou só ocupando seu tempo. De outra forma, mantenha isso em mente na hora de programar.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Ajuda com IA Dinamico

Mensagem por Convidad em Seg 21 Nov 2011, 17:05

bem cara,não sei tbm se conhece yu-gi-oh,mas é um jogo de cartas que contem monstros(com determinados atk e def) é cartas mágicas,que o ajuda esses monstros.Por exemplo,tenho uma carta chamada "vult",ela tem 5000 de atk e 300 de def. Se no caso,ela estiver em modo de defesa,o 300 é que vai prevalecer é se ela for atacada por uma carta de 450 de atk,ela vai ser destruida.Mas se ela estiver em modo de atk (com o numero 5000 no caso) a outra carta é destruida ao atacar...é por ai vai.

saim,nunca joguei esse jogo que vc me falou,mas mesmo assim li até o final é entendi por "alto" a sua ideia.Exatamente isso que vou fazer : um sistema de vida,já pensava nisso antes,pois o jogo em si já tem esse sistema no duelo,mas agora ta mais claro para mim xD

O tenso vai ser agrupar as informações : A possibilidade de usar cartas mágicas,que fazer efeitos nos monstros do jogador ou do inimigo,a jogabilidade da "máquina" ,do player ao lançar as cartas no campo é o lance de cartas na sorte (tanto para o player quanto para a máquina,mas e claro com as cartas do baralho,não com todas no jogo).

só para constar : sim,esse jogo vai usar sistema de vida é efeitos(magia) também.

Mas sua ajuda ta sendo muito bem vinda,tem aberto minha mente.Então se tiver algo mais para sugerir ,sugira alguma dica Happy

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Ajuda com IA Dinamico

Mensagem por Conteúdo patrocinado Hoje à(s) 23:14


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum