CryENGINE: uma opção para indies – Parte 4/6

CryENGINE_post

Olá Pessoal! Quarto capítulo da série sobre o CryENGINE, criada pelo Leonardo Dalmina. No post de hoje ele mostra os recursos que a ferramenta oferece para Inteligência Artificial.

“Um jogo? Como assim um jogo?” Depois de ouvir isso do meu orientador e achar que estava tudo perdido, conversei melhor com ele e entendi sua preocupação, já pensando no momento que eu seria avaliado lá no final. Precisei usar o conhecimento que eu tinha sobre desenvolvimento de jogos (agradeço aqui ao curso promovido pelo blog Abrindo o Jogo, participei da primeira turma e o aprendizado foi sensacional), somado ao que aprendi na faculdade, para conseguir montar um projeto de trabalho de conclusão que foi aceito pela instituição de ensino. Faltava saber se ia ser suficiente para eu me formar.

A história segue no próximo capítulo.

Continuando a aprimorar nossos conhecimentos sobre a CryENGINE, hoje vamos estudar as funcionalidades do recurso Sistema Modular Avançado de Inteligência Artificial:

3.1 Sistema de Edição de IA Amigável e Desenhável

A CryENGINE possui um estilo de programação visual por fluxograma, conhecido como FlowGraph. Os FlowGraphs são criados através desta funcionalidade, sendo responsáveis por conduzir boa parte da lógica do jogo. No jogo Cryshooter, os FlowGraphs são responsáveis por controlar o cronômetro, ativação e desativação das cenas de introdução e fim, entrada e saída de fases, contagem de mortes etc. A Figura 1 ilustra o resultado da funcionalidade aplicada no jogo Cryshooter.

FIGURA 1 – Sistema de Edição de IA Amigável e Desenhável

A Figura 1 exibe um trecho do fluxograma ScoreTrigger. O fluxograma recebe este nome, pois foi criado a partir de um objeto com este mesmo nome, cuja utilização foi somente para a criação do fluxograma. Neste trecho, estão os diversos nodos que compõem a caixa de comentário “Create Time”. Dentro desta caixa está a lógica responsável pela criação do cronômetro.

Para um melhor esclarecimento do funcionamento do Sistema de Edição de IA, a estrutura e a comunicação dos nodos exibidos na Figura 1 são identificadas da seguinte maneira: um evento externo altera o estado do nodo Time (do tipo cronômetro) para parado ou não. Quando não está parado, a cada período de tempo em segundos especificado no atributo period, um evento será gerado na sua saída out. A partir daí, o nodo Seconds (do tipo contador) começa a contagem dos segundos. Toda vez que os segundos são alterados, quatro outros nodos são atualizados. Desses quatro nodos, um serve para verificar se a contagem de segundos é menor que dez, e outro para verificar se é igual a sessenta. Os outros dois nodos são Strings (do tipo concatenar), e um exibe os segundos quando forem menores que dez (incluindo um zero na frente), e o outro exibe quando forem maiores, sempre ativados de acordo com o resultado do nodo que verifica se os segundos são menores que 10. Por fim, o nodo que verifica se os segundos atingiram sessenta ativa o nodo Minutes (do tipo contador) para começar a contagem dos minutos e também reinicia a contagem do nodo Seconds. Este nodo Minutes ativa outro nodo String para exibir os minutos, que por sua vez vai disparando novos eventos (paralelamente aos outros nodos) para ir concatenando o tempo até um último nodo String que irá enviar o valor para nodos fora do “Create Time” que irão formatar a hora e atualizá-la na tela para o jogador.

Recomenda-se sempre criar um fluxograma a partir de um objeto. Este objeto pode ser muito variado, desde que seja uma Entidade. Para criar o fluxograma, basta clicar com o botão direito do mouse sobre o objeto e selecionar a opção Create Flow Graph.

FIGURA 1.A – Criação de um Fluxograma

Como nem sempre determinadas ações estão relacionadas a um objeto em específico, é comum a criação de Triggers (objetos que funcionam como gatilho para ações), pois não são exibidos quando o jogo está em execução, e por serem Entidades, podem ser vinculados a fluxogramas.

FIGURA 1.B – Criação de um objeto do tipo AreaTrigger

FIGURA 1.C – Caminho para acessar um fluxograma já criado para uma Entidade

Parte dos nodos contidos no fluxograma abaixo será explicada futuramente, pois faz parte de uma funcionalidade que pertence a um recurso que está por vir nesta série. Assim sendo, não é necessário compreender a imagem abaixo, ela serve apenas como exemplo alternativo desta funcionalidade.

FIGURA 1.D – Trecho de um fluxograma executado no encerramento do Jogo

Um cuidado extra deve ser tomado quando se trabalha com os fluxogramas, pois uma vez que estes mudam o comportamento do sistema, dependendo do tipo de alteração realizada (e também da quantidade de uma só vez), há o risco dos eventos no sistema não corresponderem com o que foi programado no fluxograma. Nesse caso, deve-se acessar o item de menu Generate All AI (dentro do menu AI), que fará com que toda a IA do jogo seja compilada novamente para o ambiente de execução, incluindo qualquer tipo de alteração realizada nos fluxogramas.

