Os jogos de tiro é um estilo muito popular entre adolescentes. Games como Doom, Half-Life, Unreal, Quake e Counter-Strike revolucionaram a maneira de jogar, entrando na história dos videogames. O Counter-Strike é hoje um dos games mais jogados do planeta, tendo campeonatos e praticamente todas as lan-houses tem o jogo, onde grupos de adolescentes juntam-se em equipes para jogar o jogo, escolhendo ser um “terrorista” ou um “contra-terrorista”. Além disso, hoje os jogos de tiro são um dos jogos que as produtoras conseguem usar gráficos incríveis (como Doom 3 e Half-Life 2).
Os jogos de tiro são também simples de implementar e muitos designers iniciantes começam seus estudos tentando criar jogos deste tipo. Além disso, a inteligência artificial não precisa ser bem implementada, sendo que a maior parte dos games são simples, com muita violência e normalmente com a seguinte regra: andar, atirar e matar os oponentes (não exigindo muito raciocínio do jogador). É claro que alguns fogem um pouco a regra, como o game Half-Life (onde você resolve puzzles (desafios lógicos) durante o jogo).
Uma técnica de inteligência artificial mais comum em jogos de tiro são as máquinas de estado finita (FSM, ou Finite State Machine). Segundo Karlsson (2005, p.19), uma máquina de estados “é basicamente composta por um conjunto de estados e um conjunto de regras de transição entre estes estados”. Ou seja, o personagem está configurado com uma série de regras e possui regras de transição para ver se o personagem deve alterar o estado inicial, como por exemplo, se ele viu um oponente e se vale a pena ir atrás dele.
Segundo DINÍZIO (2003, p.4), existem dois tipos de máquinas de estado finito, a determinística, onde a transição pode sempre ser prevista (onde existe uma entrada e transição), e a não-determinística, onde a transição não pode ser, sendo necessário ter uma entrada para conhecer a transição e o estado final.
As desvantagens em utilizar as FSM são os comportamentos repetitivos, caso uma situação se repita, e são limitados (“quanto mais complexo for o ambiente, aumenta o número de estados e transições na qual o FSM terá de prever” (Karlsson, 2006)).
Outra técnica que pode ser utilizada em jogos de tiro é a lógica Fuzzy. A lógica fuzzy permite representar num sistema computacional valores onde lógicas clássicas (onde os únicos valores são zero e 1 um) não conseguiriam representar, como “pouca comida”, “muito perto”, e outros eventos não contáveis (ou imprecisos). No caso da lógica Fuzzy, o conhecimento é representado por um conjunto que contém valores numéricos, que podem representar melhor uma emoção humana. Por exemplo, se eu tenho um personagem “muito feliz”, ele é do conjunto feliz e pode receber 9 (numa contagem de 0 a 10) e eu posso ter um personagem “nada feliz” com valor 1.
Uma estratégia interessante para se utilizar é, segundo Karlsson (2005, p.20), a “mistura” entre a lógica Fuzzy e as FSMs, criando as Fuzzy FSMs (FuSMs). Ou seja, são máquinas de estado finitas com lógica Fuzzy nos seus estados de transição, para os oponentes parecerem “razoavelmente inteligentes”. Ainda segundo Karlsson, um jogo utilizando esta técnica é o jogo Unreal.
Jogos de Estratégia
Os jogos de estratégia são interessantes por fazer o jogador utilizar raciocínio lógico, para construir um império ou mesmo gerenciar tropas de guerra. Podemos citar os jogos Warcraft 3 e a série Command & Conquer.
A inteligência utilizada em tais jogos é dividida basicamente em dois níveis: em um nível temos problemas como a navegação de unidades, onde geralmente é usado um algoritmo do tipo A* (ou alguma variante do mesmo que leve em consideração replanejamento em tempo real). Em um segundo nível temos o planejamento estratégico/tático, que determina o caminho na árvore tecnológica a se seguir (se o jogo possuir uma árvore), o ritmo de produção de unidades e instalações, e a freqüência e a localização dos ataques ao jogador humano. Para isso, os métodos utilizados em geral são simplesmente máquinas de estado aliadas a sistemas baseados em regras parametrizáveis de forma a permitir o ajuste da dificuldade e jogabilidade. (TATAI, 2003, p. 31)
Os sistemas baseados em regras é também uma técnica de Inteligência Artificial bem simples de implementar, e é largamente utilizada em jogos eletrônicos. Segundo Karlsson (2005, p. 21), um sistema baseado em regras “é definido através de um conjunto de parâmetros e um conjunto de regras que trabalham sobre estes parâmetros, de modo que durante a tomada de decisão, essas regras são então processadas”. Um modo é implementar testes de condição e comparar com as regras pré-estabelecidas da situação atual.
Outra técnica interessante que pode ser utilizada, segundo VIEIRA (2005, p. 13) é o sistema baseado em planejamento. O planejamento de IA aplicado a jogos digitais é o armazenamento de “planos de ação” e fazer com que o usuário escolha o plano mais adequado numa determinada situação. Também pode permitir ao personagem decidir qual estratégia ele pode utilizar (além do próprio personagem criar a sua estratégia). Uma vantagem desta técnica é que as ações do personagem não são tão repetitivas (diferente dos personagens com o sistema de Máquina de estado Finita, por exemplo).
Extraído de: http:www.rodrigoflausino.com.br/artigos-e-tutoriais/estado-da-arte-da-inteligencia-artificial-para-jogos-eletronicos/
W@╚╚@S Games
quinta-feira, 29 de abril de 2010
quarta-feira, 28 de abril de 2010
Estado da Arte da Inteligência Artificial para jogos eletrônicos

