Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Desenvolvedores Indie em geral optam por iniciar com jogos casuais. E mesmo quando
no se trata de um jogo casual, normalmente um jogo que precisa ser feito com baixo
custo (caso dos jogos casuais). Mesmo tendo que investir em uma ferramenta (e existem
as opes sem custo), esse investimento baixo comparado com o custo de criar e dar
manuteno na prpria engine. Se voc um desenvolvedor Indie, importante estudar
as principais opes de engines disponveis para lhe auxiliar na tarefa de desenvolver um
game.
Um artigo publicado no portal GameCareerGuide mostra que no desenvolvimento de
jogos grandes (tradicionais, ou AAA), comum os desenvolvedores criarem a prpria
engine ou usarem apenas APIs. Mas ao criar jogos casuais, 60% preferiram adquirir uma
engine pronta (veja Figure 6: Preferred technology building methodology).
Como citei anteriormente, alm do estudo, eu tambm fiz um jogo com a engine. Esse
jogo foi intitulado Cryshooter, fazendo uma analogia s palavras Cry (presente no incio
do nome da engine) e shooter (traduo do idioma ingls para atirador). No final da
leitura, quem ficar interessado em ver as funcionalidades em execuo, pode baixar o
jogo no seu blog oficial (as informaes necessrias esto contidas nas respostas das
perguntas 3 e 7 no final deste post) e dar preferncia verso de 64-bits, pois a de 32-bits
est muito instvel.
Nesta srie conheceremos 5 recursos importantes do CryEngine, cada um com vrias
funcionalidades. Mas antes, iniciaremos com uma srie de perguntas e respostas sobre a
ferramenta.
Sim. Para abrir a engine voc ter que informar o seu usurio e senha de acesso ao portal
da Crydev.net. Voc pode fazer o registro no momento em que abrir a engine ou pelo
prprio portal da Crydev.net (http://www.crydev.net/ucp.php?mode=register).
DirectX Package
VS2010 32-bit
VS2010 64-bit
Existe um frum no portal da Crydev.net onde vrios usurios e empresas postam suas
dvidas para que outros usurios e tambm desenvolvedores que trabalham na Crytek as
solucionem. Este frum utiliza o mesmo usurio e senha da CryENGINE.
Grficos em Tempo-Real
2)
Personagens Realistas
3)
4)
5)
Msica e Som
Cada um destes recursos possui vrias funcionalidades, que sero apresentadas aqui,
uma a uma. A ideia cada captulo apresentar apenas um recurso. Seguindo a ordem
listada anteriormente, o primeiro deles ser o recurso Grficos em Tempo-Real. Como
este o recurso que mais possui funcionalidades, vou dividi-lo e apresentar apenas 3
funcionalidades dele neste post, as restantes ficam para o prximo captulo juntamente
com as funcionalidades do recurso Personagens Realistas.
Confiram ento agora as funcionalidades do recurso Grficos em Tempo-Real (Parte 1):
Pode-se observar na figura acima que possvel controlar a rotao dos objetos que
sero adicionados ao terreno, bem como a variao dos seus tamanhos. Isso pode ser
feito atravs do mdulo Vegetation, atribuindo um valor para o Brush Radius
(tamanho do crculo que representa o local da superfcie que receber a vegetao) e
selecionando qual vegetao ser utilizada em uma lista de objetos (do tipo vegetao)
estruturalmente organizada.
FIGURA 1.A Criao e Edio de Vegetaes
H ainda as partculas que emanam sons, de acordo com seu respectivo efeito. A Figura
2 ilustra o resultado da funcionalidade aplicada no Level 02 do jogo.
FIGURA 2 Sistema de Partculas Suaves em Tempo Real e Editor de FX Integrado
A figura acima exibe uma cachoeira. A cachoeira, a primeira vista, parece ser um
elemento nico. Todavia, no jogo Cryshooter, ela foi criada utilizando trs tipos de
partculas diferentes, que so: middle_rapids, que faz o efeito da gua respingando
acima 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 superfcie.
FIGURA 2.C Visualizador e Gerenciador de efeitos de partculas
O alto controle sobre as caractersticas das partculas bem como a simplicidade de uso
podem ser considerados os pontos fortes desta funcionalidade.
Quando se cria uma estrada utiliza-se o objeto Road desenhando uma linha que
corresponde ao trajeto da estrada. Para a criao de rios, utiliza-se o objeto
WaterVolume desenhando uma figura poligonal 2D. A Figura 3 ilustra o resultado da
funcionalidade aplicada no Level 02 do jogo.
FIGURA 3 Ferramentas Dedicadas para Estrada e Rios
No jogo Cryshooter existem dois tipos de gua: um o oceano, que est presente em
todo o mapa. O outro so os objetos WaterVolume, identificados aqui como rios. Estes
rios esto presentes no Level 02 do jogo e tambm atrs do topo da cachoeira (tambm
presente no Level 02), que embora no seja uma parte navegvel do mapa, aparece na
cena final do jogo.
FIGURAS 3.C e 3.D Criao e edio de um Rio (WaterVolume)
A figura acima exibe o carro tanque impermevel. Diferente do modelo original, este
modelo no afunda quando est em contato com a gua. A figura ilustra um momento
quando o jogo j est sendo executado, e o veculo permanece boiando na superfcie
lquida. O que difere o carro tanque original (que afunda) do carro tanque impermevel
A principal qualidade desta funcionalidade a maneira como ela separa bem as partes
do Veculo em diferentes categorias, o que facilita a organizao tanto para edio
deste, como para criao de um Veculo totalmente novo, desde o incio.
1.5 Iluminao Global Dinmica em Tempo Real
A iluminao global uma parte crucial para o realismo do cenrio, pois calcula como a
luz ir se comportar, de acordo com os objetos que foram adicionados, alterados ou
removidos do ambiente. Os objetos responsveis por fazer este clculo de luz so
conhecidos como EnvironmentProbes. A Figura 5 ilustra o resultado da funcionalidade
aplicada no cenrio Level 02 do jogo.
FIGURA 5 Iluminao Global Dinmica em Tempo Real
A figura acima exibe a funcionalidade antes e depois de ser aplicada. Para calcular o
local de incidncia da luz, o objeto EnvironmentProbe deve cobrir toda a rea que se
deseja aplicar a luz. Como o objeto uma esfera, deve se levar em conta at objetos que
No jogo Cryshooter esta funcionalidade foi aplicada no cenrio 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 os
elementos no cenrio agora recebem a quantidade de luz apropriada, assim como a
intensidade de sombra projetada por outros objetos corrigida.
FIGURA 5.C Visualizao e Edio de um objeto EnvironmentProbe
O alto realismo gerado no cenrio atravs desta funcionalidade torna o seu uso
indispensvel, podendo ser classificado como sua melhor caracterstica. Todavia, por
causar um grande impacto na luz, alguma reconfigurao de luminosidade no cenrio
poder ser necessria aps utiliz-la, para se conservar o equilbrio e a proporo de luz
adequada.
Bom pessoal, estas foram as cinco funcionalidades (somadas as trs do post anterior) do
recurso Grficos em Tempo-Real. O prximo recurso que ser apresentado no est
dividido, pois foram exploradas apenas duas funcionalidades dele.
Confiram agora as funcionalidades do recurso Personagens Realistas:
2.1 Sistema de Animao de Personagens
Esta funcionalidade permite que tanto a animao como a criao do personagem seja
manipulada. No jogo Cryshooter existem quatro personagens diferentes. O primeiro
deles o agent, identificado como o prprio jogador. O segundo o neutral_male, um
inimigo localizado no Level 01. O terceiro personagem o allied, um aliado localizado
no Level 01. O quarto o humanoid, outro inimigo, porm localizado no Level 02. A
Figura 1 ilustra os trs ltimos personagens citados anteriormente.
FIGURA 1 Sistema de Animao de Personagens
A figura acima exibe uma pedra de gelo muito prxima. Pode-se observar na figura que
a luz atravessou o objeto, pois possvel enxergar atravs dele, ou seja, podemos ver
todos os elementos do ambiente que se encontram atrs da pedra de gelo.
FIGURA 2.A e 2.B Criao e edio de um objeto translcido
nodo Seconds (do tipo contador) comea a contagem dos segundos. Toda vez que os
segundos so alterados, quatro outros nodos so 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 so 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 so menores que 10. Por fim, o nodo que verifica se os segundos
atingiram sessenta ativa o nodo Minutes (do tipo contador) para comear a contagem
dos minutos e tambm 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 iro 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
boto direito do mouse sobre o objeto e selecionar a opo Create Flow Graph.
FIGURA 1.A Criao de um Fluxograma
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 srie.
Assim sendo, no necessrio 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 alterao
realizada (e tambm da quantidade de uma s vez), h o risco dos eventos no sistema
no 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 execuo, incluindo qualquer
tipo de alterao realizada nos fluxogramas.
Sistema altamente intuitivo, mecanismo de busca por nodos e abstrao de codificao
em uma linguagem especfica so as caractersticas mais interessantes desta
funcionalidade, pois possuindo apenas a lgica de programao e conhecendo seus
elementos bsicos, qualquer desenvolvedor pode criar grandes sistemas de lgica
atravs da programao em alto nvel oferecida pela ligao de nodos desta
funcionalidade.
3.2 Sistema de Tempo do Dia
Esta funcionalidade da CryENGINE permite que toda a atmosfera do jogo seja
configurvel, desde a posio do sol at mesmo seu efeito no ambiente, como sua
intensidade, cor refletida no solo, cor do cu, neblina etc. A Figura 2 ilustra o resultado
da funcionalidade aplicada no cenrio principal do jogo.
FIGURA 2 Sistema de Tempo do Dia
Fcil utilizao o ponto forte desta funcionalidade, uma vez que qualquer projeto j
inicia com esta funcionalidade ativada, incluindo a existncia 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 captulo da srie CryENGINE. No prximo
episdio, seguiremos para o penltimo recurso da ferramenta, conhecido como
Velocidade Mxima em Alcance de Viso!
4.1 Ambientes Interativos e Destrutveis
Objetos destrutveis esto presentes no decorrer do jogo Cryshooter. Alguns objetos
podem se destruir em dois estgios, como por exemplo, o veculo, que primeiro pega
fogo e depois explode. A Figura 1 ilustra o resultado da funcionalidade aplicada no
cenrio principal do jogo.
FIGURA 1 Ambientes Interativos e Destrutveis
A figura acima exibe outro tipo de destruio de objetos. Nela, a vegetao foi
destruda, mais especificamente algumas rvores. Pode-se observar que este tipo de
objeto no se destri em estgios, mas sim em partes. Toda vez que o jogador acerta
uma 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 uma
quantidade de tiros em um determinado ponto, esta parte se dividir em mais duas,
tornando agora o objeto original que era uma rvore nica em trs partes distintas.
A simplicidade de uso o ponto positivo desta funcionalidade, uma vez que os objetos
destrutveis tem toda sua lgica de destruio implementada pela CryENGINE.
4.2 Ferramentas de Anlise de Desempenho
Como ferramenta de anlise de desempenho, a CryENGINE fornece a gerao de
arquivos XML com dados estatsticos extremamente detalhados sobre o jogo, para que o
desenvolvedor possa visualizar em um nico local diversas informaes teis sobre o
seu projeto. Esses arquivos XML seguem um padro de formatao, e podem ser lidos
Filename
Mesh Texture
Refs Size Size
(KB) (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
29
127
Gerar esses relatrios extremamente simples, bastando apenas acessar o item de menu
Save Level Statistics, dentro do menu Tools. Somado a isso, o alto nvel de
organizao dos dados contidos nesses relatrios o que torna essa funcionalidade
essencial para qualquer jogo que necessite ter um desempenho otimizado.
4.3 Renderizao Offline
A Renderizao Offline contempla um elemento muito notvel para os jogos: as cutscenes (cenas pr-renderizadas). Atravs do mdulo Track View da CryENGINE
possvel criar quantas cut-scenes forem necessrias para o jogo. A Figura 3 ilustra as
informaes contidas dentro de uma das cenas do jogo Cryshooter.
FIGURA 3 Renderizao Offline
A figura acima resume toda a lgica de execuo da cena inicial do jogo, que inicia
assim que o jogo carregado. Na engine, essas cenas so identificadas como
sequncias, portanto, a cena inicial do jogo a sequncia Intro. Para cada sequncia,
deve ser criada uma cmera, que ir filmar a cena em si. A trajetria da cmera
baseada em uma linha de tempo (em segundos), cuja durao configurada nas
propriedades da sequncia. Para fazer a cmera se movimentar, deve-se gravar em
determinadas posies da linha do tempo a posio e a rotao da cmera, de modo que
a engine ir, no decorrer do tempo, gradualmente posicionar a cmera de uma posio
para outra. Estas posies so obtidas dinamicamente pela Viewport (tela de edio do
ambiente do jogo) da engine, atravs das coordenadas X, Y e Z atuais do objeto cmera.
FIGURA 3.A Propriedades da sequncia Intro
No jogo Cryshooter, alm das posies inicial e final da cmera, ainda h a posio
intermediria, que ocorre no segundo nmero trinta. Foram adicionados tambm efeitos
de transio de imagem, atravs do ScreenFader. Quando o tempo est passando sobre
o trecho In, a tela est escura e vai clareando gradualmente, quando passa pelo trecho
Out, a tela est clara e vai escurecendo, tambm gradualmente, ambas configuradas para
durao de quatro segundos.
FIGURA 3.B Criao de um objeto do tipo Camera
Uma tima prtica para agilizar o processo de criao das cut-scenes visualizar em
tempo real o que est sendo exibido na cmera vinculada a cut-scene. A cmera padro
da CryENGINE sempre exibe a viso de perspectiva do jogo. Uma maneira de alterar a
cmera a ser utilizada selecionar o seu objeto correspondente no jogo, ir at o item de
menu Switch Camera (dentro do menu Display) e selecionar o item Selected Camera
Object. Para voltar a utilizar a cmera de perspectiva, basta seguir o mesmo caminho de
menus, apenas trocando a seleo final pelo item Default Camera.
FIGURA 3.C Viewport do jogo visualizada pelo objeto CameraIntro
A msica interativa uma parte em destaque no jogo Cryshooter, uma vez que todo o
jogo possui msica de fundo. Esta funcionalidade permite que, de uma forma clara e
intuitiva, sejam manipuladas as diferentes msicas que iro tocar no decorrer do jogo,
ativadas por determinados eventos e seguindo uma programao lgica. A Figura 1
ilustra a utilizao da funcionalidade aplicada dentro de um fluxograma.
FIGURA 1 Sons Dinmicos e Msica Interativa
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 questo. A linha em azul exibida na figura 2 representa o resultado visual
desta ligao.
FIGURA 2.C e 2.D Criao e edio de um objeto do tipo Shape
Atravs da figura 2, pode-se observar que foi utilizado um objeto Shape (sem limites de
altura), identificado pelas linhas na cor rosa. Quando o jogador entrar no objeto,
gradualmente comear a escutar o som da cachoeira, e quando se afastar, gradualmente
notar o som ficando mais baixo, at sumir.
5.3 Modos de Som
Os modos de som adicionam ao jogo Cryshooter, de uma maneira simplificada e
altamente eficiente, equalizaes especficas para um determinado local do jogo. Essas
equalizaes no so msicas nem sons especficos, apenas tratam-se de ajustes feitos
no udio nativo do jogo, como barulho dos passos do jogador, por exemplo. A Figura 3
ilustra o resultado da funcionalidade aplicada no cenrio principal do jogo.
FIGURA 3 Modos de Som
A figura acima exibe a funcionalidade aplicada sobre uma vegetao especfica. Seu
funcionamento muito similar ao da funcionalidade udio Ambiental, a nica
diferena que ao invs 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 responsvel por armazenar a
configurao dos equalizadores do jogo.
FIGURA 3.A e 3.B Criao e edio de um objeto do tipo SoundMoodVolume