Sistema altamente intuitivo, mecanismo de busca por nodos e abstração de codificação em uma linguagem específica são as características mais interessantes desta funcionalidade, pois possuindo apenas a lógica de programação e conhecendo seus elementos básicos, qualquer desenvolvedor pode criar grandes sistemas de lógica através da programação em alto nível oferecida pela ligação de nodos desta funcionalidade.

3.2 Sistema de Tempo do Dia

Esta funcionalidade da CryENGINE permite que toda a atmosfera do jogo seja configurável, desde a posição do sol até mesmo seu efeito no ambiente, como sua intensidade, cor refletida no solo, cor do céu, neblina etc. A Figura 2 ilustra o resultado da funcionalidade aplicada no cenário principal do jogo.

FIGURA 2 – Sistema de Tempo do Dia

A figura acima exibe o sol configurado para o jogo Cryshooter. Embora a funcionalidade permita que haja dia e noite no jogo, com transições graduais e velocidade parametrizável, neste jogo foi utilizado o horário fixo das onze horas da manhã. Assim sendo, o horário atual, horário de início e horário de fim sempre estão posicionados às onze horas da manhã.

FIGURA 2.A – Módulo de Tempo do Dia

FIGURA 2.B – Ferramenta de Iluminação

Fácil utilização é o ponto forte desta funcionalidade, uma vez que qualquer projeto já inicia com esta funcionalidade ativada, incluindo a existência de dia e noite, cabendo ao desenvolvedor personalizar, sem muita complexidade, o sistema de tempo do dia conforme sua necessidade.

Novamente chegamos ao fim de mais um capítulo da série CryENGINE. No próximo episódio, seguiremos para o penúltimo recurso da ferramenta, conhecido como Velocidade Máxima em Alcance de Visão!

Até mais!

– Leonardo Dalmina

Autor: Luiz Nörnberg Ver todos os posts de
Sou Bacharel em Ciência da Computação pela Universidade Católica de Pelotas (UCPel), onde também atuei como professor. Desde a época da faculdade (mais de quinze anos atrás) a paixão por jogos tem sido importante no meu direcionamento profissional. Sou sócio-fundador do Izyplay Game Studio, onde exerço o cargo de Diretor de Tecnologia. Sempre tive grande foco em desenvolvimento em Java, embora tenha migrando para a tecnologia Adobe AIR em função de sua portabilidade. Ah, e é claro, dou meus palpites no game design.

6 Comentários em "CryENGINE: uma opção para indies – Parte 4/6"

  1. Rod Newman 04/06/2013 at 22:37 - Reply

    Uma thread permite, por exemplo, que o usuário de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.

  2. @RenatoFlorencia 04/07/2013 at 23:58 - Reply

    cara o material sobre a cryengine esta ótimo porem tenho medo dele ficara com a mesma superficialidade que vejo em alguns lugares na web… por exemplo ainda não consegui uma forma “simples” de fazer o deploy do projeto ou criar um executável ou instalavel usando a cryengine como é possível na udk por exemplo vc pretende abordar esse tema ???

  3. Leonardo Dalmina 09/07/2013 at 14:59 - Reply

    Oi Renato!

    A ideia da série é dar uma visão geral de alguns módulos da CryENGINE, organizados pela ordem utilizada em um trabalho de conclusão.
    Aspectos como este de criar um executável não fazem parte do estudo, logo não estarão presentes na série.
    No fórum da Crydev.net há alguns posts que falam sobre isso e também ferramentas que “limpam” o teu projeto deixando nele somente o necessário para executar em modo standalone.
    Sugiro dares uma conferida por lá, é possível que haja uma ferramenta ainda melhor e mais atualizada do que a que citei agora.

    Abraço!

  4. @RenatoFlorencia 09/07/2013 at 21:19 - Reply

    legal, valeu pela dica cara, mas eu pessoalmente acho o fórum deles meio bagunçado… de qualquer forma vou dar uma pesquisada mais a fundo lá, pois todo material em pt que acho sobre a cryengine pula esse assunto, de qualquer forma fica a dica já que vc tem uma experiencia maior com a SDK poderia adicionar aos seus planos :)

    • Rodrigo Medeiros 14/07/2013 at 20:48 - Reply

      Renato, a ferramenta que você se refere é o compilador, a UDK já possuí um integrado, porém a CryEngine não. E este é infelizmente um dos pontos fracos da ferramenta, sendo o segundo a tela de Login. Algumas pessoas falam que a versão paga contém o compilador e não possuí tela de login, porém até o momento não falei com ninguém que possuí essa versão para confirmar se isso é verdade ou apenas boado :\

  5. Leonardo Dalmina 11/07/2013 at 15:15 - Reply

    O conteúdo da série já está montado, faltando apenas a publicação, mas quem sabe em algum plano futuro? =)

    Obrigado pela tua sugestão!

Deixar um Comentário