Movimentação Tática em Jogos de Guerra Equipe: Cláudio Sasaki Ivo Frazão Lucas Loureiro Luiz Nunes Mauro Vieira Tiago Barros Roteiro ► Introdução Tático e Estratégico Usando Waypoints ► Mapas de Influência ► Táticas de Esquadrão: Manobras Emergentes ► Táticas de Esquadrão: Manobras Ensaiadas ► Hierarquia de Decisão ► Formações ► Raciocínio Organizações estratégias e táticas utilizando waypoints ► Introdução Características controladas por computador cada vez mais sofisticadas. Jogos de primeira pessoa ou jogos de aventura. Node-graph ►O que é? ► Para que serve? ► Como influencia no desempenho de um jogo? ► Waypoints Um exemplo de Node-graph Qual a utilidade da visualização? ► Determinar qual das localidades serão seguras e quais não serão. ► Fundamental na hora do ataque e da defesa. ► Determinar que caminho deverá ser seguido considerando a posição do inimigo e não a menor distância (Safe Pathfinding). Utilizando a visualização... v1 v2 v3 v4 v5 v6 1 1 0 0 1 0 0 2 0 1 1 0 1 0 3 0 1 1 0 0 0 4 1 0 0 1 1 1 5 0 1 0 1 1 1 6 0 0 0 1 1 1 Continuando... ► Danger Nodes Va <OR> Vb = 1 0 0 1 1 1 ► Safe Nodes Inverso V = 0 1 1 0 0 0 Intelligent Attack Positioning ► Atacar o inimigo sem ser visto pelos outros. 1. Determinar a visão do inimigo. Vini = 0 0 0 1 1 1 2. Determinar os nós que são vistos pelos outros inimigos; Vini2 = 0 1 0 0 1 0 <OR> Vini3 = 0 1 1 0 0 0 ViniR = 0 1 1 0 1 0 3. Determinar o(s) nó(s) que deveremos nos colocar. Inverso ViniR = 1 0 0 1 0 1 0 <AND> Vini = 000111 = 0 0 0 1 0 1 (posição 4 ou 6) Indo ainda mais longe... ► Caso fosse necessário se esconder do inimigo? Desviar de uma bala? ► Flanking Posicionamento inteligente de ataque Se colocando em uma posição melhor de ataque... Ca <AND> Inverso V = 0 Visão dos inimigos: V2= 0 1 1 0 1 0 0 <OR> V3= 0 1 1 0 0 0 0 <OR> V6= 0 0 0 1 1 1 0 VINI= 0 1 1 1 1 1 0 Inverso Vini= 1 0 0 0 0 0 1 C4= 1, 5, 7 e C6= 5 (Nó 7) Análise estática de Waypoints ► NPC deve colocar-se em posições estratégicas antes do inimigo chegar. ► Lugares de alta visibilidade são perigosos. ► Lugares de baixa visibilidade são ruins para atacar. ► O ideal seria um nó de alta visibilidade perto de um nó de baixa visibilidade. (Sniper Locations) ► Poderemos caracterizar cada nó com um peso associado a sua visibilidade no node-graphic. Pinch Points Para cada nó N que possua somente 2 vizinhos... 1. Temporariamente elimine o nó N, chame seus vizinhos de A e B. 2. Se A e B estão conectados a regiões grandes, N não é o pinch point. 3. Tente achar caminhos entre A e B, se existir, N não é o pinch point. Chame I de inside e O para outside 4. Para montarmos uma emboscada temos que achar um waypoint que consiga visualizar O e não consiga N. A = Vo <AND> inverso Vn Pinch Points Em situações onde existem corredores... Se O só tiver um único vizinho fora N: 1. Mova N para O 2. Mova O para seu vizinho 3. Até quando O tiver mais de um vizinho. Squad Tactics Mesmo procedimento que o utilizado no pinch point sendo repetido para cada uma das saídas. A1= Vo1 <AND> inverso Vn1 A2= Vo2 <AND> inverso Vn2 Mapas de Influência O que é… ► Generalização no globo da influência de cada unidade 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 2 2 2 1 -1 -1 -1 -1 5 5 2 0 -1 -2 -2 -2 10 5 1 0 -2 -3 -5 -2 5 5 1 -1 -2 -4 -3 -2 2 2 1 -1 -5 -3 -1 -1 1 1 0 -1 -2 -2 -1 0 • No man’s land • Identifica o nível de controle de cada região Criando as Regras value = (attack - defense) / (distance * gradient) Front: a unidade que possui o maior gradiente • Flank: unidades que possuem gradientes menores • Rear: retaguarda inimiga • Pontos de Contato ► Aumentar os pontos de contato com os front e os flanks inimigos ► Na defesa diminuir os pontos de contato com os flanks inimigos ► Boa estratégia para jogos “one-on-one” ► Pobre ao especificar as personalidades dos jogadores Diferentes Personalidades ► Rússia: Expansionistas ► Roma: Militaristas ► EUA: Industrias ► França: Comerciais ► Egípcios: Religiosos “Big Questions” ► Os algoritmos são únicos para cada problema? ► Qual o limite entre ser fiel a personalidade e ser natural? ► Devo gerar um mapa de influência em relação a que referencias? Conclusão ► Positivais Pode avaliar superioridades locais e globais Une considerações incompatíveis Uma boa forma de gerar conflitos ► Negativas Complexos mapas de influência tendem a descartar informações úteis ou destacar dados de menor importância Táticas de Esquadrão: Manobras Emergentes Agentes Cooperativos ► Ausência de agente líder ► Vantajoso porque: É uma extensão da IA individual Trata várias situações com robustez Funciona bem com agentes com habilidades variadas Pode ser combinado com agentes baseados em scripts Mas... de onde vem a coerência? ► Comportamento emergente (ou comportamento auto-organizável) ► Exemplo: Comportamento de atirar-e-mover IA Individual Sem ameaças Atacar Procurar alvo e atirar Time out Chegou na nova posição Nova ameaça após movimento mínimo Nova ameaça após perda da atual Mover Ir para a nova posição IA de Esquadrão Sem ameaças Time out Atacar Procurar alvo e atirar Poucos colega movendo-se Chegou na nova posição Nova ameaça após movimento mínimo Poucos colegas atacando Nova ameaça após perda da atual Mover Ir para a nova posição Avanços Táticos ► Uma boa tática é mais do que simplesmente atirar e mover: ► Proximidade de proteção Linha de fogo Capacidade da arma Coesão Separação Movimentação do inimigo A escolha da nova posição leva em conta todos estes fatores Pesos diferentes para cada fator em cada agente Pesos diferentes num mesmo agente, de acordo com a situação Parece bom, mas... ► Caminho conflitantes ► Caminhos desprotegidos para locais taticamente mais vantajosos que o atual ► Falta de espaço para movimentação ► O problema da emboscada Esperar o inimigo se aproximar Retirada após ataque Revidar quando surpreendido Táticas de Esquadrão: Manobras Ensaiadas Táticas de Esquadrão: Manobras Ensaiadas ► Os militares confiam em 2 coisas para saírem-se vitoriosos de situações de combate perigosas e caóticas: Líderes Manobras extensivamente ensaiadas ► Sem um Líder, os soldados perderiam muito tempo explorando as possibilidades e resolvendo conflitos Táticas de Esquadrão: Manobras Ensaiadas ► Isto nos leva a construir uma IA centralizada, onde um comandante recebe as observações e resultado de ações de seus agentes e ordena as novas ações ► Podemos ainda utilizar uma IA distribuída para que os agentes possam receber uma ordem simples e saber como desenvolve-lá da melhor forma possível ► Isto facilita o trabalho de cada IA e permite uma maior especialização das mesmas Táticas de Esquadrão: Manobras Ensaiadas ► Estilos de Comando Autoritário: os agentes obedecem cegamente e exatamente o que o comandante ordena ► Possibilita o sacrifício de um para ajudar os outros ► Mas pode menosprezar ameaças para determinados agentes Treinador: os agentes recebem tarefas para executar, mas tem a liberdade de escolher como agir ► Permite que o agente resolva ameaças mais urgentes para ele ► Mas pode levar ao agente ficar perdendo tempo com ações irrelevantes para a missão Táticas de Esquadrão: Manobras Ensaiadas ► Como obter informações sobre a situação? Não é tão fácil como identificar uma formação 3-5-2 no futebol Jogos com Muitas unidades: mapas de influências Para jogos mais simples, podemos usar outras características como razão entre aliados e inimigos, entre linhas de tiro presentes, posicionamento favorável Táticas de Esquadrão: Manobras Ensaiadas ► Sabendo da situação, como escolher a manobra a fazer? Representação das situações para cada manobra A cada momento, o comando deve saber as manobras possíveis e as manobras admissíveis As manobras admissíveis são aquelas que podem ser realmente escolhidas, levando em consideração observações anteriores e conhecimentos prévios Táticas de Esquadrão: Manobras Ensaiadas ► Como coordenar as Manobras? O Comandante baseado na situação, escolhe uma Manobra de um conjunto de Manobras Conhecidas Cada Manobra tem conhecimento dos Agentes e coordena suas ações através do Comandante As observações dos Agentes são repassadas para a Manobra pelo Comandante Ao iniciar uma Manobra, existe uma preparação da Manobra Quando a Manobra falhar ou o Comandante escolher por outra Manobra, a Manobra corrente deve ser abortada, permitindo que os Agentes não se percam no meio de uma Manobra Táticas de Esquadrão: Manobras Ensaiadas ► Conclusões Uma IA Centralizada permite a escolha e execução de manobras estilo-SWAT de forma autônoma, mesmo em cenários complexos O auxílio de IA Descentralizadas permite a execução destas manobras com maior realismo Mas a construção destes times exigem muito trabalho e tempo gasto para construir as manobras Outros elementos podem ainda ser acrescentados para situações mais complexas, como as especialidades de cada agente Hierarquia de Decisão Hierarquia de Decisão ► ► ► “Team-based AI” está cada vez mais sendo usada em jogos de 1ª e 3ª pessoa; É limitada a seqüências pré-definidas ou simples requisições de backup; A hierarquia de decisões permite a criação de algumas equipes muito convincentes que tomam decisões em tempo real; Hierarquia de Decisão ► ► ► ► Toda equipe efetiva necessita de um bom comando hierárquico; Decisões devem ser feitas no nível mais alto e executadas pelos níveis inferiores; Os níveis inferiores são subordinados aos níveis superiores; Os níveis de comando devem ter comunicação efetiva; Suporte a Decisão ► ► ► Um bom conjunto de rotinas de suporte a decisão é um elemento essencial para a criação de IA’s convincentes; Suporte a decisão é necessário em todos os níveis; Todos os níveis de comando precisam ter uma grande quantidade de informações a respeito do ambiente onde seus soldados e adversários estão; Implementação ► ► As rotinas de suporte a decisão são os tijolos da implementação da IA; Como usar estes tijolos? - Escolha de uma estratégia; Troca de mensagens; Compartilhamento de informações; Debugação; etc... Implementação - Escolhendo uma Estratégia ► ► ► ► O comandante terá uma certa quantidade de opções sempre que novas informações forem recebidas; As estratégias serão escolhidas de acordo com suas efetividades; Adicionando-se um elemento randômico de escolha de estratégias pode-se reduzir a possibilidade de previsões a medida que o jogador se familiariza com o jogo; A escolha randômica de estratégias também tem impacto no nível de dificuldade do jogo; Implementação - Troca de Mensagens - ► ► ► Trocas de mensagens são muito efetivas na implementação de “team-based AI”; O uso de mensagens na comunicação entre os diferentes níveis da hierarquia é uma maneira muito natural de passagem de ordens e informações; Os níveis superiores só precisam processar as informações quando alguma nova for recebida; Implementação - Compartilhamento de Informações ► ► ► As ordens devem conter a quantidade de informações necessárias para que os níveis subordinados executem suas tarefas de forma efetiva; No caso em que a informação for de interesse para todos os níveis, o conteúdo desta pode ser compartilhada usando-se informações acessíveis globalmente; Informações globais não devem substituir as mensagens; Implementação - Debugação - ► ► ► Esta implementação permite que o programador armazene a troca de mensagens entre os níveis de comando; Todas as informações e decisões tomadas estão descritas no log; Permite descobrir de onde veio uma informação falsa ou que decisão foi um erro; Exemplo - Manobra de Flanqueamento ► Situação: Suspeita-se que um adversário está numa sala que tem mais de uma porta, então o comandante dá a ordem para flanquear o adversário. Isto significa o capitão enviar uma tropa de soldados para diferentes portas e, quando todos estiverem prontos, dar a ordem de ataque. ► Processo de Decisão Estratégica: O trabalho do processo de decisão estratégica é checar se a manobra é possível e apropriada. Deve-se ter, pelo menos, duas portas e um soldado em cada porta. Caso contrário, a manobra de ser abortada. ► Organização da Manobra: O capitão organiza a manobra que já foi aprovada pelo nível estratégico (comandante) enviando soldados em tropas para as diferentes portas. Assim que cada soldado chega na sua porta, este envia uma mensagem ao capitão informando sua situação. Quando todos estiverem a postos, a ordem de ataque pode ser dada e a manobra estará completa. Formações Introdução ►O que é? Posicionamento conjunto Sempre que houver um grupo movimentandose ou agindo juntos, é necessário fazê-lo de forma inteligente. Um exército movimentando-se em uma determinada formação possui uma visualização interessante, mas não é só isso :-) Tipos de Formações Linha Caixa Coluna Cunha Flanco Esquerdo V Flanco Direito Quem vai primeiro? ► Misturar os tipos das unidades Unidades mais fracas e com poder de fogo de longo alcance devem ficar atrás Unidades rápidas devem ir pelos flancos As unidades com maior poder defensivo devem ir na frente. Etc... Quem vai primeiro? Age of Empires II Posicionando-se ► Que posição da formação cada unidade deve ocupar? 1 2 3 4 1 2 3 4 1 2 3 4 4 3 2 1 Posicionando-se ► Ao mover as unidades para uma determinada formação, faz-se necessário evitar a colisão entre elas No caminho... ► ...Havia uma pedra :-) No caminho... ► ...Havia uma pedra :-) ► A unidade tem que contorná-la No caminho... ► ...Havia uma pedra :-) ► As unidades tem que contorná-las ► E perdem tempo... No caminho... ► ...Havia uma pedra :-) ► As unidades tem que contorná-las ► E perdem tempo... ? ► ...mudando de posição na formação No caminho... ► ...Havia uma pedra :-) Solução: Espaçamento, níveis e... ► ...otras cositas más ► A distância entre as posições da formação pode variar ► Uma formação em linha não pode crescer lateralmente sem limites... ► Determinadas formações exigem unidades em posições específicas Movendo em formação ►E se as unidades precisarem mover-se já em formação para o seu destino? Movendo em formação ► Como calcular o caminho da formação? Calcular o caminho para cada unidade é caro! ► Diferentes velocidades podem quebrar a integridade da formação Mais duas pedras no caminho Mais duas pedras no caminho Mais duas pedras no caminho Mais duas pedras no caminho Mais duas pedras no caminho Mais duas pedras no caminho Conclusões ► Formações adicionam bastante a jogos de guerra (ou que exijam coordenação de movimentos) ► As formações interferem bastante no gameplay (principalmente se o jogador puder customizá-las :-) ► Podem ser bastante complexas, dependendo dos atributos das unidades, etc. Referências ► AI Game Programming Wisdom, Steve Rabin et al, Charler River Media, Inc., seção 5 ► Influence Mapping Demo, http://www.ccg.leeds.ac.uk/james/influence/ ► Balancing automated behavior and human control in multi-agent systems: a case study in Roboflag, http://www.cds.caltech.edu/~murray/projects/dar pa01-mica/roboflag/zswh03-acc.pdf