Estado da Arte da Inteligência Artificial para jogos eletrônicos
Resumo
Com o avanço dos videogames, é cada vez mais comum os programadores aplicarem técnicas simples e avançadas de inteligência artificial em jogos eletrônicos. Além disso, o setor dos videogames é uma área em crescente ascensão e faturou no ano passado 27 bilhões de dólares.
A inteligência artificial é uma área desafiadora e difícil, e muitos programadores iniciantes não sabem quais áreas de inteligência artificial ele pode aplicar em seus games.
O objetivo deste trabalho é mostrar a situação atual da Inteligência Artificial voltado para jogos eletrônicos, para os artistas e designers possam identificar (usando estilos de games como exemplos) técnicas de Inteligência Artificial que o programador pode aplicar em seu game satisfatoriamente.
Introdução
O setor dos videogames é hoje um dos setores mais rentáveis do entretenimento. No ano de 2005 este setor teve lucro de 27 bilhões de dólares, tornando-se uma área atraente e ao mesmo tempo desafiadora, por ser uma das mais difíceis da informática.
Fora isso, os games estão chegando a um patamar artístico impensável há 20 anos atrás. Games com gráficos incríveis (chegando a imitar a realidade), simulando a física real e tendo uma inteligência artificial bem convincente (como no game The Sims, que é um simulador de “vida”, podendo o jogador viver numa casa, casar, ter filhos, e outros), proporcionam uma diversão excelente para todas as idades.
Mas uma boa parte dos games também deixa a desejar no quesito de Inteligência Artificial (IA), deixando os games fáceis e simples. Os desenvolvedores pouco se preocupam com a IA e se preocupam mais com os gráficos do game, o que, em parte, tira a diversão do mesmo. Sobretudo o desenvolvedor iniciante, que pouco sabe sobre a Inteligência Artificial e não sabe que conceitos e técnicas que ele pode utilizar em seus jogos.
Este trabalho então mostrará a situação atual da Inteligência Artificial, usando alguns estilos de jogos e as possíveis técnicas utilizadas neles, pois, segundo Tatai (2003, p.23), “a indústria de jogos tradicionalmente guarda com extremo zelo as soluções computacionais desenvolvidas”, ou seja, em sua maioria elas não divulgam as técnicas que utilizam.
É interessante o designer conhecer essas técnicas, para ele aplicar a melhor técnica (ou técnicas, pois muitos games têm diversas técnicas de inteligência artificial implementadas) para o seu game.
Desenvolvimento
Com o avanço nos videogames, tornou-se possível criar uma inteligência artificial aprimorada em jogos eletrônicos. Mas, muitas vezes, o desenvolvedor iniciante não sabe quais áreas ele deve estudar para conseguir criar a IA de seu game. Algumas vezes ele acaba não dando a devida atenção e parte para outras áreas técnicas, como gráficos, jogabilidade, e outros.
A inteligência artificial é um dos ramos mais interessantes da ciência. E uma das áreas mais interessantes em se aplicar a Inteligência Artificial é em jogos eletrônicos, pois, segundo Russel e Norvig (2004, p.157), “para pesquisadores de IA, a natureza abstrata dos jogos os torna um assunto atraente para estudo”. Além disso, a maior parte dos games atuais utiliza a inteligência artificial para proporcionar diversão aos seus jogadores. Jogos como The Sims exploram muito a IA (onde o jogador pode casar, ter filhos, e outras atividades normais).
Existem várias áreas de IA que o artista pode aprender e usar em seus jogos. Ele não precisa saber todas aprofundadamente, mas ele deve ter um conhecimento de cada para que ele aplique a melhor estratégia de IA em seus games. Também o designer deve ter em mente se o personagem será contra o jogador ou um ajudante.
Deve-se ter em mente que não existe uma lógica padrão para todos os tipos de entidades em um game. Um gato executa ações que um cachorro não faria, e o mesmo vale para seres humanos. O designer pode implementar o mesmo tipo de lógica para várias entidades, mas ele deve adaptar parte dela para que consiga o efeito desejado.
Extraído de: http://www.rodrigoflausino.com.br/artigos-e-tutoriais/estado-da-arte-da-inteligencia-artificial-para-jogos-eletronicos/
terça-feira, 27 de abril de 2010
Iniciando em Desenvolvimento de Jogos !
A maior dúvida de quem quer desenvolver games é começar. Esta pergunta sempre aparece nos fóruns de discussão e nos emails, já que ninguém nasce sabendo. Só que o problema é que o usuário nem procura informações na internet sobre isso, e já coloca uma pergunta básica num tópico: o que eu devo fazer? Como começar a criar games?
Sei que este post é, em parte, caça-paráquedistas do Google, mas também decidi criar o mesmo para ajudar o desenvolvedor iniciante a seguir por este caminho tortuoso e difícil. Mas antes de mais nada eu vou ser cruel no parágrafo abaixo e dizer a verdade. O problema é que o usuário tem um mito e quer tentar fazer igual:
Quero criar o próximo Need For Speed ou um MMORPG!
Uma coisa que dá para perceber é que todo mundo que quer desenvolver games já teve contato com videogames. É impossível você encontrar alguém que trabalha na área e nunca jogou algum game na vida (e se não jogou antes, acabou jogando depois). Afinal, quem gosta de games gostaria de ganhar dinheiro com isso. Unir o útil ao agradável. Mas não é tão simples assim.
A maioria dos iniciantes acham que vão criar um game altamente complexo do dia pra noite. Acham que vão criar o próximo Need ou Wining Eleven, que são games que, pode não parecer, foram difíceis de desenvolver. E foram feitos por equipes.
Sim, estamos falando de estruturas organizacionais complexas, com regras e tempo diário para desenvolver. O famoso serviço, trampo, trabalho, etc. A ralação do dia a dia. Um game do nível de God of War foi feito por muita gente, e cada um teve a sua função específica nesse mundo. Alguns ficaram só pros cenários (os templos, casas…), outros só pra desenhar o Kratos (o personagem que você controla) e outros só pra ficar fazendo contas de inteligência artificial (faça o inimigo ir até o jogador, se desviando de qualquer obstáculo, e faça o hominho atacar o Kratos usando as seguintes regras…), com contas altamente difíceis de criar e além do nível de um estudante comum de ensino médio. E ainda temos a programação do jogo (o item x está no local x e aciona x comandos quando o jogador, ao apertar o botão Y, acessa este ítem. E pode acontecer isso, isso e isso posteriormente…), que também foi feito por pessoas específicas. Todas elas são comandadas por game designers, que são aqueles que planejam o seu jogo e gerenciam o desenvolvimento do jogo.
Acredite: você não vai conseguir, logo de cara, fazer um game deste nível. Fora que certos games se arrastam por anos e anos. Um Metal Gear Solid 4 está sendo feito por 200 pessoas. O Spore está sendo feito há quase 7 anos!
Ah, mas eu só estudo cedo e fico o resto do dia morgando. OK, mas vamos ver: você deve ter escola, e com isso tem que estudar as matérias da escola. Se você está no ensino médio tem o lance do vestibular. E você pode ter namorada. Duvido que você vai ficar estudando gamedev no lugar de sair com a sua mina para passear, beijar na boca, ir naquela festa que promete fortes emoções… até eu, se tivesse uma namorada eu deixaria este blog em segundo plano. Eu também sou um ser humano :)
Ou você pode estar trabalhando e fazendo faculdade. Ou você pode ter um filho e tem que cuidar dele. E aí você pode não ter tanto tempo assim, e nem recursos, como um computador decente para rodar certos programas.
Outro fator se chama mãe e pai. Você já chegou a dizer pra eles a sua vontade em desenvolver jogos? Em fazer uma faculdade relacionada? Acredito que a maioria dos pais devem ter ficado incrédulos e terem dito: que coisa ridícula. isso não dá dinheiro! Você tem que fazer algo que dê dinheiro e um emprego decente e honesto no futuro, como um advogado, médico, etc etc etc. Ou mesmo os seus pais podem não gostar do videogame, soltando algo como: você fica o dia inteiro jogando! Vá fazer o dever de casa!
Fora as notas baixas na escola, já que você prefere jogar do que estudar. OK, a decisão é sua, mas você acaba sendo prejudicado. Videogame é bom? É, mas jogue com moderação!
Acredito que todos que esteja lendo este post deve ter passado por situações de ter os pais contra o seu desejo por desenvolver jogos. Aí você tem de apelar: procure na internet o faturamento do setor de games, e mostre aos seus pais. O segundo fator todos os pais se preocupam mais, depois dos filhos, é o dinheiro. A bufunfa! O money entrando na sua conta! Você tem que provar aos seus pais que esta área dá dinheiro, já que eles dificilmente financiariam um curso de gamedev para você se o mesmo não tiver retorno financeiro (é claro que existem exceções, mas…). Aí você, que pode não ter um emprego, terá de arrumar um e pagar a faculdade sozinho. Agora, se você tem o apoio dos pais, a situação muda, mas ainda assim os cursos atuais são caros e raros.
Isso se você tiver condições de investir nesta área e realmente levar a sério. Diferente de muitos que desenvolvem games como hobby para ganhar experiência e, se tiver sorte, conseguir entrar na área. Ou aqueles que já tem um emprego e só mexem com gamedev como um passatempo, por também gostar de games.
Voltando à complexidade de um game: desista de sonhar em criar agora um Need For Speed. Primeiro que você não tem o conhecimento necessário (afinal, se você já soubesse muita coisa você nem precisaria ler este texto) e segundo que qualquer área que você escolher você vai demorar muito tempo para aprender e dominar esta área. Eu, por exemplo, já programo profissionalmente há 3 anos e ainda me considero intermediário em programação (principalmente em Java). E ainda tenho muito caminho pela frente, já que eu sou brasileiro e não desisto nunca!
Extraído de: http://www.rodrigoflausino.com.br/iniciando-em-desenvolvimento-de-jogos-parte-1/
Sei que este post é, em parte, caça-paráquedistas do Google, mas também decidi criar o mesmo para ajudar o desenvolvedor iniciante a seguir por este caminho tortuoso e difícil. Mas antes de mais nada eu vou ser cruel no parágrafo abaixo e dizer a verdade. O problema é que o usuário tem um mito e quer tentar fazer igual:
Quero criar o próximo Need For Speed ou um MMORPG!
Uma coisa que dá para perceber é que todo mundo que quer desenvolver games já teve contato com videogames. É impossível você encontrar alguém que trabalha na área e nunca jogou algum game na vida (e se não jogou antes, acabou jogando depois). Afinal, quem gosta de games gostaria de ganhar dinheiro com isso. Unir o útil ao agradável. Mas não é tão simples assim.
A maioria dos iniciantes acham que vão criar um game altamente complexo do dia pra noite. Acham que vão criar o próximo Need ou Wining Eleven, que são games que, pode não parecer, foram difíceis de desenvolver. E foram feitos por equipes.
Sim, estamos falando de estruturas organizacionais complexas, com regras e tempo diário para desenvolver. O famoso serviço, trampo, trabalho, etc. A ralação do dia a dia. Um game do nível de God of War foi feito por muita gente, e cada um teve a sua função específica nesse mundo. Alguns ficaram só pros cenários (os templos, casas…), outros só pra desenhar o Kratos (o personagem que você controla) e outros só pra ficar fazendo contas de inteligência artificial (faça o inimigo ir até o jogador, se desviando de qualquer obstáculo, e faça o hominho atacar o Kratos usando as seguintes regras…), com contas altamente difíceis de criar e além do nível de um estudante comum de ensino médio. E ainda temos a programação do jogo (o item x está no local x e aciona x comandos quando o jogador, ao apertar o botão Y, acessa este ítem. E pode acontecer isso, isso e isso posteriormente…), que também foi feito por pessoas específicas. Todas elas são comandadas por game designers, que são aqueles que planejam o seu jogo e gerenciam o desenvolvimento do jogo.
Acredite: você não vai conseguir, logo de cara, fazer um game deste nível. Fora que certos games se arrastam por anos e anos. Um Metal Gear Solid 4 está sendo feito por 200 pessoas. O Spore está sendo feito há quase 7 anos!
Ah, mas eu só estudo cedo e fico o resto do dia morgando. OK, mas vamos ver: você deve ter escola, e com isso tem que estudar as matérias da escola. Se você está no ensino médio tem o lance do vestibular. E você pode ter namorada. Duvido que você vai ficar estudando gamedev no lugar de sair com a sua mina para passear, beijar na boca, ir naquela festa que promete fortes emoções… até eu, se tivesse uma namorada eu deixaria este blog em segundo plano. Eu também sou um ser humano :)
Ou você pode estar trabalhando e fazendo faculdade. Ou você pode ter um filho e tem que cuidar dele. E aí você pode não ter tanto tempo assim, e nem recursos, como um computador decente para rodar certos programas.
Outro fator se chama mãe e pai. Você já chegou a dizer pra eles a sua vontade em desenvolver jogos? Em fazer uma faculdade relacionada? Acredito que a maioria dos pais devem ter ficado incrédulos e terem dito: que coisa ridícula. isso não dá dinheiro! Você tem que fazer algo que dê dinheiro e um emprego decente e honesto no futuro, como um advogado, médico, etc etc etc. Ou mesmo os seus pais podem não gostar do videogame, soltando algo como: você fica o dia inteiro jogando! Vá fazer o dever de casa!
Fora as notas baixas na escola, já que você prefere jogar do que estudar. OK, a decisão é sua, mas você acaba sendo prejudicado. Videogame é bom? É, mas jogue com moderação!
Acredito que todos que esteja lendo este post deve ter passado por situações de ter os pais contra o seu desejo por desenvolver jogos. Aí você tem de apelar: procure na internet o faturamento do setor de games, e mostre aos seus pais. O segundo fator todos os pais se preocupam mais, depois dos filhos, é o dinheiro. A bufunfa! O money entrando na sua conta! Você tem que provar aos seus pais que esta área dá dinheiro, já que eles dificilmente financiariam um curso de gamedev para você se o mesmo não tiver retorno financeiro (é claro que existem exceções, mas…). Aí você, que pode não ter um emprego, terá de arrumar um e pagar a faculdade sozinho. Agora, se você tem o apoio dos pais, a situação muda, mas ainda assim os cursos atuais são caros e raros.
Isso se você tiver condições de investir nesta área e realmente levar a sério. Diferente de muitos que desenvolvem games como hobby para ganhar experiência e, se tiver sorte, conseguir entrar na área. Ou aqueles que já tem um emprego e só mexem com gamedev como um passatempo, por também gostar de games.
Voltando à complexidade de um game: desista de sonhar em criar agora um Need For Speed. Primeiro que você não tem o conhecimento necessário (afinal, se você já soubesse muita coisa você nem precisaria ler este texto) e segundo que qualquer área que você escolher você vai demorar muito tempo para aprender e dominar esta área. Eu, por exemplo, já programo profissionalmente há 3 anos e ainda me considero intermediário em programação (principalmente em Java). E ainda tenho muito caminho pela frente, já que eu sou brasileiro e não desisto nunca!
Extraído de: http://www.rodrigoflausino.com.br/iniciando-em-desenvolvimento-de-jogos-parte-1/
Assinar:
Postagens (Atom)