Brunofe (discussão | contribs)
Etiqueta: visualeditor
Sem resumo de edição
 
(9 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= IA em Games =
= '''Conceito de Inteligência Artificial''' =
<br>
<br>


== Conceito de Inteligência Artificial ==
* Inteligência Artificial (IA) é um ramo da ciência da computação que se propõe a elaborar dispositivos que simulem a capacidade humana de raciocinar, perceber, tomar decisões e resolver problemas, enfim, a capacidade de ser inteligente.
A inteligência artificial é um ramo da ciência que procura simular por meio se de softwares a habilidade humana de pensar e resolver problemas.<br>
<br>


= '''Estilos de Jogos''' =
<br>


== Estilos de Jogos ==
* Os estilos de jogos que mais usam IA são os de estratégia, Primeira e Terceira pessoa, que usam muito as técnicas de fuzzy e path-finding. E jogos de esportes, que usam mais as técnicas de rede neural.  
­­­Os estilos de jogos são parecidos com os estilos de filmes, mas de uma forma bem mais ampla.Alguns exemplos de estilos mais comum nos dois são: ação, aventura e terror. Nos games temos alguns a mais como:
<br>


'''RPG'''
= '''Metodologias comuns''' =
<br>


 É caracterizado pelo controle de um personagem que se desenvolve ao longo do jogo que ganha atributos que podem ajudar em níveis mais avançados contra inimigos que possuem algum tipo de inteligência empregada que pode seguir o personagem e desviar de ataques do mesmo.[[Arquivo:Personagem_e_um_forte_inimigo_no_jogo_Lineage_2.png|thumb|Personagem e um forte inimigo no jogo Lineage 2|centre]]
* Máquinas de estado finitas (Finite State Machines - FSMs) e máquinas de estado fuzzy (Fuzzy Finite Sate Machines - FuSMs), que são basicamente um conjunto de estados e transições entre estes.
* Sistemas baseados em regras (Rule Based Systems - RBSs),  o conhecimento é definido através de um conjunto de parâmetros (variáveis) e um conjunto de regras que trabalham sobre esses parâmetros, de modo que durante a “tomada de decisão” essas regras são então processadas.
* Path-Finding. Um dos aspectos mais importantes relacionados à implementação de funcionalidades de IA em jogos, e de impacto visual mais óbvio, então a determinação de caminhos.
<br>


'''Simulação'''
= Comportamentos de Movimentação =
<br>


Tem como objetivo principal simular algo do mundo real, um exemplo de simulação é o Sim City que simula uma cidade e as suas dinâmicas
* Rede neural,  a vantagem na rede neural é que ela pode aprender e armazenar informações para uso posterior
problemáticas, como incêndios e terremotos.
<br.


[[Arquivo:Simcity.png|thumb|Jogo Simcity|centre]]
= '''Máquina de Estados Finito''' =
<br>


'''Estratégia'''
* Uma das formas de representação mais comuns (e a mais largamente utilizada) para comportamentos dos personagens de um jogo, é representá-los através do uso de máquinas de estado finitas (Finite State Machines - FSMs).
* Uma máquina de estados é basicamente composta por um conjunto de estados e um conjunto de regras de transição entre estes estados (que usualmente refletem algum evento no mundo do jogo). A utilização desse modelo de representação e controle do comportamento de agentes consiste basicamente em representar, através dos estados, as ações possíveis ao agente, de forma que as regras de transição representem as condições que ao serem verificadas para avaliar se o agente deve mudar de estado.
<br>


Principal característica é usar habilidade de raciocínio do
= '''Linguagens usadas''' =
jogador para alcançar os objetivos. Esse estilo de jogo pode ser o que tenha a maior importância da inteligência artificial, a maquina tem que ser desafiadora, para por as habilidades de quem joga á prova. Um bom exemplo é o Deep Blue, um supercomputador criado pela IBM para jogar Xadrez que ganhou de Kasparov em 10 de fevereiro de 1996<sub>.</sub><br>
<br>
 
[[Arquivo:Kasparov, considerado por muitos o maior enxadrista de todos os tempos, e o Deep Blue da IBM.png|thumb|
Kasparov, considerado por muitos o maior enxadrista de todos os tempos, e o Deep Blue da IBM.
|centre]]


* Atualmente a linguagem de programação mais usada para desenvolvimento de jogos é C++, mas em geral são muito usados qualquer tipo de linguagem orientada a objetos. Alguns jogos podem também usar linguagem Assembly para priorizar principalmente a performance e uma comunicação mais direta com o hardware. Também são usadas linguagem de script, como a Lua e o Python.
<br>


 
= '''Referências Bibliográficas''' =
== Metodologias comuns ==
<br>
<br>


As técnicas mais usadas para empregar alguma inteligência ao jogo são: os sistemas de script, Data Driven e os Algoritmos Genéticos.
* https://www.tecmundo.com.br/intel/1039-o-que-e-inteligencia-artificial-.htm
 
* https://aiforgame.wordpress.com/  
Um pouco mais sobre cada uma:
* https://www.maxwell.vrac.puc-rio.br/7861/7861_3.PDF
 
* https://www.maxwell.vrac.puc-rio.br/7861/7861_3.PDF
'''Sistemas de scripts'''
* https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_de_jogos_eletr%C3%B4nicos
 
Os sistemas de scripts se baseia em uma série de instruções escritas em alguma linguagem de programação (geralmente é usado o Java) que ajuda a definir ações importantes no jogo como o andar a história, ações de cada personagem e até falas e ações pré-definidas de inimigos que são
ativadas ao personagem realizar algo especifico no jogo
 
'''Data Driven'''
 
Algumas informações ficam fora do código fonte do sendo armazenados em arquivos ou em algum sistema de script dentro do próprio jogo possibilitando ao desenvolvedor na fase de testes fazer mudanças muito mais rápidas, possibilitando apenas algumas mudanças de valores dados, como o status de “força” ou    “velocidade”, fazer a mesma mudança no código fonte do jogo não seria algo viável pois demandaria muito tempo e o
auxílio de um programador que esteja manipulando diretamente no código fonte do jogo.
 
'''Algoritmos Genéticos'''
 
Algoritmos genéticos usam de conceitos da seleção natural proposta por Darwin em que dizia que os indivíduos mais preparados tendem a dar continuidade a espécie. Da mesma forma um conjunto de funções dentro do jogo pode se adaptarem entre si para criar uma ainda melhor. Suponhamos que temos um inimigo de fogo, outro especializado em atirar flechas, em um certo avanço no jogo o personagem pode encontrar inimigos que atiram flechas de fogo por exemplo.
 
 
=
[[Arquivo:Maquina de estados finito.png|thumb|350x350px]]
== Máquina de Estados Finito ==
<br>
 
O comportamento define a ação que um npc ou alguma criatura do jogo deve tomar em um momento do jogo, uma coisa importante a ser considerada é a tomada de decisões, por exemplo, uma criatura está andando e vê o personagem do jogo vindo atacar aí ela muda para o estado correndo, mais para frente ela vê uma toca e muda para o estado esconder na toca.
 
A ideia da máquina de estados finitos é essa que a criatura está entre um de vários estados finitos e ela pode mudar de estado assim que certas ações forem satisfeitas, e é o estado que define o comportamento, essas transições (chegada do personagem) modelam as mudanças de comportamento. Dessa forma a criatura ou qualquer coisa aparenta ter inteligência se tiver empregada nela a Máquina de Estados Finito.
 
 
 
== Linguagens usadas ==
As linguagens de programação mais usadas para o desenvolvimento de um jogo é C++ e as Linguagens de Script, também são usadas quase todas orientadas a objetos. Alguns também podem usar a linguagem Assembly para ter uma melhor performance e uma comunicação mais rápida com o Hardware.
 
'''Linguagens de script'''
 
São geralmente muito usadas pois são linguagens que podem ser executadas no interior dos programas ou dentro de alguma outra linguagem de programação. As linguagem de script podem aumentar algumas funções de um programa ou controla-lo, são inclusive linguagens muito usadas em jogos pelo mesmo motivo.
 
Algo que se deve notar é que todas as linguagens de script são linguagens interpretadas, o código fonte da linguagem é executado por um programa chamado de Interpretador, a linguagem é considerada interpretada se o programa não for executado pelo sistema operacional ou processador de forma direta.
 
 Abaixo há alguns exemplos de linguagens que são usadas como script (podem não ser apenas de script):
 
-Euphoria
 
-JavaScript
 
-Lua
 
-PHP
 
-Python
 
-Game Maker Language<br>
 
 
== Referências Bibliográficas ==
 
http://pt.slideshare.net/rogerritter/tcnicas-de-inteligncia-artificial-em-jogos-eletrnicoss
 
http://www.tecmundo.com.br/intel/1039-o-que-e-inteligencia-artificial-.htm
 
https://pt.wikipedia.org/wiki/G%C3%AAneros_de_jogos_eletr%C3%B4nicos
 
http://www.cin.ufpe.br/~tg/2005-1/vvf.pdf
 
http://www1.folha.uol.com.br/tec/2016/02/1737817-a-inteligencia-artificial-nao-vai-nos-destruir-diz-genio-do-xadrez-kasparoz.shtml
 
http://abrindoojogo.com.br/inteligencia-artificial-nos-games-%E2%80%93-mais-aplicacoes
 
https://www.youtube.com/watch?v=KoUIhqkpxog
 
https://pt.wikipedia.org/wiki/Linguagem_de_script
 
http://www.computacao.unitri.edu.br/erac/index.php/e-rac/article/viewFile/32/29
 
<br>

Edição atual tal como às 20h22min de 3 de junho de 2017

Conceito de Inteligência Artificial


  • Inteligência Artificial (IA) é um ramo da ciência da computação que se propõe a elaborar dispositivos que simulem a capacidade humana de raciocinar, perceber, tomar decisões e resolver problemas, enfim, a capacidade de ser inteligente.


Estilos de Jogos


  • Os estilos de jogos que mais usam IA são os de estratégia, Primeira e Terceira pessoa, que usam muito as técnicas de fuzzy e path-finding. E jogos de esportes, que usam mais as técnicas de rede neural.


Metodologias comuns


  • Máquinas de estado finitas (Finite State Machines - FSMs) e máquinas de estado fuzzy (Fuzzy Finite Sate Machines - FuSMs), que são basicamente um conjunto de estados e transições entre estes.
  • Sistemas baseados em regras (Rule Based Systems - RBSs), o conhecimento é definido através de um conjunto de parâmetros (variáveis) e um conjunto de regras que trabalham sobre esses parâmetros, de modo que durante a “tomada de decisão” essas regras são então processadas.
  • Path-Finding. Um dos aspectos mais importantes relacionados à implementação de funcionalidades de IA em jogos, e de impacto visual mais óbvio, então a determinação de caminhos.


Comportamentos de Movimentação


  • Rede neural,  a vantagem na rede neural é que ela pode aprender e armazenar informações para uso posterior

<br.

Máquina de Estados Finito


  • Uma das formas de representação mais comuns (e a mais largamente utilizada) para comportamentos dos personagens de um jogo, é representá-los através do uso de máquinas de estado finitas (Finite State Machines - FSMs).
  • Uma máquina de estados é basicamente composta por um conjunto de estados e um conjunto de regras de transição entre estes estados (que usualmente refletem algum evento no mundo do jogo). A utilização desse modelo de representação e controle do comportamento de agentes consiste basicamente em representar, através dos estados, as ações possíveis ao agente, de forma que as regras de transição representem as condições que ao serem verificadas para avaliar se o agente deve mudar de estado.


Linguagens usadas


  • Atualmente a linguagem de programação mais usada para desenvolvimento de jogos é C++, mas em geral são muito usados qualquer tipo de linguagem orientada a objetos. Alguns jogos podem também usar linguagem Assembly para priorizar principalmente a performance e uma comunicação mais direta com o hardware. Também são usadas linguagem de script, como a Lua e o Python.


Referências Bibliográficas