Desenvolvimento de Jogos 2D Gutenberg Neto gutenberg@fuze.cc
Inteligência Artificial Definição de comportamento de NPCs (personagens não-jogáveis) de forma a simular inteligência IA em jogos não necessariamente utiliza técnicas da IA tradicional Voltada a objetivos práticos Como melhor embutir inteligência em cada personagem com a menor complexidade e custo computacional Proporcionar desafio ao jogador Às vezes, dando vantagens diversas ao NPC Deixar o jogo mais divertido ou interessante
Inteligência Artificial No Construct 2 Behaviors Eventos Alguns behaviors que auxiliam na criação de IAs para diversos tipos de jogos Platform 8 Direction Car Sine Turret Pathfinding
Platform Adiciona comportamento estilo jogos plataforma para o personagem Movimentação esquerda e direita Salto Geralmente utilizada para controle por parte do jogador Também pode ser utilizada para simular controle de NPCs Marcar propriedade Default controls como No Controlar comportamento através de eventos
Platform Platform -> Simulate control Left Movimenta o personagem para a esquerda Contínuo Right Movimenta o personagem para a direita Contínuo Jump Faz o personagem saltar
8 Direction Adiciona movimentos em 8 direções para o personagem Jogos top-down Também comumente utilizada para controle do jogador Para controlar NPCs Marcar propriedade Default controls como No Controlar comportamento através de eventos
8 Direction 8Direction -> Simulate control Left Faz o personagem mover-se para a esquerda Right Faz o personagem mover-se para a direita Up Faz o personagem mover-se para cima Down Faz o personagem mover-se para baixo Possível acumular mais de um controle Ex: mover-se para a esquerda e para cima
Car Adiciona movimento de carro ao personagem Aceleração Freio Giro para esquerda e direita Voltado a jogos top-down Também comumente utilizada para controle do jogador Para controlar NPCs Marcar propriedade Default controls como No Controlar comportamento através de eventos
Car Car -> Simulate control Steer left Gira para a esquerda Steer right Gira para a direita Accelerate Acelera Break Freia
Sine Modifica alguma propriedade de um objeto em oscilação de acordo com uma função senóide Posição Tamanho Ângulo...
Sine Propriedades Active on start Se falso, só inicia a movimentação após ser ativada através de um evento Movement Horizontal Vertical Size Width Height Angle Opacity Value only Não modifica o objeto, apenas armazena o valor de oscilação Forwards/backwards Similar ao Horizontal, mas move em direção ao ângulo do objeto
Sine Propriedades Wave Sine Triangle Sawtooth Square
Sine Propriedades Period Período do ciclo em segundos Period offset Segundo inicial do primeiro ciclo Magnitude Amplitude do movimento em pixels ou graus Period random Period offset random Magnitude random Adicionam valores aleatórios ao Period, Period offset e Magnitude
Turret Dá ao objeto a capacidade de detectar outros objetos em um certo alcance, girar em sua direção, mirar e atirar Comumente utilizados como inimigos em jogos tower defense
Turret Propriedades Range Alcance, em pixels Objetos fora do alcance não são detectados pelo turret Rate of fire Tempo em segundos para atirar Rotate Indica se o turret é capaz de rotacionar em direção ao alvo Rotate speed Velocidade de rotação Target mode Indica o modo de mira do turret First in range o Foca no primeiro alvo encontrado Nearest o Foca no alvo mais próximo
Turret Propriedades Predictive aim Dá ao turret a capacidade de prever onde o alvo estará e atirar nessa posição, em vez da posição atual do alvo Leva em conta a velocidade e direção atuais do alvo e a velocidade do projétil atirado Projectile speed Velocidade do projétil, utilizada para calcular a posição de tiro com o Predictive aim
Turret Para que o Turret funcione, é necessário utilizar a ação Turret -> Add object to target para indicar quais objetos são possíveis alvos O projétil em si deve ser criado a partir de eventos, na condição Turret -> On shoot
Pathfinding Faz com que um objeto encontre um caminho até determinado ponto Capaz de identificar e se mover ao redor de obstáculos Pode ser impossível encontrar um caminho em determinados casos Não há garantia de tempo para que o caminho seja encontrado Dependendo da complexidade, pode ser demorado Algoritmo A* Jogos top-down
Pathfinding Ações Pathfinding -> Find path Busca um caminho até determinado ponto X, Y Pathfinding: Movement -> Move along path Faz o objeto se movimentar no caminho encontrado Deve ser chamada apenas após a indicação de que o caminho foi encontrado (Pathfinding -> On path found) Pathfinding -> Add obstacle Adiciona algum tipo de objeto como obstáculo
Pathfinding Condições Pathfinding -> On path found Verdadeiro quando o objeto encontrar um caminho até o ponto estabelecido Pathfinding -> On failed to find path Verdadeiro se o objeto não conseguir encontrar caminho válido até o ponto estabelecido Pathfinding -> On arrived Verdadeiro quando o objeto chegar no final do caminho Pathfinding -> Is calculating path Verdadeiro se o objeto estiver calculando algum caminho Pathfinding -> Is moving along path Verdadeiro se o objeto estiver se movendo por um caminho
Pathfinding Propriedades Cell size Tamanho das células individuais utilizadas para o cálculo do Pathfinding Tamanhos menores podem tornar o cálculo de caminho mais demorado Tamanhos menores podem fazer o objeto cortar certos obstáculos Cell border Tamanho de borda adicionado aos obstáculos, durante o cálculo do caminho, o objeto não poderá passar pelas bordas
Pathfinding Propriedades Obstacles Se Solids, considera objetos com propriedade Solid como obstáculos Se Custom, preciso identificar quais objetos serão obstáculos através de eventos Max speed Acceleration Deceleration Rotate speed Velocidade máxima, aceleração, desaceleração e velocidade angular, do objeto quando estiver se movendo pelo caminho encontrado
Pathfinding Propriedades Rotate object Indica se o objeto deve ser rotacionado enquanto estiver se movendo pelo caminho encontrado Diagonals Indica se o objeto pode se mover em diagonal para alcançar o ponto desejado
HandsOn Crie 2 NPCs em plataformas diferentes e faça ambos andarem em zig-zag em suas plataformas Um com behavior Platform Um com behavior Sine No topo da tela, coloque um objeto com behavior Turret, tendo ambos como alvos Crie um projétil a ser atirado pelo turret Faça o projétil ser disparado quando o turret atirar Não é necessário simular a colisão do projétil com os alvos
HandsOn Exemplo de solução http://bit.ly/c2handson13
Save/Load Game O Construct 2 oferece uma funcionalidade para salvar e carregar o estado dos jogos, se encarregando automaticamente de armazenar os dados importantes referentes à situação atual Objetos e suas propriedades Variáveis globais e locais Arquivos de áudio sendo tocados... Possível indicar que alguns objetos não devem ser salvos Behavior No Save Economiza espaço de armazenamento e desempenho Útil para objetos estáticos, como cenários, e objetos que o desenvolvedor deseja que sejam reiniciados cada vez que o jogo for carregado
Save/Load Game Ações System -> Save Salva o estado de jogo atual Propriedade Slot Nome dado ao jogo salvo Utilizado para carregar o jogo salvo posteriormente System -> Load Carrega algum jogo salvo anteriormente Propriedade Slot Indica o nome do arquivo de jogo a ser carregado
Save/Load Game Condições System -> On save complete Verdadeiro assim que terminar de salvar o jogo System -> On load complete Verdadeiro assim que terminar de carregar o jogo System -> On load failed Verdadeiro se acontecer algum erro na hora de carregar o jogo