abrindo o jogo - cryengine

Upload: rodrigo-medeiros-lehnemann

Post on 06-Jul-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Abrindo o Jogo - Cryengine

    1/29

     

    Parte 1Meu nome é Leonardo Dalmina, sou Bacharel em Sistemas de Informação da faculdadeFACCAT, do Rio Grande Do Sul. Vim apresentar a vocês uma série de seis capítulossobre o estudo da engine para jogos CryENGINE. Nesta série estarei aqui relatandominha experiência com o trabalho de conclusão que fiz na faculdade no ano passado(2012), bem como o trabalho em si, que envolve o estudo de diversas funcionalidades daferramenta.

    Ah! Legal Leonardo, você fez um trabalho de conclusão relacionado com jogos! Mas oque eu, desenvolvedor de jogos, vou aproveitar desse seu trabalho acadêmico para minhacarreira profissional? A resposta é simples! A CryENGINE pode ser uma opção muitointeressante para você utilizar no desenvolvimento dos seus jogos!

    Desenvolvedores Indie em geral optam por iniciar com jogos casuais. E mesmo quandonão se trata de um jogo casual, normalmente é um jogo que precisa ser feito com baixocusto (caso dos jogos casuais). Mesmo tendo que investir em uma ferramenta (e existemas opções sem custo), esse investimento é baixo comparado com o custo de criar e darmanutenção na própria engine. Se você é um desenvolvedor Indie, é importante estudaras principais opções de engines disponíveis para lhe auxiliar na tarefa de desenvolver umgame.

    Um artigo publicado no portal GameCareerGuide  mostra que no desenvolvimento de jogos grandes (tradicionais, ou AAA), é comum os desenvolvedores criarem a própria

    http://www.gamecareerguide.com/features/1160/the_state_of_game_development_.php?page=2http://www.gamecareerguide.com/features/1160/the_state_of_game_development_.php?page=2http://abrindoojogo.com.br/wp-content/uploads/2013/03/CryEngine-Logo.jpghttp://www.gamecareerguide.com/features/1160/the_state_of_game_development_.php?page=2

  • 8/18/2019 Abrindo o Jogo - Cryengine

    2/29

    engine ou usarem apenas APIs. Mas ao criar jogos casuais, 60% preferiram adquirir umaengine pronta (veja “Figure 6: Preferred technology building methodology”).

    Como citei anteriormente, além do estudo, eu também fiz um jogo com a engine. Esse jogo foi intitulado Cryshooter, fazendo uma analogia às palavras Cry (presente no iníciodo nome da engine) e shooter (tradução do idioma inglês para atirador). No final da

    leitura, quem ficar interessado em ver as funcionalidades em execução, pode baixar o jogo no seu blog oficial (as informações necessárias estão contidas nas respostas das perguntas 3 e 7 no final deste post) e dar preferência à versão de 64-bits, pois a de 32-bitsestá muito instável.

     Nesta série conheceremos 5 recursos importantes do CryEngine, cada um com váriasfuncionalidades. Mas antes, iniciaremos com uma série de perguntas e respostas sobre aferramenta.

    1. Como funciona o sistema de licença?

    Existem vários tipos de licença, para várias finalidades que a ferramenta será utilizada,como a criação de Games tradicionais, Serious Games, Animações etc. As licença maisacessíveis são a CryENGINE Free Use e a CryENGINE 3 Independent DevelopersPlatform. A CryENGINE Free Use é a licença para estudantes, 100% gratuita, com acessoa ferramenta completa, mas para uso não-comercial. Isso permite que o estudante use aferramenta ilimitadamente desde que não ganhe dinheiro (direta ou indiretamente) comos jogos feitos nela. É possível divulgar seu game, desde que este seja completamentegratuito. A CryENGINE 3 Independent Developers Platform é a licença paradesenvolvedores, também com acesso a ferramenta completa, e desta vez permitindo ouso comercial. Este modelo de licença é baseado em royalties, onde a partir do

    lançamento do game, 20% de toda a receita que você obter com ele ficará com a Crytek.Informações sobre outros tipos de licença (para estúdios, grandes companhias etc) podemser obtidas na página de licenças da CryENGINE(http://mycryengine.com/index.php?conid=3).

    2. Onde posso baixar esta engine?

    A CryENGINE pode ser obtida no portal da Crydev.net. 

    3. Preciso fazer algum tipo de cadastro?

    http://www.crydev.net/http://www.crydev.net/http://www.crydev.net/http://abrindoojogo.com.br/wp-content/uploads/2013/03/cryshooter.pnghttp://www.crydev.net/

  • 8/18/2019 Abrindo o Jogo - Cryengine

    3/29

    Sim. Para abrir a engine você terá que informar o seu usuário e senha de acesso ao portalda Crydev.net. Você pode fazer o registro no momento em que abrir a engine ou pelo

     próprio portal da Crydev.net (http://www.crydev.net/ucp.php?mode=register ).

    4. Quais são os requerimentos de hardware para executá-la?

    Requerimentos do Sistema [Desenvolvedor]

      Sistema Operacional: Windows XP SP2, Windows Vista SP1, Windows 7  CPU: Intel Core 2 Duo 2GHz, AMD Athlon 64 X2 2GHz ou superior (um

     processador com vários núcleos é fortemente recomendado)  Memória: 2 GB RAM (recomendado 4 GB)  Placa de Vídeo: nVidia 8800GT 512MB RAM, ATI 3850HD 512MB RAM ou

    superior (no mínimo SM 3.0)

    Requerimentos do Sistema [Usuário Final]

    Usuários finais que somente usam o Launcher (para rodar jogos já compilados) daCryENGINE sem o Sandbox possuem requisitos de sistema mais baixos.

      Sistema Operacional: Windows XP SP2, Windows Vista SP1, Windows 7  CPU: Intel Core 2 Duo 2GHz, AMD Athlon 64 X2 2GHz ou superior (um

     processador com vários núcleos é fortemente recomendado)  Memória: 1 GB RAM (recomendado 2 GB)  Placa de Vídeo: nVidia 8800GT 512MB RAM, ATI 3850HD 512MB RAM ou

    superior (no mínimo SM 3.0)

    Pacotes de Software necessários:

      DirectX Package   VS2010 32-bit   VS2010 64-bit 

    5. Quero aprender mais! Onde posso encontrar tutoriais? Existe algumlivro?

    Maiores informações sobre a ferramenta estão presentes na documentação oficial da

    CryENGINE 3. Nesta documentação algumas funcionalidades estão descritas em formade tutorial, fazendo um passo-a-passo bem intuitivo. Para tutoriais em forma de vídeo,aconselho fortemente a adquirir as vídeo-aulas do  portal Eat 3D, eles tem uma grandevariedade de tutoriais para diversos programas, e claro, tutoriais específicos para aCryENGINE. Existem livros já publicados, eu utilizei para o meu trabalho o CryENGINE3 Cookbook, que na época era a única publicação existente. Hoje já existem novas

     publicações, como por exemplo, o livro CryENGINE 3 Game Development: Beginner’sGuide.

    6. Se eu tiver dúvidas, onde posso resolvê-las?

    http://www.crydev.net/ucp.php?mode=registerhttp://www.crydev.net/ucp.php?mode=registerhttp://www.crydev.net/ucp.php?mode=registerhttp://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6883http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6883http://www.microsoft.com/download/en/details.aspx?id=5555http://www.microsoft.com/download/en/details.aspx?id=5555http://www.microsoft.com/download/en/details.aspx?id=14632http://www.microsoft.com/download/en/details.aspx?id=14632http://freesdk.crydev.net/http://freesdk.crydev.net/http://freesdk.crydev.net/http://eat3d.com/bundles/cry3_bundlehttp://eat3d.com/bundles/cry3_bundlehttp://eat3d.com/bundles/cry3_bundlehttp://eat3d.com/bundles/cry3_bundlehttp://freesdk.crydev.net/http://freesdk.crydev.net/http://www.microsoft.com/download/en/details.aspx?id=14632http://www.microsoft.com/download/en/details.aspx?id=5555http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6883http://www.crydev.net/ucp.php?mode=register

  • 8/18/2019 Abrindo o Jogo - Cryengine

    4/29

    Existe um fórum no portal da Crydev.net onde vários usuários e empresas postam suasdúvidas para que outros usuários e também desenvolvedores que trabalham na Crytek assolucionem. Este fórum utiliza o mesmo usuário e senha da CryENGINE.

    7. Onde posso baixar o jogo Cryshooter?

    O jogo Cryshooter está disponível para download no seu blog oficial. 

    8. Porque o blog do jogo Cryshooter está todo em Inglês?

    Por uma questão de público alvo. Ao desenvolver o jogo, optei por interagir com osusuários da comunidade/fórum do portal da Crydev.net, afinal, eles tinham tanto interessequanto eu na ferramenta. Como o idioma utilizado no fórum é o inglês, ao criar o blogutilizei este idioma para que os usuários do fórum pudessem ter mais facilidade paraentender meu trabalho.

    9. Que versão da CryENGINE você usou quando fez este trabalho?

    Utilizei a versão 3.4.0. A versão atual pode ser conferida em www.crydev.net. 

    10. É possível trabalhar na empresa Crytek? Como faço para entrar emcontato?

    Sim, é possível, desde que você saiba se comunicar (escrita e verbalmente) muito bemem inglês. No website oficial da Crytek  existe uma seção de carreira onde você pode obterinformações gerais, ver as vagas disponíveis e também aprender sobre os Estúdios que

    eles possuem. Atualmente, existem 9 estúdios, sendo a sede da empresa localizada emFrankfurt, na Alemanha, onde normalmente está aberta a maior quantidade de vagas emrelação aos outros estúdios. O endereço de acesso para a página de ofertas de trabalho éhttp://www.crytek.com/career/offers/overview, escolha um estúdio e boa sorte!

    Iniciando então o nosso estudo da CryENGINE, começamos nos organizando emrelação aos recursos que serão apresentados nesta série:

    1) Gráficos em Tempo-Real

    2) Personagens Realistas

    3) Sistema Modular Avançado de Inteligência Artificial

    4) Velocidade Máxima em Alcance de Visão

    5) Música e Som

    Cada um destes recursos possui várias funcionalidades, que serão apresentadas aqui,uma a uma. A ideia é cada capítulo apresentar apenas um recurso. Seguindo a ordemlistada anteriormente, o primeiro deles será o recurso Gráficos em Tempo-Real. Como

    este é o recurso que mais possui funcionalidades, vou dividi-lo e apresentar apenas 3

    http://cryshooter.blogspot.com/http://cryshooter.blogspot.com/http://cryshooter.blogspot.com/http://www.crydev.net/http://www.crydev.net/http://www.crydev.net/http://www.crytek.com/http://www.crytek.com/http://www.crytek.com/http://www.crytek.com/career/offers/overviewhttp://www.crytek.com/career/offers/overviewhttp://www.crytek.com/career/offers/overviewhttp://www.crytek.com/http://www.crydev.net/http://cryshooter.blogspot.com/

  • 8/18/2019 Abrindo o Jogo - Cryengine

    5/29

    funcionalidades dele neste post, as restantes ficam para o próximo capítulo juntamentecom as funcionalidades do recurso Personagens Realistas.

    Confiram então agora as funcionalidades do recurso Gráficos em Tempo-Real (Parte 1):

    1.1 Vegetação Integrada e Sistema de Geração de Cobertura de Terreno

    Toda a vegetação do jogo foi feita utilizando esta funcionalidade. Através dela, foi possível cobrir diversas partes do mapa do jogo com vegetações variadas. A Figura 1ilustra o resultado da funcionalidade aplicada no cenário principal do jogo.

    FI GURA 1  – Vegetação Integrada e Sistema de Geração de Cobertura de Terreno

    Pode-se observar na figura acima que é possível controlar a rotação dos objetos queserão adicionados ao terreno, bem como a variação dos seus tamanhos. Isso pode serfeito através do módulo Vegetation, atribuindo um valor para o “ Brush Radius”(tamanho do círculo que representa o local da superfície que receberá a vegetação) eselecionando qual vegetação será utilizada em uma lista de objetos (do tipo vegetação)estruturalmente organizada.

    FIGURA 1.A – Criação e Edição de Vegetações

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/1.1.A.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/cryengine1-1.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    6/29

    Outros dois pontos importantes a serem considerados são os atributos Bending  e Density. O primeiro faz o objeto balançar, simulando um efeito de vento passando porele. Quanto maior o valor bending , maior será a intensidade com que o objeto irá

     balançar. O segundo corresponde à densidade do objeto no momento em que ele foradicionado ao terreno, tratando-se neste caso do tamanho do espaço que ele ocupará no

    terreno (independente do seu tamanho visual). Quanto maior for o valor density, maisespaço o objeto irá ocupar. Como os objetos não se sobrepõem, se o valor density for bastante elevado, haverá muito espaço entre os objetos de vegetação (chegando aolimite de nem serem adicionados caso a densidade ocupe um espaço maior que o valor“ Brush Radius”), todavia se o valor for muito baixo, os objetos ficarão extremamente

     próximos, portanto definir um valor adequado se faz necessário para um cenário maisrealista.

    Agilidade no processo de criação, fácil parametrização e alto realismo podem serconsiderados os pontos positivos desta funcionalidade. A falta de um aviso oumensagem de erro ao utilizar um valor inadequado nos atributos como, por exemplo, o

    atributo density, é um ponto onde a ferramenta poderia melhorar.

    1.2 Sistema de Partículas Suaves em Tempo Real e Editor de FX Integrado

    O sistema de partículas foi responsável pela criação de efeitos como fogo, água efumaça no jogo. Através dele, é possível controlar como a partícula irá se comportar,qual a quantidade de partículas que serão propagadas pelo objeto, e também aintensidade destas.

    FIGURAS 2.A e 2.B  – Criação e edição de um objeto do tipo partícula

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/1.2.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.2.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    7/29

    Há ainda as partículas que emanam sons, de acordo com seu respectivo efeito. A Figura2 ilustra o resultado da funcionalidade aplicada no Level  02 do jogo.

    FI GURA 2  – Sistema de Partículas Suaves em Tempo Real e Editor de FX Integrado

    A figura acima exibe uma cachoeira. A cachoeira, a primeira vista, parece ser umelemento único. Todavia, no jogo Cryshooter , ela foi criada utilizando três tipos de

     partículas diferentes, que são: middle_rapids, que faz o efeito da água respingandoacima das pedras, fall_Wide, que faz o efeito de água fluindo para um determinado

     ponto, e bottom_splash, que dá o efeito da água colidindo com uma superfície.

    FIGURA 2.C  – Visualizador e Gerenciador de efeitos de partículas

    O alto controle sobre as características das partículas bem como a simplicidade de uso podem ser considerados os pontos fortes desta funcionalidade.

    1.3 Ferramentas Dedicadas para Estrada e Rios

    Todas as estradas e rios criados no Cryshooter  foram feitos utilizando estafuncionalidade. Seus princípios de criação são muito similares.

    FIGURAS 3.A e 3.B  – Criação e edição de uma Estrada

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/1.2.C.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/cryengine1-2.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    8/29

     

    Quando se cria uma estrada utiliza-se o objeto Road  desenhando uma linha quecorresponde ao trajeto da estrada. Para a criação de rios, utiliza-se o objetoWaterVolume desenhando uma figura poligonal 2D. A Figura 3 ilustra o resultado dafuncionalidade aplicada no Level  02 do jogo.

    FI GURA 3  – Ferramentas Dedicadas para Estrada e Rios

    A figura acima exibe a utilização de uma estrada e um rio em um só cenário. Ambos osobjetos, depois de desenhados, precisam receber um material. A parte mais escura daestrada é apenas o terreno do mapa levemente elevado, a parte mais clara é o materialaplicado na estrada, que segue a linha que foi desenhada na criação desta. Em um nívelum pouco mais abaixo está o rio, que recebeu o material que lhe dá o efeito de água.

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/cryengine1-3.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.3.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.3.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    9/29

     No jogo Cryshooter  existem dois tipos de água: um é o oceano, que está presente emtodo o mapa. O outro são os objetos WaterVolume, identificados aqui como rios. Estesrios estão presentes no Level  02 do jogo e também atrás do topo da cachoeira (também

     presente no Level  02), que embora não seja uma parte navegável do mapa, aparece nacena final do jogo.

    FIGURAS 3.C e 3.D  – Criação e edição de um Rio (WaterVolume)

    Um ponto importante que deve ser observado ao se utilizar objetos WaterVolume é aextremidade do objeto. Uma vez que este objeto é uma figura poligonal 2D, suasextremidades determinam o ponto onde a água acaba, e portanto, devem ser escondidasdo jogador para aumentar o realismo do cenário. Uma boa maneira para esconder estasextremidades é posicioná-las dentro de outro objeto. Na Figura 3, as extremidades dorio estão posicionadas dentro do muro do cenário e também dentro das montanhas.

    O baixo custo para edição, tanto para a estrada como para o rio, é a característica maisformidável desta funcionalidade, pois mesmo depois do objeto estar pronto, com omaterial aplicado e já posicionado no cenário, ainda é possível modificá-lo em váriosaspectos sem resultar em incompatibilidades no objeto final.

    1.4 Criador Dedicado de Veículos 

    O criador dedicado de veículos permite que um veículo seja modificado e até mesmocriado desde o início. Estas modificações são próprias do comportamento do veículo,diferenciando-se das propriedades que ele possui como muitos outros objetos daCryENGINE .

    FIGURAS 4.A e 4.B – Criação e edição de um objeto do tipo Veículo

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/1.3.D.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.3.C.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    10/29

     

     No Cryshooter  foram utilizados dois veículos. O primeiro é o “ HMMWV ”, um carrotanque que já vem com a ferramenta. O segundo, apesar de ser visualmente igual ao

     primeiro, é diferente nas configurações, pois consiste em uma modificação do carrotanque original, tratando-se de um novo veículo, denominado “WaterproofHMMWV ”,

    uma vez que é um carro tanque impermeável. A Figura 4 ilustra o resultado dafuncionalidade aplicada no cenário principal do jogo.

    FIGURA 4 – Criador Dedicado de Veículos

    A figura acima exibe o carro tanque impermeável. Diferente do modelo original, estemodelo não afunda quando está em contato com a água. A figura ilustra um momentoquando o jogo já está sendo executado, e o veículo permanece boiando na superfícielíquida. O que difere o carro tanque original (que afunda) do carro tanque impermeável

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/fig4.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.4.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.4.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    11/29

    é a configuração de sua densidade. Enquanto o carro tanque original possui 50 unidadesde densidade, o carro tanque impermeável possui 10 mil unidades, um valorextremamente elevado que faz com que a estrutura principal do veículo não afunde (issonão se aplica às rodas).

    FIGURA 4.C – Editor de Veículos

    A principal qualidade desta funcionalidade é a maneira como ela separa bem as partesdo Veículo em diferentes categorias, o que facilita a organização tanto para ediçãodeste, como para criação de um Veículo totalmente novo, desde o início.

    1.5 Iluminação Global Dinâmica em Tempo Real 

    A iluminação global é uma parte crucial para o realismo do cenário, pois calcula como aluz irá se comportar, de acordo com os objetos que foram adicionados, alterados ouremovidos do ambiente. Os objetos responsáveis por fazer este cálculo de luz são

    conhecidos como EnvironmentProbes. A Figura 5 ilustra o resultado da funcionalidadeaplicada no cenário Level  02 do jogo.

    FIGURA 5 – Iluminação Global Dinâmica em Tempo Real

    A figura acima exibe a funcionalidade antes e depois de ser aplicada. Para calcular o

    local de incidência da luz, o objeto EnvironmentProbe deve cobrir toda a área que sedeseja aplicar a luz. Como o objeto é uma esfera, deve se levar em conta até objetos que

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/fig5.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.4.C.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    12/29

    estão posicionados no céu do ambiente, uma vez que estes também influenciam nadistribuição da luz.

    FIGURA 5.A e 5.B – Criação e edição de um objeto EnvironmentProbe

     No jogo Cryshooter  esta funcionalidade foi aplicada no cenário principal e no Level  02.Como pode ser visto na Figura 5, na parte da esquerda está o Level  02 com o objeto

     EnvironmentProbe desativado. Já na parte da direita, encontra-se ativado, e todos oselementos no cenário agora recebem a quantidade de luz apropriada, assim como aintensidade de sombra projetada por outros objetos é corrigida.

    FIGURA 5.C – Visualização e Edição de um objeto EnvironmentProbe

    O alto realismo gerado no cenário através desta funcionalidade torna o seu uso

    indispensável, podendo ser classificado como sua melhor característica. Todavia, porcausar um grande impacto na luz, alguma reconfiguração de luminosidade no cenário

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/1.5.C.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.5.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/1.5.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    13/29

  • 8/18/2019 Abrindo o Jogo - Cryengine

    14/29

     

    FIGURA 1.C – Editor de Personagens

    A similaridade de como esta funcionalidade trata os objetos bípedes em relação a outrosaplicativos de modelagem de personagens 3D é notável. Uma vez concebida a estruturade um bípede pela funcionalidade, torna-se extremamente simples manuseá-lo eincorporar a ele novos elementos, bem como alterar elementos já existentes.

    2.2 Espalhamento de sub-superfície 

    Esta funcionalidade permite a utilização de objetos translúcidos dentro do jogo. A luzage de uma forma diferente nesses objetos, pois ao invés de iluminar somente suasuperfície, ela o atravessa. A Figura 2 ilustra o resultado da funcionalidade aplicada nocenário principal do jogo.

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/2.1.C.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/2.1.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/2.1.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    15/29

    FIGURA 2 – Espalhamento de sub-superfície

    A figura acima exibe uma pedra de gelo muito próxima. Pode-se observar na figura quea luz atravessou o objeto, pois é possível enxergar através dele, ou seja, podemos vertodos os elementos do ambiente que se encontram atrás da pedra de gelo.

    FIGURA 2.A e 2.B – Criação e edição de um objeto translúcido

    A facilidade de uso é o ponto forte desta funcionalidade, bastando-se apenas selecionarum objeto que possua essa camada translúcida e adicioná-lo ao cenário, uma vez que aferramenta automaticamente exibe o que está além do objeto em suas partestranslúcidas.

    http://abrindoojogo.com.br/wp-content/uploads/2013/04/2.2.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/2.2.A.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/fig2.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    16/29

    FIGURA 2.C – Editor de Materiais

    Encerrando este recurso chegamos ao fim de mais um capítulo da série CryENGINE . No próximo episódio, partiremos para o terceiro recurso da ferramenta, que estuda a partede 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, conhecidocomo FlowGraph. Os FlowGraphs são criados através desta funcionalidade, sendoresponsá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 dascenas de introdução e fim, entrada e saída de fases, contagem de mortes etc. A Figura 1ilustra 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 estenome, pois foi criado a partir de um objeto com este mesmo nome, cuja utilização foisomente para a criação do fluxograma. Neste trecho, estão os diversos nodos quecompõem a caixa de comentário “Create Time”. Dentro desta caixa está a lógicaresponsável pela criação do cronômetro.

    Para um melhor esclarecimento do funcionamento do Sistema de Edição de IA, aestrutura e a comunicação dos nodos exibidos na Figura 1 são identificadas da seguintemaneira: 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 segundosespecificado no atributo period , um evento será gerado na sua saída out . A partir daí, o

    http://abrindoojogo.com.br/wp-content/uploads/2013/06/fig1.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/04/2.2.C.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    17/29

    nodo Seconds (do tipo contador) começa a contagem dos segundos. Toda vez que ossegundos são alterados, quatro outros nodos são atualizados. Desses quatro nodos, umserve para verificar se a contagem de segundos é menor que dez, e outro para verificarse é igual a sessenta. Os outros dois nodos são Strings (do tipo concatenar), e um exibeos 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 queverifica se os segundos são menores que 10. Por fim, o nodo que verifica se os segundosatingiram sessenta ativa o nodo Minutes (do tipo contador) para começar a contagemdos minutos e também reinicia a contagem do nodo Seconds. Este nodo Minutes ativaoutro 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 nodoString  que irá enviar o valor para nodos fora do “Create Time” que irão formatar a horae atualizá-la na tela para o jogador.

    Recomenda-se sempre criar um fluxograma a partir de um objeto. Este objeto pode sermuito 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), poisnão são exibidos quando o jogo está em execução, e por serem Entidades, podem servinculados a fluxogramas.

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

    http://abrindoojogo.com.br/wp-content/uploads/2013/06/3.1.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/06/3.1.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    18/29

    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 comoexemplo 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 umavez que estes mudam o comportamento do sistema, dependendo do tipo de alteraçãorealizada (e também da quantidade de uma só vez), há o risco dos eventos no sistemanão corresponderem com o que foi programado no fluxograma. Nesse caso, deve-seacessar o item de menu Generate All AI  (dentro do menu AI ), que fará com que toda aIA do jogo seja compilada novamente para o ambiente de execução, incluindo qualquertipo de alteração realizada nos fluxogramas.

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

    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

    http://abrindoojogo.com.br/wp-content/uploads/2013/06/3.1.D.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/06/3.1.C.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    19/29

    intensidade, cor refletida no solo, cor do céu, neblina etc. A Figura 2 ilustra o resultadoda 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 afuncionalidade permita que haja dia e noite no jogo, com transições graduais evelocidade parametrizável, neste jogo foi utilizado o horário fixo das onze horas damanhã. 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

    http://abrindoojogo.com.br/wp-content/uploads/2013/06/3.2.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/06/3.2.A.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/06/fig2.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    20/29

    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 aodesenvolvedor personalizar, sem muita complexidade, o sistema de tempo do diaconforme sua necessidade.

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

    4.1 Ambientes Interativos e Destrutíveis 

    Objetos destrutíveis estão presentes no decorrer do jogo Cryshooter . Alguns objetos podem se destruir em dois estágios, como por exemplo, o veículo, que primeiro pegafogo e depois explode. A Figura 1 ilustra o resultado da funcionalidade aplicada nocenário principal do jogo.

    FIGURA 1 – Ambientes Interativos e Destrutíveis

    A figura acima exibe outro tipo de destruição de objetos. Nela, a vegetação foidestruída, mais especificamente algumas árvores. Pode-se observar que este tipo deobjeto não se destrói em estágios, mas sim em partes. Toda vez que o jogador acertauma grande quantidade de tiros em um mesmo local desse objeto, ele se divide a partir

    desse local em duas partes. Se uma dessas partes for acertada novamente por umaquantidade de tiros em um determinado ponto, esta parte se dividirá em mais duas,tornando agora o objeto original que era uma árvore única em três partes distintas.

    A simplicidade de uso é o ponto positivo desta funcionalidade, uma vez que os objetosdestrutíveis tem toda sua lógica de destruição implementada pela CryENGINE .

    4.2 Ferramentas de Análise de Desempenho 

    Como ferramenta de análise de desempenho, a CryENGINE  fornece a geração dearquivos XML com dados estatísticos extremamente detalhados sobre o jogo, para que o

    desenvolvedor possa visualizar em um único local diversas informações úteis sobre oseu projeto. Esses arquivos XML seguem um padrão de formatação, e podem ser lidos

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/fig1.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    21/29

    em programas como o Microsoft Excel . A Tabela 1 descreve alguns dados referentes àgeometria estática do jogo Cryshooter .

    TABELA 1 – Dados estatísticos do jogo

    Filename  Refs MeshSize(KB) 

    TextureSize(KB) 

    characters/humanoid/plasma_rifle.cgf 62 130 49.338

    structures/walls/farm_wall/farm_wall_6m_high.cgf 38 97 9.333

    structures/buildings/fishing_houses/fishing_house_door_a.cgf 2 21 9.599

    structures/ladders/mp_ladder1.cgf 1 29 127

    Todos os objetos presentes no jogo são considerados “Static Geometry”, ou GeometriaEstática. Nos dados apresentados na Tabela 1, pode-se observar quatro tipo deinformações diferentes, que são: nome do arquivo que contém o objeto, quantidade devezes que ele é referenciado no cenário, tamanho em kilobytes da malha do objeto etamanho em kilobytes da textura do objeto.

    A Tabela 1 contém a informação de quatro objetos inseridos no jogo Cryshooter , queseguindo a ordem apresentada de cima para baixo são: arma acoplada no inimigo (que

     possui aparência alienígena) e parede de pedra (objetos localizados no Level  02), porta e

    escada para acesso ao telhado da casa de pescador (objetos localizados no cenário principal).

    FIGURA 2 – Geração de dados estatísticos

    Gerar esses relatórios é extremamente simples, bastando apenas acessar o item de menu“Save Level Statistics”, dentro do menu Tools. Somado a isso, o alto nível deorganização dos dados contidos nesses relatórios é o que torna essa funcionalidadeessencial para qualquer jogo que necessite ter um desempenho otimizado.

    4.3 Renderização Offline 

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/4.2.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    22/29

    A Renderização Offline contempla um elemento muito notável para os jogos: as cut- scenes (cenas pré-renderizadas). Através do módulo “Track View” da CryENGINE  é possível criar quantas cut-scenes forem necessárias para o jogo. A Figura 3 ilustra asinformações contidas dentro de uma das cenas do jogo Cryshooter .

    FIGURA 3 – Renderização Offline

    A figura acima resume toda a lógica de execução da cena inicial do jogo, que inicia

    assim que o jogo é carregado. Na engine, essas cenas são identificadas comosequências, portanto, a cena inicial do jogo é a sequência “Intro”. Para cada sequência,deve ser criada uma câmera, que irá “filmar” a cena em si. A trajetória da câmera é

     baseada em uma linha de tempo (em segundos), cuja duração é configurada nas propriedades da sequência. Para fazer a câmera se movimentar, deve-se gravar emdeterminadas posições da linha do tempo a posição e a rotação da câmera, de modo quea engine irá, no decorrer do tempo, gradualmente posicionar a câmera de uma posição

     para outra. Estas posições são obtidas dinamicamente pela Viewport  (tela de edição doambiente do jogo) da engine, através das coordenadas X, Y e Z atuais do objeto câmera.

    FIGURA 3.A – Propriedades da sequência Intro

     No jogo Cryshooter , além das posições inicial e final da câmera, ainda há a posiçãointermediária, que ocorre no segundo número trinta. Foram adicionados também efeitosde transição de imagem, através do ScreenFader . Quando o tempo está passando sobre

    o trecho In, a tela está escura e vai clareando gradualmente, quando passa pelo trecho

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/4.3.A.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/4.3.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    23/29

    Out , a tela está clara e vai escurecendo, também gradualmente, ambas configuradas paraduração de quatro segundos.

    FIGURA 3.B – Criação de um objeto do tipo Camera

    Uma ótima prática para agilizar o processo de criação das cut-scenes é visualizar emtempo real o que está sendo exibido na câmera vinculada a cut-scene. A câmera padrãoda CryENGINE  sempre exibe a visão de perspectiva do jogo. Uma maneira de alterar acâmera a ser utilizada é selecionar o seu objeto correspondente no jogo, ir até o item demenu Switch Camera (dentro do menu Display) e selecionar o item Selected CameraObject . Para voltar a utilizar a câmera de perspectiva, basta seguir o mesmo caminho demenus, apenas trocando a seleção final pelo item Default Camera.

    FIGURA 3.C – Viewport do jogo visualizada pelo objeto CameraIntro

    A alta facilidade de uso e a similaridade desta funcionalidade com outros editores devídeos são magníficas. Isso se dá pelo fato de que a cut-scene fica armazenada em umalinha do tempo, que assim como em outros editores de vídeos, possui diferentescamadas, uma para cada tipo de elemento a ser nela inserido.

    Chegamos ao fim de mais um capítulo da série CryENGINE . No próximo episódio,seguiremos para o último recurso estudado nesta ferramenta, conhecido como Música eSom!

    5.1 Sons Dinâmicos e Música Interativa 

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/4.3.C.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/4.3.B.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    24/29

    A música interativa é uma parte em destaque no jogo Cryshooter , uma vez que todo o jogo possui música de fundo. Esta funcionalidade permite que, de uma forma clara eintuitiva, sejam manipuladas as diferentes músicas que irão tocar no decorrer do jogo,ativadas por determinados eventos e seguindo uma programação lógica. A Figura 1ilustra a utilização da funcionalidade aplicada dentro de um fluxograma.

    FIGURA 1 – Sons Dinâmicos e Música Interativa

    A figura acima exibe um nodo “ Music:PlayPattern” interagindo com outros nodosatravés de eventos, responsáveis por deslocar o jogador de um ponto do mapa para outroao entrar no Level  01 e também ativar a música de fundo deste Level . No jogoCryshooter , este nodo “ Music:PlayPattern” teve apenas alguns atributos utilizados, que

    são: Play (responsável por iniciar a música), Stop (responsável por parar a música), Pattern (responsável por guardar a música que irá ser reproduzida) e Finished  (quedispara um evento quando a música chega no fim). O atributo Play é ativado sempreque um evento for recebido, que pode ser tanto o evento do jogador ter entrado no Level  01 quanto o evento da música ter chegado ao fim. O atributo Stop também é ativadosempre que um evento for recebido, porém estes eventos são externos à caixa decomentário “Warp To Level 01”, podendo ser tanto um deslocamento para fora do Level  01 quanto a execução da cena final do jogo.

    Um atributo que deve ser utilizado com cuidado é o atributo Done. Este atributo éativado não apenas quando a música chega ao fim, mas também quando é abortada.Portanto, a menos que seja necessário disparar o mesmo evento para ambas as situações,o correto é utilizar ou o atributo Finished  ou o atributo Aborted .

    5.2 Áudio Ambiental 

    O Áudio Ambiental é uma funcionalidade que, além de ter um uso simples e objetivo,aumenta ainda mais o realismo do jogo Cryshooter , caracterizando determinados pontosdo jogo com sons ambientais, como por exemplo, o som da chuva presente no Level  01que está coberto por nuvens e com uma relativa quantidade de água caindo do céu sobretodo o Level . A Figura 2 ilustra o resultado da funcionalidade aplicada no cenário Level  

    02 do jogo.

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/fig11.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    25/29

    FIGURA 2 – Áudio Ambiental

    A figura acima exibe o áudio ambiental aplicado em uma cachoeira pequena. Acachoeira é feita com o sistema de partículas, porém como citado anteriormente,algumas partículas não emitem som, o que se aplica a esta partícula em questão.Visando melhorar a identificação das partes importantes da figura acima, a mesma foimodificada de modo a aumentar a intensidade de determinadas linhas (na cor rosa eazul) em relação à intensidade original fornecida pela funcionalidade. Para dar ao

     jogador o realismo do som da cachoeira, devemos incluir um objeto no jogo do tipo AmbientVolume (identificado na figura acima pelo ícone com um alto-falante na corazul), que armazenará o som ambiente a ser reproduzido. Todavia, este objeto sozinho

    não irá emitir um som, ele precisa de uma área para a engine saber em que parte docenário ela deve reproduzir o som. Esta área pode ser tanto um objeto Shape (que criaum segmento de linhas) quanto um objeto AreaBox (que cria uma caixa com dimensõesconfiguráveis). Ambos os objetos servirão para delimitar o alcance do som, porémcomo o objeto Shape não possui altura, o som não possui limites para esta direção, oque já não acontece com o objeto AreaBox, que o som fica limitado a altura da caixa.

    FIGURA 2.A e 2.B – Criação e edição de um objeto do tipo AmbientVolume 

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/fig2.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    26/29

     

    Uma vez decidido qual objeto será utilizado para emitir o som, basta ligá-lo ao objeto AmbientVolume desejado, adicionando ao atributo Target  do objeto Shape ou AreaBox o objeto em questão. A linha em azul exibida na figura 2 representa o resultado visualdesta ligação.

    FIGURA 2.C e 2.D – Criação e edição de um objeto do tipo Shape 

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/2.D.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/2.C.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/2.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/2.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    27/29

    Através da figura 2, pode-se observar que foi utilizado um objeto Shape (sem limites dealtura), identificado pelas linhas na cor rosa. Quando o jogador entrar no objeto,gradualmente começará a escutar o som da cachoeira, e quando se afastar, gradualmentenotará o som ficando mais baixo, até sumir.

    5.3 Modos de Som 

    Os modos de som adicionam ao jogo Cryshooter , de uma maneira simplificada ealtamente eficiente, equalizações específicas para um determinado local do jogo. Essasequalizações não são músicas nem sons específicos, apenas tratam-se de ajustes feitosno áudio nativo do jogo, como barulho dos passos do jogador, por exemplo. A Figura 3ilustra o resultado da funcionalidade aplicada no cenário principal do jogo.

    FIGURA 3 – Modos de Som

    A figura acima exibe a funcionalidade aplicada sobre uma vegetação específica. Seufuncionamento é muito similar ao da funcionalidade “Áudio Ambiental”, a únicadiferença é que ao invés de ligarmos um objeto AmbientVolume ao objeto Shape ou

     AreaBox, agora ligamos um objeto SoundMoodVolume (identificado na figura acima pelo ícone com um alto-falante na cor cinza), que é responsável por armazenar aconfiguração dos equalizadores do jogo.

    FIGURA 3.A e 3.B – Criação e edição de um objeto do tipo SoundMoodVolume 

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/fig3.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    28/29

     

    FIGURA 3.C – Gerenciador de Modos de Som

    Conforme ilustrado na figura 3, tem-se um tipo específico de vegetação posicionada emum local onde o jogador pode pisar. Esta vegetação é repleta de pequenos galhos e

    folhas, portanto uma equalização que represente um tipo de atrito com esta vegetação sefaz necessária. Para isso, foi selecionada a equalização in_cover . Todavia, para que essaequalização seja utilizada, é preciso armazená-la no atributo SoundMoodName doobjeto SoundMoodVolume.

    FIGURA 3.D e e3.E – Criação e edição de um objeto do tipo AreaBox 

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/3.C.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/3.B.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/3.A.png

  • 8/18/2019 Abrindo o Jogo - Cryengine

    29/29

     

    Uma vez armazenada a equalização, basta ligar o objeto SoundMoodVolume ao objetoque delimitará os limites do novo áudio, que neste caso, trata-se de um objeto AreaBox.

    Conclusão 

    Chegamos ao fim do último capítulo da série CryENGINE . Sim, exatamente! Nãohaverá novos episódios, mas nada impede que você, desenvolvedor de jogos, continueestudando e aprofundando seus conhecimentos sobre esta incrível ferramenta, e quemsabe até outras engines?

    Falando em aprofundar os conhecimentos, eu prometi no primeiro capítulo que aotérmino deste estudo seria disponibilizado aqui no blog o artigo original que foiutilizado para fazer esta série. Como promessa é dívida, segue a URL para acessar oartigo do trabalho de conclusão:

    http://www.slideshare.net/LeonardoDalmina/artigo-tcc-2012

    Finalizando, gostaria de lembrá-los que o mundo do desenvolvimento de jogos éimenso, permanece em constante evolução e sempre há o que aprender! Nosso estudotermina aqui, agora cabe a você, caro leitor, escolher quais serão seus próximos passosna estrada dos games!

    http://abrindoojogo.com.br/wp-content/uploads/2013/07/3.E.pnghttp://abrindoojogo.com.br/wp-content/uploads/2013/07/3.D.png