Baixe o app para aproveitar ainda mais
Prévia do material em texto
IA e Jogos - Jamisson Freitas IA e Jogos Jamisson Freitas (James) profjamissonfreitas@gmail.com 1 mailto:profjamissonfreitas@gmail.com IA e Jogos - Jamisson Freitas Apresentação ● Jamisson Freitas (James) ● Doutorando em Ciência da Computação (Cin-UFPE) ● Data Science Manager na Passei Direto ● Co-fundador da WeUp.ai ● Professor e Tutor em cursos de Graduação e Pós-Graduação 2 IA e Jogos - Jamisson Freitas Conteúdo ● Game AI ● Inteligência artificial e Jogos Digitais ● Agentes Inteligentes ● Aplicações ● Técnicas ● Motores de Jogos ● Projeto 3 IA e Jogos - Jamisson Freitas Referências 4 IA e Jogos - Jamisson Freitas Desafios da Game AI 5 IA e Jogos - Jamisson Freitas Velocidade x Memória ● A maior restrição ao trabalho do desenvolvedor de AI são as limitações físicas da máquina do jogo. ● A Game AI não tem o luxo de dias de tempo de processamento e gigabytes de memória. 6 IA e Jogos - Jamisson Freitas Velocidade x Memória ● Os desenvolvedores geralmente trabalham com um orçamento de velocidade e memória para sua IA. ● Motivo pelo qual novas técnicas de inteligência artificial não alcançam amplo uso é o tempo de processamento ou os requisitos de memória. 7 IA e Jogos - Jamisson Freitas Problemas no processador ● Velocidade do processador disponível; ● Tendência de mover mais funções para a GPU (detecção de colisão, animação entre outros); ● Crescimento do tempo de processamento da IA (20% a 50% em alguns casos); 8 IA e Jogos - Jamisson Freitas Problemas no processador ● Muitos algoritmos de IA demoram muito tempo de execução (principalmente para tomada de decisão e estratégia); ● Um pathfinding abrangente pode levar dezenas de milissegundos por personagem. Como ficaria um RTS com 1000 personagens? 9 IA e Jogos - Jamisson Freitas SIMD ● O SIMD é um método de operação de computadores com várias unidades operacionais em computação paralela. ● Uma mesma instrução é aplicada simultaneamente a diversos dados para produzir mais resultados. ● Adequado para o tratamento de conjuntos regulares de dados, como as matrizes e vetores. 10 IA e Jogos - Jamisson Freitas SIMD ● Se cada personagem precisa calcular a distância euclidiana para o inimigo mais próximo e a direção para fugir, a AI pode ser escrita para realizar o cálculo dos personagens ao mesmo tempo. 11 IA e Jogos - Jamisson Freitas SIMD ● Em consoles, o SIMD pode ser executado em uma unidade de processamento conceitualmente separada. ● Nesse caso, a comunicação entre a CPU principal e as unidades SIMD, bem como o código adicional para sincronizar sua operação, pode muitas vezes eliminar a vantagem de velocidade de paralelizar uma seção de código. 12 IA e Jogos - Jamisson Freitas Processamento Multi-Core e Hyper-Threading 13 IA e Jogos - Jamisson Freitas Processamento Multi-Core e Hyper-Threading ● Vários caminhos de execução ativos ao mesmo tempo. ● Código é passado para o processador, dividindo-se em vários pipelines que executam em paralelo. ● Os resultados de cada pipeline são então recombinados no resultado final do código original. 14 IA e Jogos - Jamisson Freitas Processamento Multi-Core e Hyper-Threading ● Hyper-threading é uma marca registrada da Intel para usar a natureza super-escalar do processador para enviar diferentes threads para diferentes pipelines. ● Os processadores nos consoles recentes (PlayStation 3, Xbox 360 e assim por diante) são todos multi-core. 15 IA e Jogos - Jamisson Freitas Processamento Multi-Core e Hyper-Threading ● Em algumas plataformas (PCs baseados em Intel, por exemplo), este recurso requer uma chamada de função adicional para configuração; ● Em outros (PlayStation 3, por exemplo), precisa ser pensado cedo e ter todo o código AI estruturado em conformidade. 16 IA e Jogos - Jamisson Freitas Funções virtuais/ Indirection (dereferenciamento) ● Trade-off: flexibilidade x chamadas de funções ● Chamada de função convencional → o código da máquina contém o endereço do código onde a função é implementada. 17 IA e Jogos - Jamisson Freitas Funções virtuais/ Indirection (dereferenciamento) ● O processador salta entre locais na memória e continua o processamento no novo local (depois de executar várias ações para garantir que a função possa voltar para o lugar certo). ● A lógica do processador superescalar é otimizada para isso e pode prever, até certo ponto, como o salto ocorrerá. 18 IA e Jogos - Jamisson Freitas Funções virtuais/ Indirection (dereferenciamento) ● Nas chamadas indiretas de funções o processador busca o conteúdo do local da memória e, em seguida, pula para o local especificado. ● O processador não pode prever para onde está indo → fica parado, espera que todos os pipelines terminem o que estão fazendo e, em seguida, continua de onde parou. 19 IA e Jogos - Jamisson Freitas Funções virtuais/ Indirection (dereferenciamento) ● No desenvolvimento de jogos → evitar chamadas de função desnecessárias de qualquer tipo, particularmente chamadas de função indireta ● Funções virtuais → flexibilidade (funcionamento em muitas situações diferentes) 20 IA e Jogos - Jamisson Freitas Restrições de PC ● Os PCs são as máquinas de jogos mais poderosas e mais fracas. ● Eles podem ser frustrantes para desenvolvedores por causa de sua falta de consistência. 21 IA e Jogos - Jamisson Freitas Restrições de PC ● Console → um hardware ● PC → Diversas configurações de hardware: ○ Interfaces de programação de aplicativos (APIs), como o DirectX, isolam o desenvolvedor de ter que direcionar hardware específico; ○ O jogo ainda precisa detectar o suporte e a velocidade dos recursos e ajustá-los adequadamente. 22 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● Em gráficos: ● Desativamos os recursos avançados de renderização. ● Um algoritmo de sombra mais simples pode ser usado, ou os pixel shaders podem ser substituídos por textura simples mapeamento. ● Uma mudança na sofisticação gráfica geralmente não altera o jogo. 23 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● E a IA? 24 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● E a IA? ● Se a IA tiver menos tempo para trabalhar, como ela deve responder? 25 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● E a IA? ● Se a IA tiver menos tempo para trabalhar, como ela deve responder? Pode tentar executar menos trabalho. ● Isto é efetivamente o mesmo que ter um IA mais estúpida e pode afetar o nível de dificuldade de o jogo. 26 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● E a IA? ● Provavelmente não é aceitável para sua equipe de garantia de qualidade (QA) ou editor ter seu jogo seja muito mais fácil em máquinas com especificações mais baixas. 27 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● E a IA? ● Se o mesmo trabalho levar mais tempo → taxa de quadros menor ou mais quadros entre os personagens tomando decisões. ● Personagens lentos para reagir → mais fáceis para jogar contra e pode causar os mesmos problemas com o controle de qualidade. 28 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● E a IA? ● A solução usada pela maioria dos desenvolvedores é direcionar a AI ao menor denominador comum: a máquina de especificação mínima listada no documento de design técnico. 29 IA e Jogos - Jamisson Freitas Restrições de PC - Máquina de baixa especificação ● E a IA? ● Em muitos IA escalável é viável. ● Muitos usam IA para controlar personagens ambientais: ○ pedestres caminhando pela calçada, ○ membros da multidão aplaudindo uma corrida ou bandos de pássaros no céu. ● Tempo de processamento → mais personagens podem ser usado 30 IA e Jogos - Jamisson FreitasRestrições de Console ● Mais simples → hardware previsível ● Sem mudanças de hardware ou atualizações de API ● Os consoles portáteis geralmente ficam entre 5 e 10 anos de defasagem dos recursos dos consoles de tamanho normal 31 IA e Jogos - Jamisson Freitas Referências 32 IA e Jogos - Jamisson Freitas Referências ● Programming Game AI by Example. Mat Buckland. ● Artificial Intelligence for Games. Ian Millington, John Funge. 33 IA e Jogos - Jamisson Freitas Links https://meiobit.com/310886/deepmind-google-inteligencia-artificial-jogos-atari/ https://www.maxwell.vrac.puc-rio.br/7861/7861_3.PDF https://www.red3d.com/cwr/boids/ https://www.youtube.com/channel/UCC0RqWklkXJwAd_HIsxRZDg https://github.com/idmillington/aicore 34 https://meiobit.com/310886/deepmind-google-inteligencia-artificial-jogos-atari/ https://www.maxwell.vrac.puc-rio.br/7861/7861_3.PDF https://www.red3d.com/cwr/boids/ https://www.youtube.com/channel/UCC0RqWklkXJwAd_HIsxRZDg https://github.com/idmillington/aicore
Compartilhar