Você está na página 1de 72

UNIVERSIDADE DO CONTESTADO UNC

CURSO DE CINCIA DA COMPUTAO

EDIRLEI EVERSON SOARES DE LIMA

3D GAME BUILDER: UMA GAME ENGINE PARA A CRIAO DE JOGOS 3D

PORTO UNIO
2008

EDIRLEI EVERSON SOARES DE LIMA

3D GAME BUILDER: UMA GAME ENGINE PARA A CRIAO DE JOGOS 3D

Trabalho de concluso de curso apresentado como


exigncia para obteno do titulo de bacharel em Cincia
da Computao pela Universidade do Contestado - UnC
Ncleo de Porto Unio, sob orientao do professor Ms.
Pedro Luiz de Paula Filho.

PORTO UNIO
2008

3D GAME BUILDER: UMA GAME ENGINE PARA A CRIAO DE JOGOS 3D

EDIRLEI EVERSON SOARES DE LIMA

Este trabalho de concluso de curso foi submetido ao processo de avaliao pela


Banca examinadora para obteno do Titulo (Grau) de:

Bacharel em Cincia da Computao

E aprovada na sua verso final em _________________ (data), atendendo s


normas da legislao vigente da Universidade do Contestado e Coordenao do
Curso de Cincia da Computao.

__________________________________
Nome do coordenador do curso

BANCA EXAMINADORA:
___________________________
Nome do presidente
___________________________
Membro
___________________________
Membro
___________________________
Membro Suplente (se houver)

Resumo
Os jogos eletrnicos movimentam o bilionrio mundo das produtoras e tem causado
uma revoluo nas formas de entretenimento, superando at mesmo o mercado
cinematogrfico. Porm o desenvolvimento de um jogo no uma tarefa simples e
pode demorar anos, envolver centenas de pessoas e custar milhes de dlares.
Para facilitar e agilizar este processo existem softwares especficos para criao de
jogos, eles so conhecidos como game engines. A game engine o ncleo bsico
para a criao de um jogo e tem o objetivo de simplificar o processo de codificao
alm de fornecer uma srie de funcionalidades agregadas, utilizada tanto por
desenvolvedores iniciantes como por profissionais da rea. O objetivo do presente
trabalho desenvolver uma game engine que permita a criao rpida e fcil de
jogos e aplicativos tridimensionais. A metodologia aplicada no desenvolvimento
deste trabalho foi a diviso da game engine em diversas sub-engines, como por
exemplo, a engine grfica, engine fsica, script engine, entre outras.
Palavras-Chave: Jogos, Game Engine, Computao Grfica, OpenGL.

Abstract
The electronic games move the billionaire world of game production companies, and
have caused a revolution on the entertainment forms, surpassing even the movie
industry. However the game developing is not a so simple task, it could take years,
involve hundreds of people and cost millions of dollars. There are specific softwares
that turn easier and speed up the creation process; these softwares are known as
game engines. The game engine is the basic centre of the game development, and it
has the objective of simplify the encoding process and besides it add a series of
functionalities. A game engine is used by both beginners and professional game
developers. The objective of this work is to develop a game engine that allows a fast
and easy creation of games and tridimensional applications. The applied
methodology on the development of this work was the division of the game engine in
many sub-engines, for example, the graphic engine, the physical engine, script
engine, and other sub-engines.
Word-Key: Games, Game Engine, Computer Graphics, OpenGL

LISTA DE ILUSTRAES

Figura 1 - Comparao entre objetos 2D e 3D .............................................................. 12


Figura 2 - Mdulos de uma Game Engine ...................................................................... 19
Figura 3 - Componentes de uma Game Engine ............................................................ 20
Figura 4 - Principais Sub-Engines Utilizadas ................................................................. 21
Figura 5 - Camadas de uma aplicativo DirectX.............................................................. 24
Figura 6 - Arquitetura Peer-to-Peer ................................................................................. 29
Figura 7 - Arquitetura clientserver ................................................................................. 30
Figura 8 - Translao ........................................................................................................ 31
Figura 9 - Rotao ............................................................................................................ 31
Figura 10 - Escalonamento .............................................................................................. 31
Figura 11 - Directional Light ............................................................................................. 32
Figura 12 - Point Light ...................................................................................................... 32
Figura 13 - Spot Light ....................................................................................................... 32
Figura 14 - Modelo Hierrquico 1 .................................................................................... 33
Figura 15 - Modelo Hierrquico 2 .................................................................................... 33
Figura 16 - Modelo Hierrquico 3 .................................................................................... 33
Figura 17 - Imagem 2D em tons de Cinza ...................................................................... 34
Figura 18 - Heightmap 3D ................................................................................................ 34
Figura 19 - Sombra projetada .......................................................................................... 34
Figura 20 - Simulao de fogo ......................................................................................... 36
Figura 21 - Simulao de neve ........................................................................................ 36
Figura 22 - Animao explcita. ....................................................................................... 37
Figura 23 - Animao implcita. ....................................................................................... 38
Figura 24 - Ambiente de desenvolvimento do 3D Game Studio. ................................. 40
Figura 25 - Jogo desenvolvido com o 3D Game Studio................................................ 40
Figura 26 - Ambiente de desenvolvimento do Unity3D. ................................................ 42
Figura 27 - Jogo desenvolvido com o Unity3D. ............................................................. 42
Figura 28 - Ambiente de desenvolvimento do C4 Engine............................................. 43
Figura 29 - Ambiente desenvolvido com o C4 Engine. ................................................. 43
Figura 30 - Ambiente desenvolvido com a engine Irrlicht. ............................................ 44
Figura 31 - Ambiente desenvolvido com a engine Irrlicht. ............................................ 44
Figura 32 - Ambiente desenvolvido com a Unreal Engine. ........................................... 45
Figura 33 - Ambiente desenvolvido com a Unreal Engine. ........................................... 45
Figura 34 - Arquitetura do 3D Game Builder .................................................................. 48
Figura 35 - Arquitetura de um jogo criado no 3D Game Builder .................................. 53
Figura 36 - Cena do jogo da Guerra do Contestado ..................................................... 55
Figura 37 - Edio de um cenrio da Guerra do Contestado ....................................... 55
Figura 38 - Dilogo entre personagens da Guerra do Contestado .............................. 55
Figura 39 - Cena de uma animao do jogo da Guerra do Contestado...................... 55
Figura 40 - Cena do jogo Coelhinho Saltitante .............................................................. 56
Figura 41 - Edio de um dos cenrios do Coelhinho Saltitante ................................. 56
Figura 42 - Cenrio de um nvel avanado do Coelhinho Saltitante............................ 56
Figura 43 - Cenrio de um nvel avanado do Coelhinho Saltitante............................ 56
Figura 44 - Simulao do laboratrio 1 da UnC ............................................................. 57
Figura 45 - Edio de um dos ambientes da UnC ......................................................... 57
Figura 46 - Simulao dos corredores da UnC .............................................................. 57
Figura 47 - Simulao da fachada da UnC .................................................................... 57

Figura 48 - Jogo com movimentao atravs de reconhecimento de movimentos ... 58


Figura 49 - Interao com o jogo atravs de movimentos corporais. .......................... 58
Figura 50 - Simulao virtual da maquete ...................................................................... 59
Figura 51 - Edio da maquete virtual. ........................................................................... 59
Figura 52 - Simulao virtual da maquete ...................................................................... 60
Figura 53 - Edio da maquete virtual. ........................................................................... 60
Grfico 1 - Mercado Mundial de Jogos por Segmento .................................................. 13
Grfico 2 - Distribuio Geogrfica dos Desenvolvedores de jogos no Brasil............ 14
Grfico 3 - Diviso das plataformas de desenvolvimento de jogos no Brasil ............. 15

SUMRIO
1 INTRODUO ......................................................................................................... 8
2 JOGOS ELETRNICOS ........................................................................................ 10
2.2 TIPOS DE MDIA .................................................................................................... 10
2.3 TIPOS DE JOGOS.................................................................................................. 11
2.4 O MERCADO DE JOGOS MUNDIAL ................................................................... 12
2.5 O MERCADO DE JOGOS NO BRASIL ................................................................ 13
2.6 CONCLUSO .......................................................................................................... 16
3 GAME ENGINE ...................................................................................................... 17
3.1 ARQUITETURA DE UMA GAME ENGINE .......................................................... 17
3.2 SUB-ENGINES........................................................................................................ 20
3.2.1 Engine Grfica.................................................................................................. 21
3.2.1.1 OpenGL ..................................................................................................... 21
3.2.1.2 DirectX ....................................................................................................... 23
3.2.1.3 Outras engines grficas ........................................................................... 25
3.2.2 Engine Fsica.................................................................................................... 25
3.2.3 Script Engine .................................................................................................... 26
3.2.4 udio Engine .................................................................................................... 27
3.2.5 IA Engine .......................................................................................................... 28
3.2.6 Network Engine ................................................................................................ 29
3.3 TCNICAS E ALGORITMOS ................................................................................ 31
3.3.1 Transformaes Geomtricas ........................................................................ 31
3.3.2 Fontes Emissoras de Luz................................................................................ 32
3.3.3 Modelos Hierrquicos ...................................................................................... 32
3.3.4 Heightmap ........................................................................................................ 33
3.3.5 Projected Shadows .......................................................................................... 34
3.3.6 Clipping e Culling ............................................................................................. 34
3.3.6 Sistema a de Partculas .................................................................................. 35
3.3.7 Shaders ............................................................................................................. 36
3.3.8 Animao .......................................................................................................... 37
3.4 GAME ENGINES .................................................................................................... 39
3.4.1 3D Game Studio............................................................................................... 39
3.4.2 Unity3D ............................................................................................................. 41
3.4.3 C4 Engine ......................................................................................................... 42
3.4.4 Irrlicht................................................................................................................. 43
3.4.5 Unreal Engine................................................................................................... 44
3.5 CONCLUSO .......................................................................................................... 45
4 DESENVOLVIMENTO ........................................................................................... 46
4.1 PRINCIPAIS REQUISITOS ................................................................................... 46
4.2 PRINCIPAIS SUB-ENGINES E BIBLIOTECAS UTILIZADAS ........................... 47
4.3 ARQUITETURA DO 3D GAME BUILDER............................................................ 48
4.4 APLICAES ......................................................................................................... 54
1.4.1 Guerra do Contestado ..................................................................................... 54
1.4.2 Coelhinho Saltitante......................................................................................... 55
1.4.3 UnC Virtual ....................................................................................................... 56
1.4.4 Interao com ambientes 3D atravs de movimentos corporais ................ 58
1.4.5 Interao com uma maquete atravs de um ambiente 3D.......................... 59
5 CONCLUSO ........................................................................................................ 61
5.1 TRABALHOS FUTUROS ....................................................................................... 62

1 INTRODUO

Nos ltimos anos o mercado de jogos eletrnicos vem se expandindo


notoriamente, com isso o desenvolvimento desta forma de entretenimento tambm
tem se tornando cada vez mais popular, seja pelo fato de ser um negcio lucrativo
ou pelo simples fato de inmeros jovens sonharem em criar os seus prprios jogos
por diverso.
Porm a criao de um jogo no uma tarefa simples, pois envolve diversas
reas da computao, como inteligncia artificial, computao grfica, banco de
dados, redes de computadores, entre outras. Para facilitar este desenvolvimento
existem softwares conhecidos como game engines, o seu principal objetivo dar ao
usurio uma maior abstrao da programao envolvida no processo de criao de
jogos.
As game engines so to importantes que esto em praticamente todos os
jogos eletrnicos da atualidade, seja em jogos de computador, vdeo games ou
jogos para celular.
Atualmente existem no mercado inmeras game engines, algumas delas
gratuitas, j outras podem custar mais de 700 mil dlares. Muitas das empresas
desenvolvedoras de jogos possuem as suas prprias engines, j outras utilizam
produtos adquiridos de empresas especializas na criao deste tipo de software.
O objetivo deste trabalho desenvolver uma game engine completa, onde
todos os mdulos necessrios para o desenvolvimento de jogos estejam reunidos
em uma nica ferramenta, e que est possibilite a criao de jogos 3D de maneira
rpida e simplificada.
O capitulo 2 apresenta uma introduo sobre jogos eletrnicos e tambm a
analise e comparao do mercado mundial de jogos com o mercado de jogos no
Brasil.
No capitulo 3 so abordados os conceitos de game engine e sub-engines,
bem como o seu detalhamento na estruturao de uma ferramenta completa.
Tambm so abordadas algumas tcnicas utilizadas no desenvolvimento deste tipo
de software e as principais game engines existentes atualmente.
No capitulo 4 apresentada a game engine proposta neste trabalho,
descrevendo sua arquitetura, requisitos e principais bibliotecas e sub-engines

utilizadas. Tambm so apresentadas algumas aplicaes desenvolvidas com este


trabalho para demonstrar as suas capacidades.
O capitulo 5 apresenta as concluses deste trabalho bem como algumas
sugestes de trabalhos futuros.

10

2 JOGOS ELETRNICOS

Segundo PESSOA (2001) apud Battaiola Um jogo de computador pode ser


definido como um sistema composto de trs partes bsicas: enredo, motor e
interface interativa. O sucesso de um jogo esta associado combinao perfeita
destes componentes.. O enredo trata dos temas, tramas e objetivos. A interface
interativa o meio de comunicao entre o jogador e o jogo, e tambm o meio pelo
qual o jogo mostra o seu estado atual. O motor ou engine o ponto central, ele
que controla o jogo internamente, sendo responsvel pela renderizao, controle de
eventos, execuo de aes, entre outras funes.
Os jogos digitais vm apresentando cada vez um maior grau de evoluo
tecnolgica, empresas das reas de computao e entretenimento esto investindo
no desenvolvimento de tcnicas computacionais sofisticadas que podem ser
empregadas em mltiplos programas interativos, principalmente naqueles que
envolvam interfaces grficas complexas, o que significa o uso conjunto de vrias
mdias, incluindo animaes com grficos 2D e 3D, vdeos, som 3D, etc., bem como
ambientes multiusurio baseados em Internet (SOFTEX, 2005).

2.2 TIPOS DE MDIA

Segundo SOFTEX (2005), existem atualmente 5 tipos de mdias para quais os


jogos eletrnicos so direcionados, estas mdias so:

Console - Equipamento digital dotado de um conector para o aparelho de TV


e um encaixe para algum tipo de unidade de armazenamento contendo
programas e/ou dados de um determinado jogo. Os consoles mais avanados
disponveis atualmente so o PlayStation 3, da Sony; o Xbox360, da Microsoft
e o Nintendo Wii, da Nintendo.

PC - Tipo de jogo destinado a usurios de computador. Podendo ser usado


localmente ou pela Internet.

Celular - Jogos para telefones celulares.

11

Consoles Portteis - Estas plataformas possuem telas de maior tamanho e


melhor qualidade que celulares, possibilitando o acesso a jogos de melhor
resoluo grfica. Atualmente os principais consoles portteis so o Game
Boy, da Nintendo e o PlayStation porttil (PSP), da Sony.

TV Digital - Jogos que podem ser rodados em aparelhos de TV digital como


forma de contedo interativo.
Outra possibilidade que o jogo seja destinado a mais de uma plataforma.

Assim, pode atingir diferentes nichos tecnolgicos, tais como computadores


pessoais, celulares, portteis, Internet, videogames ou qualquer outro dispositivo.

2.3 TIPOS DE JOGOS

Existem diversos tipos jogos, sendo que muitos deles constituem-se de


junes de dois ou mais gneros, alm disto, tambm comum que um jogo seja
constitudo de mais de um gnero.
Existem diversas classificaes para os gneros de jogos, a mais completa
apresentada por BAKIE (2005) que divide os gneros em: aventura, ao,
plataforma, luta, tiro em primeira pessoa (FPS), estratgia em tempo real (RTS),
estratgia por turnos, role playing game (RPG), massive multiplayer on-line role
playing game (MMORPG), horror, simulao, corrida, esporte, rtmico, puzzle, minigame, tradicional, educacional, e advergames. No anexo A apresentado uma
tabela detalhando os gneros propostos por BAKIE (2005).
Alm da classificao por gnero os jogos tambm podem ser divididos em
dois grupos baseados na sua forma grfica de renderizao, podendo ser 2D (duas
dimenses) ou 3D (trs dimenses). O termo trs dimenses refere-se a objetos que
podem ser descritos ou exibidos usando-se medidas de altura, largura e
profundidade. J objetos com duas dimenses possui apenas altura e largura, um
exemplo de objeto 2D uma folha em uma mesa em que nela no h nenhuma
percepo de profundidade. A figura 1 mostra um comparao entre um objeto 2D e
um objeto 3D (WRIGHT; LIPCHAK; HAEMEL, 2007).

12

Figura 1 - Comparao entre objetos 2D e 3D


Fonte: (WRIGHT; LIPCHAK; HAEMEL, 2007).

2.4 O MERCADO DE JOGOS MUNDIAL

Segundo ASSIS (2003), o mercado mundial de jogos eletrnicos movimentou


cerca de US$ 22,3 bilhes em 2003, com a comercializao de jogos, se forem
includos tambm os gastos com hardware e acessrios este valor chega a US$
55,5 bilhes, superando at mesmo a indstria cinematogrfica que no mesmo ano
obteve um lucro de US$ 19 bilhes.
A indstria de jogos eletrnicos uma das que mais se expande no mundo,
tendo crescido 12,5% em 2002 e 6,2% em 2003. A previso era de que chega-se a
uma taxa anual de crescimento de 20,1% no perodo 2004-2008 e atingi-se a marca
de US$ 55,6 bilhes em 2008 (SOFTEX, 2005). No existe nenhuma pesquisa
recente que comprove se est meta foi atingida ou no, ou se at mesmo foi
superada.
Segundo SOFTEX (2005), a receita no mercado de jogos est segmentado
basicamente entre quatro categorias, jogos para consoles (73% do gasto mundial
(US$ 16,2 bilhes)), PCs (17%), dispositivos wireless (3%) e jogos online (7%). O
grfico 1 mostra esta diviso.

13

Grfico 1 - Mercado Mundial de Jogos por Segmento


Fonte: SOFTEX (2005)

Nota-se que o mercado est concentrado principalmente em jogos que


utilizam consoles como plataforma, SOFTEX (2005) aponta que a grande diferena
do segmento para console em relao plataforma PC est na maior capacidade
grfica dos consoles, alm de que os PCs so mais vulnerveis pirataria, fato que
desestimula os desenvolvedores.
O mercado complementado por dois segmentos emergentes com altas
taxas de crescimento: os games online e os dispositivos sem fio ou wireless
(celulares e consoles portteis). Embora estes segmentos representem somente
10% do mercado (US$ 2,2 bilhes), a previso era que em 2008 atingisse US$ 36,5
bilhes (66% do mercado esperado), superando a fatia dos jogos para console. Em
2003, a indstria de games online cresceu 69,5% e a de wireless 106,7% (SOFTEX,
2005).

2.5 O MERCADO DE JOGOS NO BRASIL

No Brasil esta rea de entretenimento digital ainda pouco explorada, mas j


existem algumas iniciativas neste segmento, como mostra a pesquisa realizada em
2005 pela Abragames (Associao Brasileira das Desenvolvedoras de Jogos
Eletrnicos), segundo ela, h no Brasil o registro de 55 empresas desenvolvedoras
de jogos em atividade, 33% delas no Paran, 30% em So Paulo e 12% no Rio de
Janeiro. De acordo com Marcelo Carvalho, na poca presidente da Abragames e

14

scio-diretor da Devworks Game Technology, a concentrao de empresas no


Paran deve-se a criao da Gamenet-PR, rede de empresas local e ao
investimento do governo do Estado. Segundo a pesquisa, o faturamento do mercado
de jogos no Brasil fica em torno de 18 milhes de reais somente para as
desenvolvedoras, se incluirmos tambm outras reas relacionadas este valor chega
100 milhes. Um dos fatores que impedem o crescimento deste mercado no Brasil
so os altos graus de pirataria, que chega a 94%, prejuzo calculado em 210 milhes
de dlares (ABRAGAMES, 2005). O grfico 2 representa a distribuio geogrfica
das empresas desenvolvedoras de jogos situadas no Brasil.

Grfico 2 - Distribuio Geogrfica dos Desenvolvedores de jogos no Brasil


Fonte: ABRAGAMES (2005)

Segundo KISHIMOTO (2006) apud Larame, A indstria de jogos possui um


forte mercado em constante crescimento, rendendo bilhes de dlares por ano e
com novas empresas surgindo pelo mundo todo. O Brasil est dentro desse
contexto, sendo considerado um pas com uma indstria emergente, embora j seja
reconhecido internacionalmente pelas pesquisas tecnolgicas que tem realizado ao
longo dos anos.
No

Brasil

as

desenvolvedoras

ficam

focadas

principalmente

no

desenvolvimento para a plataforma PC, diferente do mercado mundial onde os


consoles so as plataformas dominantes. Segundo ABRAGAMES (2005), as

15

desenvolvedoras brasileiras focam no mercado de PC (63%), em segundo lugar,


vem o de celulares (22%). Esta diviso devido dificuldade em se obter as
licenas dos kits de desenvolvimento para os grandes consoles, o que visivelmente
impede uma penetrao das desenvolvedoras brasileiras nesse nicho de mercado.
O grfico 3 mostra a diviso das plataformas de desenvolvimento utilizadas no
Brasil.

Grfico 3 - Diviso das plataformas de desenvolvimento de jogos no Brasil


Fonte: ABRAGAMES (2005).

Segundo ABRAGAMES (2008), a indstria brasileira hoje responsvel por


0,16% do faturamento mundial com jogos eletrnicos. Na indstria de software (e
no apenas de jogos), o que desenvolvido no Brasil representa aproximadamente
1,8% da produo mundial, entretanto, principalmente focado no mercado interno.
Comparado com o mercado mundial os lucros no Brasil nesta rea ainda so
pequenos, mas existem sinais que demonstram que o pas ainda pode evoluir muito
neste segmento, um deles a existncia de vrios portais brasileiros na internet
voltados

especialmente

para

esta

rea,

como

caso

da

Unidev

(www.unidev.com.br), que atualmente conta com 47281 usurios cadastrados,


muitos destes, tendo como principal hobbie a criao de jogos ou alguma outra rea
relacionada (UNIDEV, 2008).

16

2.6 CONCLUSO

O desenvolvimento de jogos um dos segmentos mais promissores do


mercado internacional de software e o Brasil tambm est entrando para este
segmento. Porm, criar jogos no uma tarefa simples, pois envolve vrias reas
da computao, como banco de dados, redes, computao grfica, estrutura de
dados, inteligncia artificial (IA), entre outras. Mas existem softwares que tem como
objetivo facilitar este desenvolvimento, estas ferramentas so chamadas de Game
Engines o seu principal objetivo dar ao usurio uma maior abstrao da
programao envolvida no processo de desenvolvimento de um jogo.

17

3 GAME ENGINE

O termo Game Engine surgiu durante a dcada de 90, juntamente com os


primeiros jogos 3D (Doom, Quake) e a necessidade de se criar jogos mais
complexos, alm disto, surgiram equipes de desenvolvimento, e para manter um
certo padro de programao entre os desenvolvedores, foram criadas as primeiras
Engines (WIKIPEDIA, 2008). Atualmente existem no mercado inmeras engines,
algumas delas grtis, j outras podem chegar a custar mais de U$ 700.000.
Segundo MIGUEL, MONTEIRO e CAVALHIERI (2006) uma game engine o
ncleo bsico para a criao de um jogo e tem o objetivo de simplificar o processo
de codificao, alm de fornecer uma srie de funcionalidades agregadas.
Desde seu surgimento as game engines se tornaram muito populares e
usadas por programadores de jogos no mundo inteiro, porm muitos destes nem
sempre entendem completamente o que uma game engine. Uma maneira
simplificada de entender pensar nela como o motor de um carro, quando o
motorista coloca e gira a chave na ignio, o motor ligado e quando o motorista
pisa no acelerador o carro comea a se mover. Internamente o motor do carro gera
energia cintica e transfere esta energia para o eixo das rodas e faz o carro
movimentar-se, o motorista no necessita saber exatamente o que est
acontecendo dentro do motor, para ele o importante que o carro est andando. O
mesmo conceito aplicado em uma Game Engine, quando o programador executa a
funo Rotacionar_Objeto() internamente a Game Engine ir fazer todos os clculos
necessrios e executar a rotao, e assim como o motorista do carro o programador
no necessariamente precisa saber como o objeto rotacionado internamente, tudo
o que ele precisa saber chamar a funo Rotacionar_Objeto (ZERBST; DVEL,
2004).

3.1 ARQUITETURA DE UMA GAME ENGINE

A arquitetura de uma game engine corresponde exatamente definio dos


seus mdulos e a maneira como realizada a interao entre eles. Tais mdulos

18

so responsveis por identificar e gerenciar todos os eventos que ocorrem ao longo


do jogo, desde eventos gerados pelo usurio at aqueles causados por interao
entre os objetos do jogo. Por isso, existem normalmente mdulos para manipulao
de objetos, renderizao, sonorizao, IA, rede e outros (PESSOA; RAMALHO;
BATTAIOLA, 2002).
Segundo BATTAIOLA (2001) a arquitetura de uma game engine composta
pelos seguintes componentes:

Gerenciador de Entrada: Mdulo responsvel por identificar eventos em


dispositivos de entrada, por exemplo, o teclado, e encaminhar o ocorrido para
o mdulo principal que ir processar o dado e realizar a ao correspondente;

Gerenciador Grfico: Realizar todo o processamento necessrio para


transformar a cena criada pelos objetos do jogo em dados que sejam
suportados pelas rotinas do sistema para desenho na tela;

Gerenciador de Som: Responsvel pela execuo e processamento de todo


o udio do jogo;

Gerenciador de Inteligncia Artificial: Gerencia o comportamento de


objetos controlados pelo computador. Para isso, realiza certas aes de
acordo com o estado atual do jogo e algumas regras.

Gerenciador de Mltiplos Jogadores: Permitir que jogadores do mesmo


jogo se comuniquem entre si, gerencia a conexo e a troca de informaes
entre os diversos computadores que esto conectados via Internet ou
Intranet;

Gerenciador de Objetos: Mdulo responsvel por gerenciar os grupos de


objetos do jogo, carregando os mesmos e controlando o seu ciclo de vida;

Objeto do Jogo: Representa uma entidade que faz parte do jogo e as


informaes necessrias para que ela seja gerenciada, como por exemplo,
posio, ngulo e dimenso, alm disto, tambm responsvel pelo controle
de colises;

Gerenciador do Mundo: Responsvel por armazenar o estado atual do jogo,


conta com os diversos gerenciadores de objetos para realizar tal tarefa;

Editor de Cenrios: Ferramenta para a criao de mundos que


posteriormente sero carregados pelo gerenciador de mundos;

19

Gerenciador Principal: Parte principal do jogo, servindo como ligao para a


troca de informaes entre os outros mdulos do jogo.
A figura 2 mostra, segundo BATTAIOLA (2001), como os mdulos de uma

game engine esto interligados.

Figura 2 - Mdulos de uma Game Engine


Fonte: (Battaiola, et al. ,2001, adaptado)

Segundo PESSOA (2001), uma game engine completa deve atender aos
seguintes requisitos:

Arquitetura modular, para que possa ser utilizada em cada novo jogo;

Bom nvel de abstrao, ao prover objetos com funcionalidades j


implementadas;

Definio de objetos bsicos, como objetos do jogo e o mapa (cenrio) do


jogo.

Deteco e gerenciamento de eventos gerados por teclado, mouse, joysticks,


etc;

Algoritmos para desenho dos objetos do jogo, podendo ser 2D e 3D;

Funcionalidades teis a jogos 3D, como iluminao e transformaes


geomtricas;

20

Execuo dos sons do jogo em resposta a eventos ocorridos;

Implementao de algoritmos de IA para os objetos inteligentes dos jogos;

Implementao de algoritmos para troca remota de dados, gerenciamento de


sesses, sincronizao das informaes compartilhadas do jogo, etc;

Implementao de algoritmos para modelagem fsica de objetos.

3.2 SUB-ENGINES

Uma Game Engine pode ser dividida em diversas sub-engines, como por
exemplo, engine grfica, engine fsica, engine sonora, engine de inteligncia
artificial, etc. (MIGUEL; MONTEIRO; CAVALHIERI, 2006). A figura 3 ilustra os
diversos componentes que formam uma game engine e a figura 4 mostra as
possveis

sub-engines

que

poderiam ser

utilizadas

componentes.

Figura 3 - Componentes de uma Game Engine


Fonte: (MIGUEL; MONTEIRO; CAVALHIERI, 2006, adaptado)

para

estruturar

estes

21

Figura 4 - Principais Sub-Engines Utilizadas


Fonte: (MIGUEL; MONTEIRO; CAVALHIERI, 2006, adaptado)

3.2.1 Engine Grfica

A engine grfica um dos principais e mais importantes componentes de uma


game engine, pois atravs dela que todas as cenas e objeto sero renderizados e
uma das principais caractersticas de um jogo a sua qualidade grfica (MIGUEL;
MONTEIRO; CAVALHIERI, 2006).
O OpenGL e o DirectX so as principais engines grficas utilizadas. Estas
duas APIs (Application Program Interface) provem uma interface entre o aplicativo e
o hardware de processamento grfico. Elas usam conceitos diferentes para cumprir
as suas funes de APIs, o OpenGL utiliza o conceito de programao estruturada,
j o DirectX completamente orientado a objeto. (ZERBST; DVEL, 2004).

3.2.1.1 OpenGL

Segundo AZEVEDO e CONCI (2003), o OpenGL (Open Graphical Library)


pode ser definido como uma interface de software (API) para acelerao da

22

programao de dispositivos grficos, com aproximadamente 120 comandos para


especificaes de objetos e operaes necessrias para a produo de aplicaes
grficas interativas 3D. Pode-se classific-la como uma biblioteca de rotinas grficas
para modelagem 2D ou 3D, extremamente portvel e rpida possibilitando a criao
de grficos 3D com excelente qualidade visual e rapidez, uma vez que usa
algoritmos bem desenvolvidos e otimizados pela Silicon Graphics.
A biblioteca OpenGL vai alm do desenho de primitivas grficas, tais como
linhas e polgonos, dando suporte a iluminao, sombreamento, mapeamento de
texturas e transparncia. Alm disto, a biblioteca OpenGL executa transformaes
de translao, escala e rotao, atravs da multiplicao de matrizes com
transformaes cumulativas, ou seja umas sobre as outras (AZEVEDO; CONCI,
2003).
O OpenGL foi planejado para o uso direto com o hardware projetado e
aperfeioado para a exibio e manipulao de grficos 3D. Porm implementaes
baseadas em software tambm so possveis, como por exemplo, a biblioteca
Mesa3D (www.mesa3d.org), que permite o uso de aplicativos OpenGL em
computadores que no possuem placas aceleradoras grficas. A Apple tambm
desenvolveu uma destas implementaes que est disponvel para o OS X. As
implementaes baseadas em software podem no ser to rpidas e com menos
recursos avanados que s so possveis com o uso de placas de vdeo com
acelerao grfica, mas permite que OpenGL possa ser executado em uma grande
variedade de sistemas operacionais, mesmo que estes no possuam dispositivos de
acelerao grfica (WRIGHT; LIPCHAK; HAEMEL, 2007).
Segundo AZEVEDO e CONCI (2003), as principais caractersticas do
OpenGL so:

Acelerao de hardware: Acelerao do processamento geomtrico, luzes,


transformaes e render.

Efeitos 3D em tempo real: Real-time fog, anti-aliasing, volume shadows,


bump mapping, motion blur, transparncias, reflexes, texturas 3D, volume
rendering e outras.

Suporte a inovaes futuras de software e hardware: Um mecanismo de


extenso permite a configurao para novos hardwares e softwares.

23

Estabilidade: Estaes avanadas de supercomputadores vm utilizando


essas bibliotecas desde 1992.

Escalvel: Suas aplicaes API podem ser executadas de pequenos


aparelhos eletrnicos at supercomputadores com a utilizao mxima dos
recursos disponveis.

3.2.1.2 DirectX

O DirectX uma API para o sistema operacional Microsoft Windows que foi
desenvolvida para prover uma interface para o controle eficiente de hardware
multimdia e permitir aos programadores trabalharem com comandos e estruturas de
dados de alto nvel. Ele construdo sobre uma camada abstrata de hardware,
chamada de HAL (Hardware Abstraction Layer) que oculta s dependncias
especificas de determinados dispositivos, o que torna os programas desenvolvidos
independentes de dispositivo, ou seja, funcionaro em qualquer hardware, desde
que sobre a plataforma Windows (KOVACH, 2000).
Segundo JONES (2004), o DirectX formado por diversos componentes,
cada um representando um diferente aspecto do sistema, cada um destes pode ser
utilizado independentemente, permitindo ao desenvolvedor utilizar apenas os
necessrios para a sua aplicao, os componentes so os seguintes:

DirectX Graphics: Componente que manipula todas as sadas grficas,


prov funes para a manipulao de objeto grficos 2D e 3D.

DirectInput: Toda a interao entre o usurio e o aplicativo feita atravs


deste componente. Inclui suporte para diversos dispositivos de entrada, como
teclado, mouse, gamepad e joysticks.

DirectPlay: Componente que d suporte a criao de aplicativos para


comunicao em rede, permitindo a criao de jogos multiplayer. O DirectPlay
fornece uma interface de alto nvel, no sendo necessrio a implementao
de todos os aspectos da comunicao.

24

DirectSound: Componente para a manipulao de efeitos sonoros, permite a


execuo simultnea de um ou mais arquivos no formato WAV, provendo o
controle total sobre a mdia em execuo.

DirectMusic: Permite a criao de trilhas sonoras dinmicas, baseadas em


determinadas regras determinadas pelo desenvolvedor.

DirectShow: Prov acesso a execuo de vdeos e arquivos de udio, o


principais formatos suportados so: AVI, MPEG, MP3, ASF, entre outros.

DirectSetup: Componente para a distribuio dos aplicativos desenvolvidos,


permitindo que antes da execuo seja verificado se o sistema possui o
DirectX instalado e se a verso compatvel, caso no seja a nova verso
instalada.
Nas verses antigas do DirectX o componente DirectX Graphics era dividido

em dois componentes, o Direct3D e o DirectDraw, separando as funcionalidades 2D


das 3D. A verso 7 foi a ultima a separar estes componentes.
A arquitetura do DirectX baseada em duas camadas, a camada da API e a
camada de hardware abstrato. A camada de API se comunica com hardware da
mquina atravs da camada HAL, ela fornece uma interface padronizada para o
DirectX, e tambm comunica-se diretamente com o hardware atravs de um driver
especifico. O desenvolvedor nunca interage diretamente com esta camada, mas a
acessa indiretamente atravs das funes fornecidas pelo DirectX (JONES, 2004). A
figura 5 mostra como so estruturadas as camadas de um aplicativo utilizando o
DirectX.

Figura 5 - Camadas de uma aplicativo DirectX


Fonte: (JONES, 2004).

25

As verses anteriores do DirectX possuam mais uma camada conhecida


como HEL (Hardware Emulation Layer). Esta camada simulava algumas
funcionalidades no encontradas em alguns dispositivos.

3.2.1.3 Outras engines grficas

Alm do OpenGL e do DirectX tambm existem outras engines grficas que


so derivadas destas duas, com por exemplo, o OGRE3D (Open-source Graphics
Rendering Engine) que foi escrita em C++ com o objetivo de tornar fcil e intuitivo o
desenvolvimento de aplicativos 3D, a biblioteca abstrai os detalhes complexos da
utilizao do DirectX e do OpenGL provendo uma interface baseada em objetos e
classes de alto nvel (DEVMASTER, 2008).

3.2.2 Engine Fsica

Uma engine fsica consiste em um programa ou parte de um programa que


simula o modelo fsico de Newton, usando variveis como massa, velocidade,
frico e resistncia ao vento. A engine fsica possui dois componentes principais, o
sistema de deteco de colises que responsvel por detectar qualquer tipo de
coliso entre objetos. O outro o sistema de simulao, que responsvel por
aplicar e resolver qualquer tipo de fora que interaja com os objetos. possvel
simular e prever efeitos sobre diferentes condies que se aproximam muito ao que
ocorre no mundo real ou em um mundo fantasiado. A sua principal aplicao est na
simulao cientifica e em jogos (MILLINGTON, 2007).
Existem dois tipos de engines fsicas, as engines de tempo real e as de
grande preciso. Engines de grande preciso requerem maior poder de
processamento para os clculos extremamente precisos, so mais utilizadas em
simulaes por cientistas e na animao cinematogrfica. Um dos principais
propsitos do computador ENIAC foi utiliz-lo como uma simples engine fsica. Ele
foi usado para criar tabelas de balstica para ajudar as foras militares dos Estados

26

Unidos a estimar a trajetria dos projteis utilizados pela sua artilharia quando
disparados sobre diversos ngulos e com diferentes armas e sofrendo a ao do
vento. Em jogos mais comum a utilizao de engines de tempo real, que
simplificam os clculos, e tem uma menor preciso, porm fornecem uma melhor
performance (WIKIPEDIA, 2008).
Na maioria dos jogos de computador a velocidade de uma simulao mais
importante do que a preciso desta simulao. Tipicamente a maioria dos objetos
3D em um jogo so representados por duas malhas ou formas separadas, umas
destas malhas o objeto, composto de diversas faces e vrtices, extremamente
complexo e detalhado, este objeto o que o jogador v. Entretanto, com o propsito
de melhorar a performance do jogo, o outro objeto uma forma extremamente
simplificada, com poucos vrtices e faces, este objeto no visvel ao jogador e
utilizado para representar o outro objeto para a engine fsica. Por exemplo um vaso
com uma planta em um ambiente 3D, a planta um objeto complexo, com diversas
curvas, diversas faces e vrtices, detectar uma coliso com este objeto pode custar
um certo tempo de processamento, para diminuir este tempo pode se utilizar um
cilindro, dentro deste ficar o vaso com a planta, para o jogador o cilindro no ser
visvel, mas ser utilizado pela engine fsica para determinar uma possvel coliso de
outros objetos com o vaso. Porm esta tcnica pode gerar certa limitao, pois, por
exemplo, a simular um tiro no vaso no seria realista, isto porque a engine fsica no
conhece as faces do vaso e sim as do cilindro que o envolve (MILLINGTON, 2007).
Uma das principais engines fsicas o ODE (Open Dynamics Engine).
Desenvolvido em 2001 por Russel Smith, a engine trabalha com as leis de fsica
clssica atuando sobre corpos rgidos, articulados ou no. A engine foi desenvolvida
em C/C++ e tambm bastante utilizada fora da rea de jogos, em aplicativos e
simulaes onde necessrio um ambiente virtual que simule as principais
caractersticas do ambiente real (MIGUEL; MONTEIRO; CAVALHIERI, 2006).

3.2.3 Script Engine

Scripts so linguagens de programao desenvolvidas para um aplicativo


especfico, seu cdigo fonte interpretado pelo prprio programa em tempo de

27

execuo e no em tempo de compilao. Em jogos os scripts so utilizados


principalmente para a implementao da lgica do jogo.
Dentre as diversas linguagens de script disponveis, destacam-se o Lua,
Python e Ruby, sendo que a Lua uma das principais usadas na implementao de
jogos. Esta foi desenvolvida em 1994 pela PUC-Rio, em um projeto do Tecgraf
(Grupo de Computao Grfica da PUC-Rio) com a Petrobrs, onde o objetivo era a
visualizao de perfis geolgicos e simulao de plataformas martimas de extrao
de petrleo. A linguagem foi usada em jogos pela primeira vez em 1997 aps a
publicao de um trabalho relatando o projeto brasileiro, que logo em seguida
chamou a ateno de desenvolvedores do mundo inteiro (MIGUEL; MONTEIRO;
CAVALHIERI, 2006).

3.2.4 udio Engine

A questo do udio em um jogo to importante quanto sua capacidade


grfica, diferentes gneros exigem um tratamento especfico do udio. Uma udio
engine responsvel por todo tratamento do udio 2D ou 3D de um jogo.
O OpenAL (Open udio Library) um exemplo de udio engine, ela consiste
em uma API exclusiva para o tratamento do udio. A Creative Labs, principal
fornecedora de hardware para udio em PCs, atualmente a coordenadora do
projeto OpenAL (MIGUEL; MONTEIRO; CAVALHIERI, 2006).
A biblioteca OpenAL trata uma coleo de fontes de udio que podem se
mover por um espao 3D e que so percebidas por um nico receptor no mesmo
espao, no caso o jogador. Os objetos bsicos do OpenAL so um Ouvinte
(listener), uma Fonte (source) e um Buffer (MIGUEL; MONTEIRO; CAVALHIERI,
2006).
Outro exemplo de udio engine o FMOD desenvolvido pela Firelight
Technologies, e pode ser utilizada para o tratamento de udio 2D ou 3D, o seu
funcionamento tambm baseado em fontes e ouvintes.

28

3.2.5 IA Engine

As

IA

Engines

(engines

de

inteligncia

artificial)

servem

para

desenvolvimento de comportamento autnomo em NPCs (Non-Player Characters),


ou seja, personagens que no so controlados pelo jogador (MIGUEL; MONTEIRO;
CAVALHIERI, 2006).
Existem diversas definies para o termo inteligncia artificial (IA), segundo
MIFFLIN (2006) a inteligncia artificial consiste na habilidade do computador ou
outra mquina de executar atividades que normalmente necessitam de inteligncia.
Outras fontes definem a inteligncia artificial como o processo ou cincia da criao
de mquinas inteligentes.
A maioria dos jogos eletrnicos incorpora algum tipo de inteligncia artificial,
desde o clssico Pac Man com os fantasmas que tentam capturar o jogador, at
jogos 3D complexos como a srie Unreal Tournament (BOURG; SEEMAN, 2004).
As tcnicas de inteligncia artificial para jogos normalmente so divididas em
duas categorias, determinsticas e no determinsticas. As determinsticas possuem
um comportamento previsvel, um exemplo o algoritmo Chasing, nele o ator
sempre ir seguir o seu alvo, independente de caminho ou distncia, por isso se
torna previsvel. As tcnicas no determinsticas so o oposto das determinsticas,
tornando o comportamento imprevisvel, por exemplo, um ator que aprende e se
adapta as tticas do jogador, para criar este tipo de inteligncia artificial pode ser
utilizado algoritmos genticos, redes neurais, ou a tcnica Bayesianas. Os
algoritmos determinsticos so rpidos, fceis de implementar e testar, porm o
desenvolvedor necessita programar todos as possveis situaes que podem ocorrer
durante o jogo, estes algoritmos tambm diminuem consideravelmente o tempo de
vida de um jogo, pois aps jogar algumas vezes os comportamentos determinsticos
se tornam previsveis para o jogador (BOURG; SEEMAN, 2004).
Segundo MIGUEL, MONTEIRO e CAVALHIERI (2006) no existe nenhuma
engine especializada na implementao de inteligncia para um jogo, geralmente
esse processo feito por cada desenvolvedor.

29

3.2.6 Network Engine

As network engines ou engines de rede tem como objetivo prover


funcionalidades para a criao jogos multiplayer online, fornecendo funes para
conexes entre computadores.
Segundo ARMITAGE, CLAYPOOL e BRANCH (2006) existem quatro tipos
bsicos de arquiteturas para a criao de jogos multiplayers, single screen/split,
peer-to-peer, clientserver e peer-to-peer clientserver hybrid.
A arquitetura single screen/split a nica que no utiliza uma rede fsica para
o jogo multiplayer, todos os jogadores interagem em uma mquina, sendo cada um
em seu turno ou com a diviso da tela (split). Este modelo bastante utilizado em
consoles.
Na arquitetura peer-to-peer (ponto a ponto), cada cliente (jogador)
considerado um ponto e nenhum deles tem mais controle sobre o jogo do que o
outro. No existe nenhum mediador entre os jogadores para controlar o estado do
jogo ou gerenciar as mensagens entre os jogadores. Este modelo comumente
utilizado para jogos em redes locais (LAN Local rea Network), pois esta permite o
uso de mensagens em broadcast (ARMITAGE; CLAYPOOL; BRANCH, 2006). A
figura 6 exemplifica esta arquitetura.

Figura 6 - Arquitetura Peer-to-Peer


Fonte: (ARMITAGE; CLAYPOOL; BRANCH, 2006).

Na arquitetura clientserver (cliente-servidor) um servidor central utilizado


para gerenciar o jogo e toda comunicao entre os jogadores (clientes). Os clientes

30

no se comunicam diretamente, todas as mensagens so enviadas primeiramente


para o servidor que trata de interpret-las e distribu-las para os outros clientes. Esta
arquitetura bastante popular em jogos que envolvem diversos jogadores
espalhados pela internet (ARMITAGE; CLAYPOOL; BRANCH, 2006). A figura 7
exemplifica esta arquitetura.

Figura 7 - Arquitetura clientserver


Fonte: (ARMITAGE; CLAYPOOL; BRANCH, 2006).

A arquitetura peer-to-peer clientserver hybrid basicamente uma unio da


arquitetura peer-to-peer com a clientserver, permitindo que o jogo seja gerenciado
por um servidor central e tambm que os clientes se comuniquem diretamente, isso
diminui o processamento do servidor pois somente o necessrio enviado para o
servidor e o que for especfico para um cliente enviado diretamente para este
(ARMITAGE; CLAYPOOL; BRANCH, 2006).
Um exemplo de network engine a GNE (Game Networking Engine) que
consiste de uma biblioteca multiplataforma desenvolvida em C++ com todas as
funcionalidades necessrias para a criao de jogos multiplayer em rede (GILLIUS,
2008).
Assim como as IA engines comum que o desenvolver de um jogo
multiplayer desenvolva as suas prprias rotinas para o controle multiplayer, visto que
cada jogo possui um padro especifico para a comunicao.

31

3.3 TCNICAS E ALGORITMOS

Existem diversas tcnicas e algoritmos utilizados para a criao e


estruturao de uma game engine, a seguir sero detalhadas algumas destas
tcnicas, levando em considerao as utilizadas no desenvolvimento da game
engine proposta neste projeto.

3.3.1 Transformaes Geomtricas

Transformaes geomtricas so operaes que podem ser utilizadas


visando a alterao de caractersticas como posio, orientao, forma ou tamanho
de um determinado objeto a ser representado.
Segundo WANGENHEIM

(2003)

existem em computao

grfica

transformaes geomtricas bsicas, que podem ser combinadas para se obter o


comportamento de um objeto no mundo em que est modelado: translao,
escalonamento e rotao. A translao consiste em mover o objeto para um
determinado ponto (figura 8), a rotao o ato de rotacionar o objeto sobre um eixo
(figura 9) e o escalonamento consiste em aumentar ou diminuir o tamanho de um
objeto, figura 10 (ASTLE; HAWKINS, 2004).

Figura 8 - Translao

Figura 9 - Rotao

Figura 10 - Escalonamento

32

3.3.2 Fontes Emissoras de Luz

Para a criao de ambientes mais realistas importante a utilizao de fontes


emissoras de luz, estas luzes so responsveis por interagir com o material dos
objetos, assim as tonalidades de cor do objeto variam conforme a posio da luz
emitida sobre ele.
Basicamente existem 3 tipos de luzes:

Directional Light: So raios de luz emitidos para uma determinada posio,


estes so infinitos e paralelos como mostrado na figura 11.

Point Light: uma fonte emissora posicionada em um determinado ponto do


ambiente e emite raios de luz para todas as direes como mostrado na
figura 12.

Spot Light: A fonte de luz fica posicionada no ambiente, mas emite raios de
luz em forma de cone para uma terminada rea como mostrado na figura 13.

Figura 11 - Directional Light

Figura 12 - Point Light

Figura 13 - Spot Light

3.3.3 Modelos Hierrquicos

O uso de modelos hierrquicos uma tcnica usada para representar


estruturas articuladas, como robs, animais, seres humanos, entre outros objetos
que se adaptem ao modelo. Na estrutura utilizada a filosofia de rvore, onde cada
parte mvel ou articulada do objeto considerado um nodo. A vantagem da
utilizao desta tcnica a facilidade em aplicar-se transformaes nos objetos,

33

onde esta se reflete tambm sobre todos os objetos filhos ao nodo qual esta foi
aplicada (WANGENHEIM, 2003). Na figura 14 possvel observar um exemplo de
modelo hierrquico, formando uma perna rudimentar, nela todos os nodos esto
interligados, na figura 15 aplicado sobre a esfera central uma rotao, o que faz
com que todos os nodos seguintes se rotacionem, e os objetos anteriores no
sofram nenhuma transformao, j na figura 16 aplicada uma rotao no nodo
principal do objeto hierrquico, consequentemente todos os outros objetos filhos
sofrero transformaes equivalentes.

Figura 14 - Modelo
Hierrquico 1
Fonte: (WANGENHEIM,
2003)

Figura 15 - Modelo
Hierrquico 2
Fonte: (WANGENHEIM,
2003)

Figura 16 - Modelo
Hierrquico 3
Fonte: (WANGENHEIM,
2003)

3.3.4 Heightmap

Um heightmap consiste em uma superfcie 3D formada a partir de uma


imagem 2D, esta imagem constituda por tons de cinza, como pode ser visto na
figura 17, a variao de cor usada para a formao da superfcie, onde tons claros
representam os locais de maior elevao e os escuros os de menor elevao
(ZERBST; DVEL, 2004). A figura 18 mostra uma superfcie criada a partir da figura
17. Os Heightmaps normalmente so utilizados para a criao de terrenos, pois
possibilitam a formao de ambientes externos, como montanhas, de maneira rpida
e fcil.

34

Figura 17 - Imagem 2D em tons de Cinza

Figura 18 - Heightmap 3D

3.3.5 Projected Shadows

Projected Shadows ou sombras projetadas, consiste em projetar a sombra de


um objeto sobre a textura de outro, a sombra gerada a partir de um ponto emissor
de luz do ambiente e projetada nos objetos que estejam oclusos ao objeto que
esteja emitindo a sombra, como mostrado na figura 19.

Fonte
emissora
de luz.

Sombra
projetada
sobre o
objeto
ocluso.

Objeto
intercessor
da luz.
Figura 19 - Sombra projetada

3.3.6 Clipping e Culling

O Clipping e Culling so duas tcnicas utilizadas para otimizao do


desempenho de aplicaes grficas.
Segundo EBERLY (2004), o culling consiste em uma tcnica usada para
determinar as partes visveis dos objetos ao usurio, visto que no h a necessidade

35

de se redesenhar reas no visveis. Como por exemplo, quando o usurio est


visualizando um dos lados de um cubo, os outros lados no esto visveis, neste
caso, com o culling as outras faces no seriam redesenhadas.
A outra tcnica o clipping, que consiste em determinar os objetos que esto
na rea de viso do usurio, os que estiverem completamente visveis sero todos
redesenhados, caso apenas uma parte de algum deles esteja visvel somente esta
ser redesenhada e os que no estiverem no campo de viso no sero
redesenhados, esta tcnica tambm usada para evitar que objetos que estejam
muito distantes da viso do usurio precisem ser redesenhados (EBERLY, 2004).
O clipping comum na maioria dos aplicativos grficos, j o culling mais
usado em aplicaes 3D.

3.3.6 Sistema a de Partculas

Para a criao de efeitos especiais, que so muito usados em jogos,


possvel utilizar o sistema de partculas, este termo refere-se tcnica de simular
determinados fenmenos, dificilmente produzido com a utilizao de tcnicas
convencionais, como por exemplo, fogo, fumaa, neve, neblina, entre outros. O
sistema consiste em primeiramente determinar um emissor, normalmente um objeto
ou ponto no ambiente 3D, tambm o nmero mximo de partculas a serem geradas
simultaneamente e alguns parmetros para elas, como o vetor de velocidade inicial,
o tempo de vida, sua cor, seu tamanho, entre outros. O prximo passo iniciar a
simulao do efeito, onde so criadas as partculas e sobre elas aplicado o vetor
de velocidade inicial para que entrem em movimento, ento cada uma delas passa
para um estado de loop at o fim do seu tempo de vida, onde so destrudas. Este
processo executado at o fim da simulao. Na figura 20 possvel observar um
efeito de fogo criado na ferramenta e na figura 21 um efeito de neve utilizando o
mesmo sistema.

36

Figura 20 - Simulao de fogo

Figura 21 - Simulao de neve

3.3.7 Shaders

Segundo DALMAU (2003), em um ambiente 3D os objetos e cenrios no so


definidos apenas pela sua geometria, forma ou estrutura, o olho humano tambm
muito sensvel a textura e a luz, pode-se citar como exemplo uma praia sem uma
textura de areia, ou um mar ondulado onde a luz do sol no refletida corretamente.
Por isso para se obter ambientes mais realistas so utilizados shaders.
Shaders so pequenos programas que podem ser executados diretamente na
GPU (Ncleo de processamento das placas de vdeo). Inicialmente, a maioria dos
programas para GPUs eram escritos em linguagem Assembly, porm atualmente j
existem linguagens de alto nvel para esta programao. Entre elas, pode-se citar o
CG, HLSL e GLSL. A base sinttica e semntica destas linguagens bem prxima a
linguagem C (CODEPLEX, 2008).
O CG, desenvolvido atravs de uma parceria entre NVIDIA e Microsoft, uma
linguagem de shaders que permite ao desenvolvedor controlar atravs de
programao a forma, aparncia e movimentao dos objetos renderizados. O HLSL
e o CG so basicamente a mesma linguagem, porm com nomes diferentes para
distinguir entre a tecnologia base utilizada nas linguagens, enquanto HLSL
destinado para programas escritos em DirectX o CG pode atuar tambm em
aplicaes OpenGL. J o GLSL, cujo nome oficial OpenGL Shading Language,
uma extenso da linguagem OpenGL para criao de shaders (CODEPLEX, 2008).
As

linguagens

de

programao

de

shaders

apresentam

recursos

caractersticos para a implementao de algoritmos grficos. Estes recursos visam

37

facilitar a codificao e um maior aproveitamento do paralelismo presente nas placas


grficas.

3.3.8 Animao

Animaes so indispensveis para a maioria dos jogos, so elas que do


vida aos objetos e personagens, tornando os movimentos destes o mais realista
possvel.
Os algoritmos de animao podem ser divididos em duas categorias: mtodos
explcitos e mtodos implcitos. Mtodos explcitos armazenam a seqncia de
vrtices animados da geometria de todos os frames da animao. Uma vez
armazenado, pode ser usada uma variedade de tcnicas para re-converter os dados
originais, e gerar as animaes. Como caracterstica, mtodos de animao
explcitos so fceis de codificar e entender, e freqentemente envolve matemtica
muito simples. Por outro lado, necessitam um uso intensivo de memria para
armazenar todos os vrtices animados. Muitos quadros so necessrios para criar o
verdadeiro senso de movimento de um objeto, e isso significa armazenar muitos
dados. Um arquivo MD3 (formato de animao explcito popular usado pelo jogo
Quake 3) possui um tamanho de aproximadamente 10MB, e isso somente para um
personagem (DALMAU, 2003). A Figura 22 mostra um exemplo de um loop de
animao criado usando um mtodo explcito.

Figura 22 - Animao explcita.


Fonte: (DALMAU, 2003)

A segunda categoria a de animao implcita, estes mtodos no


armazenam os dados de animao, mas ao invs disto, eles armazenam uma
descrio de alto nvel do movimento. Por exemplo, sistemas de animao de
esqueleto armazenam a configurao (em termos de seus ngulos de rotao) para

38

cada junta, como o cotovelo, joelho, e assim por diante. Ento, em tempo real, esta
descrio traada a uma malha de um personagem no animado, e a animao
computada. Esta computao normalmente envolve matemtica complexa com
trigonometria e matrizes. Assim, estes mtodos produzem clculos intensivos para a
CPU (DALMAU, 2003). A figura 23 mostra um exemplo de animao implcita.

Figura 23 - Animao implcita.


Fonte: (DALMAU, 2003)

Segundo DALMAU (2003), mtodos explcitos eram muito populares em jogos


3D mais antigos porque o hardware possua pouco poder de CPU e estes jogos no
usavam muitos ciclos de animao, assim a quantidade de memria usada era
aceitvel, mais recentemente, mtodos explcitos tambm foram bastante usados
em jogos que envolvem vrios jogadores e personagens, pois usando mtodos
implcitos os clculos envolvendo a animao para os diversos personagens seria
invivel. Por outro lado, animao implcita est ficando mais popular, pois torna a
movimentao mais detalhada, alem disso os jogos atuais tentam prover uma
variedade larga de interaes, o que em mtodos explcitos causaria um uso
desnecessrio de memria.

Frame Animation (Mtodo explcito): O modo mais simples de animar um


personagem derivado de tcnicas de animao tradicionais, onde cada
pequeno movimento de um personagem desenhado em uma pagina de um
caderno, em seguida estas paginas so folheadas para apresentar a iluso de
movimento. Nas animaes por frame o conceito basicamente o mesmo,
so gravadas diversas vezes a mesma malha com pequenas alteraes para
gerar os movimentos, e estas sero posteriormente exibidos em uma

39

determinada velocidade, esta velocidade chamada de frames por segundo


(normalmente 25 frames por segundo ou mais).

Keyframe Animation (Mtodo explcito): Keyframe animation uma tcnica


que pode ajudar a reduzir o uso de memria enquanto mantm a mesma
simplicidade e elegncia da animao por frames convencional. Para uma
seqncia de 50 frames, que poderia envolver keyframes nos instantes 0, 15,
30, e 45. O personagem far o loop pela seqncia usando os keyframes e
interpolao para derivar todos os frames restantes. Isto torna o processo de
animao mais rpido, pois o artista pode criar animaes complexas usando
poucos frames e no necessrio armazenar todos os frames em memria.

Forward Kinematics (Mtodo implcito): Forward Kinematics o modo mais


fcil de implementar animao implcita. Em sua concepo mais simples, ela
iniciada em algum nodo de base (normalmente a plvis) e as
transformaes se propagam aos descendentes. Cada junta tem seu prprio
sistema de coordenada local que usada para propagar transformaes de
uma maneira hierrquica.

3.4 GAME ENGINES

Atualmente existem diversas game engines completas, algumas delas so


grtis e open source, j outras so comercializadas. A seguir sero apresentadas
algumas game destas engines.

3.4.1 3D Game Studio

O 3D Game Studio, desenvolvido pela Conitec, uma ferramenta para a


criao de jogos e aplicativos 3D/2D. Ela combina a linguagem de programao CScript com uma interface para o desenvolvimento 3D, juntamente com a sua engine
fsica, os editores de nveis, terrenos e modelos. Possui tambm uma grande

40

biblioteca de objetos 3D e scripts pr-desenvolvidos, permitindo a criao de jogos


simples sem a necessidade de programar (DEVMASTER, 2008).
Algumas caractersticas:

Utiliza a API grfica DirectX.

udio 3D, dando suporte a arquivos wav, mid, ogg, CD, mp3, avi, e mpg.

A engine fsica suporta primitivas bsicas (gravidade, massa, elasticidade,


friso, etc.) e deteco de colises.

Fontes emissoras de luzes estticas, dinmicas e direcionais.

Permite o uso de sombras projetadas e volume para sobras.

Keyframe Animation, Skeletal Animation, Morphing e Animation Blending.

Mesh Loading, Skinning, Deformation.

Permite a criao de jogos multiplayer online.


A compatibilidade do 3D Game Studio restringe-se a plataforma Windows, e

por se tratar de uma ferramenta comercial necessrio adquirir uma licena para
utiliz-la, as licenas variam de R$ 114,00 a R$ 1.500,00 (CONITEC, 2008).
Algumas Imagens:

Figura 24 - Ambiente de desenvolvimento do


3D Game Studio.
Fonte: (CONITEC, 2008)

Figura 25 - Jogo desenvolvido com o 3D


Game Studio.
Fonte: (CONITEC, 2008)

41

3.4.2 Unity3D

A Unity3D, desenvolvida pela Unity Technologies, uma game engine 3D


voltada para o mercado comercial, possui grficos de ultima gerao e permite tanto
o desenvolvimento de jogo para computadores como para o Nintendo Wii. Uma
caracterstica interessante o UnityPlayer, que permite a execuo dos jogos
desenvolvidos atravs de um simples navegador web, com a qualidade grfica
comparvel a de um jogo 3D instalado normalmente no computador (DEVMASTER,
2008).
Algumas caractersticas:

Utiliza a API grfica DirectX ou OpenGL.

udio 2D e udio 3D com streaming de udio e vdeo.

A engine fsica baseada na Ageia's physX Engine.

Keyframe Animation.

Suporte a shaders.

Mesh Loading, oferece suporte aos formatos Collada, FBX, 3DS e OBJ.

Diversos efeitos especiais.

Permite a criao de jogos multiplayer.


O Unity3D compatvel com as plataformas Windows, MacOS e Nintendo Wii.

Somente a verso trial para MacOS est disponvel para download, o que torna a
engine inacessvel para o publico que no utiliza este sistema operacional. O preo
das licenas varia entre R$ 354,00 e R$ 3.500.00 (UNITY3D, 2008).
Algumas Imagens:

42

Figura 26 - Ambiente de desenvolvimento do


Unity3D.
Fonte: (UNITY3D, 2008)

Figura 27 - Jogo desenvolvido com o Unity3D.


Fonte: (UNITY3D, 2008)

3.4.3 C4 Engine

A C4 Engine desenvolvida pela Terathon Software, possui timos grficos,


excelente suporte, e est frequentemente em atualizao, com novas verses sendo
lanadas aproximadamente uma vez por ms. A sua arquitetura consiste de uma
coleo de camadas de software nos quais as mais baixas camadas interagem com
o hardware e com o sistema operacional, e as camadas mais altas provem servios
de plataforma-independente ao cdigo do jogo. Enquanto uma parte considervel da
engine dedicada a renderizao 3D, tambm h componentes dedicados a
funcionalidade como udio, rede e dispositivos de entrada (DEVMASTER, 2008).
Algumas caractersticas:

Utiliza a API grfica OpenGL.

Editor de scripts grfico.

Suporte a shaders.

Skeletal Animation e Animation Blending.

Mesh Loading, oferece suporte aos formatos Collada.

Diversos efeitos especiais (Environment Mapping, Lens Flares, Billboarding,


Particle System, Motion Blur, Sky, Water, Fire, Decals, Fog, Mirror).

Permite a criao de jogos multiplayer.

43

udio 2D e 3D.

A C4 Engine compatvel com as plataformas Windows, MacOS e Playstation 3.


Ao adquirir uma licena o comprador recebe tambm todo o cdigo fonte da C4
Engine, os preos das licenas disponveis variam de R$ 350,00 e R$ 35.600,00
(TERATHON, 2008).
Algumas Imagens:

Figura 28 - Ambiente de desenvolvimento do


C4 Engine.
Fonte: (TERATHON, 2008)

Figura 29 - Ambiente desenvolvido com o C4


Engine.
Fonte: (TERATHON, 2008)

3.4.4 Irrlicht

A Irrlicht uma game engine open source e multiplataforma desenvolvida em


C++. Consiste em uma API de alto nvel para a criao de jogos e simulaes 3D ou
2D. compatvel com os sistemas operacionais Windows, Linux e MacOS.
Algumas caractersticas:

Utiliza a API grfica OpenGL ou DirectX.

Suporte a dynamic lighting e light maps.

Dynamic shadows.

Hierarchical scene.

44

Suporte a diversos formatos de modelos 3D.

Algumas Imagens:

Figura 30 - Ambiente desenvolvido com a


engine Irrlicht.
Fonte: (IRRLICHT, 2008)

Figura 31 - Ambiente desenvolvido com a


engine Irrlicht.
Fonte: (IRRLICHT, 2008)

3.4.5 Unreal Engine

A Unreal Engine foi desenvolvida pela Epic Games, escrita em C++,


oferecendo um alto grau de portabilidade. Grande parte da engine escrita usando
o UnrealScript, uma linguagem de script proprietria.
Uma das principais caractersticas visuais da Unreal Engine seu pipeline
grfico de 64 bits de cores para tratamento de iluminao, conhecido High Dynamic
Range Rendering ou High Dynamic Range Lighting (UNREAL ENGINE, 2008).
Algumas caractersticas:

Utiliza a API grfica DirectX.

Utiliza a engine fsica Ageia's physX Engine.

HDR, per-pixel lighting, dynamic shadows.

Suporte a udio 3D multiplataforma.

Skeletal animation system.

Permite a criao de jogos multiplayer.

45

A Unreal Engine est atualmente na 3 verso, compatvel com as mais


recentes plataformas de consoles, Playstation 3 e XBox 360, e tambm compatvel
com a plataforma Windows. O preo da licena da verso mais recente no
revelado, mas segundo DEVMASTER (2008) ele estimando em mais de 700 mil
dlares.
Algumas Imagens:

Figura 32 - Ambiente desenvolvido com a


Unreal Engine.
Fonte: (UNREAL ENGINE, 2008)

Figura 33 - Ambiente desenvolvido com a


Unreal Engine.
Fonte: (UNREAL ENGINE, 2008)

3.5 CONCLUSO

Atualmente as game engines so to importantes que esto em praticamente


todos os jogos eletrnicos, seja em jogos de computador, vdeo games ou jogos
para celular. Internamente uma game engine pode ser considerado um software
complexo, mas que deve prover ao seu usurio final funes de alto nvel para
facilitar e agilizar o processo de criao dos jogos.
Existem hoje no mercado inmeras game engines, algumas delas gratuitas, j
outras podem custar mais de 700 mil dlares. Muitas empresas desenvolvedoras de
jogos possuem as suas prprias engines, j outras utilizam produtos adquiridos de
empresas especializas na criao deste tipo de software.

46

4 DESENVOLVIMENTO

A game engine desenvolvida, chamada de 3D Game Builder, consiste em


um

framework

completo,

onde

todos

os

mdulos

necessrios

para

desenvolvimento de jogos, como editor de personagens, editor de cenrios,


linguagem script, entre outros, esto reunidos em uma nica ferramenta.
O 3D Game Builder no fica restrito somente a criao de jogos, podendo ser
utilizado para a criao de qualquer tipo de ambiente virtual. O seu principal objetivo
facilitar a criao de aplicativos 3D, tanto por pessoas experientes na rea de
programao, como por leigos.
Este captulo descreve a sua arquitetura, a metodologia usada para o
desenvolvimento, as principais sub-engines e bibliotecas utilizadas e tambm os
resultados alcanados.

4.1 PRINCIPAIS REQUISITOS

Basicamente o 3D Game Builder foi projetado para atender aos seguintes


requisitos:

Ser uma ferramenta completa para a criao de jogos, no necessitando da


prvia instalao de nenhuma biblioteca externa;

Gerenciar e gerar automaticamente a estrutura inicial dos jogos nela


desenvolvidos, restando ao desenvolvedor apenas criar os mapas, editar
personagens, criar eventos e definir as demais configuraes;

Permitir a criao de vrios gneros de jogos;

Possuir uma arquitetura modular para que novos recursos sejam facilmente
inseridos;

Possuir uma interface simples e intuitiva.

47

4.2 PRINCIPAIS SUB-ENGINES E BIBLIOTECAS UTILIZADAS

Para o desenvolvimento do 3D Game Builder foram utilizadas diversas


bibliotecas externas, a tabela 1 lista as principais bibliotecas utilizadas.
Nome

Site Oficial

OpenGL

http://www.opengl.org

ODE

http://www.ode.org

JEDI VCL

http://jvcl.sourceforge.net

FMOD

http://www.fmod.org

Tabela 1 - Principais bibliotecas e sub-engines utilizadas.

A API OpenGL foi utilizada para o processamento grfico 3D, ou seja como
engine grfica. Optou-se pelo uso do OpenGL pela sua simplicidade e portabilidade.
A engine fsica ODE foi usada para a simulao da fsica e deteco de colises
entre objetos. Para o mdulo de udio foi utilizada a biblioteca FMOD, permitindo a
utilizao de udio 3D integrado diretamente com o ambiente. A linguagem de
programao C++ foi utilizada para o desenvolvimento do 3D Game Builder. Em
algumas interfaces foram utilizados alguns componentes da biblioteca JEDI VCL.

48

4.3 ARQUITETURA DO 3D GAME BUILDER

A arquitetura do 3D Game Builder formada por diversos mdulos que


fornecem todos recursos para a criao de jogos, atendendo assim ao requisito de
ser uma ferramenta completa e no necessitar da instalao de nenhuma biblioteca
ou software externo. O mdulo principal (Editor de Cenrios) responsvel por
gerenciar e utilizar os recursos para a gerao dos mapas, do projeto e dos eventos
que formaram a estrutura do jogo criado. A arquitetura completa ilustrada na figura
34.

Figura 34 - Arquitetura do 3D Game Builder

49

Os outros mdulos que fornecem recursos ao editor de cenrios so descritos


a seguir.

Editor de Materiais - Mdulo responsvel pela criao e gerenciamento dos


materiais que definem as caractersticas visuais dos objetos utilizados na
criao dos cenrios dos jogos. Vrios outros mdulos do 3D Game Builder
fazem acesso a este mdulo para a associao de matrias aos objetos neles
editados. Um material composto por diversas propriedades como, por
exemplo, cores, textura, formato, mapeamento, entre outras.

Editor de Luzes - Mdulo para a criao de luzes personalizadas. Uma fonte


emissora de luz responsvel por iluminar os objetos do ambiente e dar um
grau de realismo a cena. Na criao de uma luz possvel definir as suas
cores, sua forma (Spot, Omni, Parallel), grau de atenuao, entre outras
propriedades.

Editor de Objetos - Para a criao de cenrios o 3D Game Builder possui


diversos objetos bsicos pr-definidos, como por exemplo, cubo, esfera,
cilindro, entre outros. Porm para a criao de ambientes realistas so
necessrias formas geomtricas mais complexas, para isto utilizado o Editor
de Objetos que permite a importao de objetos criados em softwares
especficos para modelagem 3D. Diversos formatos de modelos so
suportados, entre eles o 3DS (3D Studio Max File), MD2 (Quake 2 Model
File), LWO (Lightwave File), OBJ (Wavefront File), VRML (Virtual Reality
Model File), entre outros.

Editor de Heightmap - Mdulo responsvel pela criao e edio de


terrenos. Os terrenos so criados utilizando a tcnica de heightmap, ou seja,
a superfcie 3D formada a partir de um imagem 2D em tons de cinza. Alm
da definio de imagem para a formao do terreno tambm possvel definir
diversos parmetros, como por exemplo, a preciso usada na gerao do
terreno, o tamanho do terreno e da textura aplicada, entre outras.

50

Editor de Atores MD2 - Mdulo responsvel pela criao e gerenciamento de


personagens secundrios com animaes. O editor de atores MD2 permite a
importao de modelos 3D no formato MD2 com animaes criadas em
software especficos para esta tarefa. No necessariamente o objeto criado
tem que ser um personagem, podendo ser somente um objeto animado para
o ambiente.

Editor de Atores MD3 - Possui a mesma funo do editor de atores MD2,


porm voltado para modelos no formato MD3, este formato uma evoluo
do MD2 e possibilita a criao de modelo de qualidade superior alm de
permitir que o personagem seja dividido em 3 partes distintas (penas, torso e
cabea), permitindo a aplicao de conceitos de modelos hierrquicos na
movimentao do personagem.

Editor de Arvores - Mdulo que permite a criao e edio de arvores


procedurais. A estrutura das arvores criada em tempo real com definio
das propriedades estruturantes, como por exemplo, numero de folhas, ngulo
do tronco, largura do tronco, numero de ramificaes, entre outras.

Editor de Waterplane - Mdulo para criao de superfcies que simulam


gua. Diversos parmetros podem ser definidos para a sua criao, como por
exemplo, a mascara que definira a estrutura do plano, a viscosidade da gua,
a fora e a quantidade de ondas que sero geradas na superfcie, entre
outros.

Editor de Fog - Mdulo que permite a adio e edio de neblina para os


ambientes. A neblina pode ser usada tanto para tornar o cenrio mais realista
como tambm para ocultar os cortes causados pelo clipping a certa distancia
no ambiente. Diversos parmetros podem ser definidos para a formao da
neblina, como por exemplo, a densidade da neblina, cor, posio inicial e
final, entre outros.

51

Editor de Partculas - Mdulo para a criao e edio de efeitos especiais


utilizando o sistema de partculas e possvel criar efeitos realistas de fogo,
fumaa, neve e vrios outros. A simulao feita a partir da definio de
propriedades como densidade, quantidade e tempo de vida das partculas,
fator de evaporao, cores, direo, entre outras propriedades.

Editor de Raios - Mdulo que permite a criao e simulao de efeitos de


raios. O raio pode ser proveniente de um ponto no cenrio e estender-se a
outro ponto, pode ser utilizado tanto para a simulao de campos de fora
como para criao de grades eltricas futuristas.

Editor de Skybox - Mdulo responsvel pela criao e edio de skybox. Um


skybox consiste de um cubo em que 6 imagens so posicionadas em suas
faces internas, e todo o resto do cenrio criado no interior deste cubo, as
imagens posicionadas nas faces superiores normalmente formam o cu do
ambiente e as faces inferiores o cho ou montanhas. normalmente utilizado
em ambientes externos para dar ao usurio a sensao de que o ambiente
infinito ou simplesmente para a simulao do cu ou atmosfera.

Editor de Cmeras - Mdulo que permite a criao de cmeras


personalizadas, definido o estilo da cmera, o zoom aplicado cena, entre
outras definies. O 3D Game Builder permite que o usurio crie mais de uma
cmera no mesmo cenrio e em tempo de execuo altere a cmera atual.

Editor de udio - Mdulo para a importao de arquivos de udio para


serem utilizados no jogo. O 3D Game Builder utiliza udio 3D baseado em
fontes emissoras e receptoras, por isso quando o udio adicionado no
ambiente ele associado a um objeto (emissor) e ser reproduzido em
relao posio do jogador (receptor). Os formatos de udio aceitos so o
WAV e MP3.

Editor de GUI Layout - Mdulo que permite a edio da aparncia dos


objetos do tipo GUI Layout, estes objetos so utilizados para a criao de

52

interfaces e menus, constituem-se de botes, labels, painis, formulrios,


entre outros.

Editor de Ator Principal - Mdulo responsvel pela edio do personagem


principal utilizado no jogo. O personagem e suas animaes devem ser
criadas em qualquer software especifico para modelagem 3D e exportados
para o formato MD2 ou MD3 para que este possa ser importado para o 3D
Game Builder. Alm do modelo do personagem, diversas outras propriedades
podem ser definidas, como por exemplo, a fora aplicada para a
movimentao, a escala de coliso do ator, a velocidade das animaes,
entre outras.

Editor de Cmera Principal - Mdulo para a edio das propriedades da


cmera principal utilizada para a exibio das cenas.

Editor de Armas - Mdulo para criao e edio de armas que podem ser
utilizadas pelo ator principal em jogos de tiro. O modelo 3D das armas devem
ser modelados juntamente com o personagem e posteriormente exportados
em arquivos separados para que ao serem importados para o 3D Game
Builder as animaes dos modelos estejam sincronizadas. Alm das
propriedades da arma o editor de armas tambm permite a edio da forma,
velocidade e outras definies dos disparos feitos pelas armas.

Editor de Scripts - Mdulo responsvel pela edio e criao de scripts


associados a eventos que podem ocorrer durante a execuo do jogo, tais
como a coliso de objetos, interao do jogador, entre outros. A linguagem de
programao utilizada nos scripts baseada na linguagem Object Pascal e
permite ds da manipulao de strings at o controle de objetos 3D, acesso a
banco de dados, manipulao de arquivos, entre outras funcionalidades.
Cada objeto criado no mapa pode possuir scripts de eventos a ele
associados, alm dos eventos globais referentes ao mapa.

53

Script Builder - Mdulo que facilita a criao de scripts sem a necessidade


que estes sejam programados. Constitui-se de uma biblioteca com scripts
comumente utilizados onde o usurio define algumas constantes e opes, e
o Script Builder cria e insere automaticamente o script aos eventos
correspondentes.
O projeto, mapas e demais recursos criados no 3D Game Builder so

utilizados para gerar uma nova aplicao, ou seja o jogo nele criado. A arquitetura
desta aplicao ilustrada na figura 35.

Figura 35 - Arquitetura de um jogo criado no 3D Game Builder

Os mdulos que compe a arquitetura desta aplicao so:

Input - Mdulo responsvel por receber as entradas de dados provenientes


do teclado ou mouse, estas informaes so enviadas para o mdulo
Message Handling.

Message Handling - Mdulo que interpreta e gerencia todos os comandos


enviados pelo usurio atravs do Input.

Game Logic - Mdulo principal, responsvel por toda a lgica envolvida no


jogo. tambm encarregado de fazer a comunicao e gerenciamento de
todos os outros mdulos da aplicao.

54

Phisics - Mdulo que executa todos os clculos envolvendo a fsica atuante


nos objetos do ambiente, tanto para aplicar determinadas foras ou para
verificar colises entre objetos.

Game Database/Resource Manager - Mdulo responsvel por gerenciar e


prover acesso a todos os recursos utilizados no jogo, texturas, modelos,
musicas, mapas, entre outros.

Game Output - Mdulo responsvel por exibir o estado atual da aplicao ao


usurio atravs de grficos e udio.

4.4 APLICAES

Para demonstrar as funcionalidades do 3D Game Builder diversos jogos e


prottipos foram desenvolvidos, a seguir sero detalhadas algumas destas
aplicaes.

1.4.1 Guerra do Contestado

Para demonstrar a capacidade do 3D Game Builder em criar jogos longos,


complexos e educativos foi desenvolvido um do jogo do gnero RPG abordando o
tema da Guerra do Contestado, um conflito armado que ocorreu no estado de Santa
Catarina durante os anos de 1912 1915. O jogo inicia-se em 1912 com a apario
do terceiro monge e vai at a batalha de Irani, onde ele morre. Durante a aventura o
jogador vive o papel de um caboclo e pode conhecer a histria dos monges do
contestado, entender o porqu de tanta revolta da populao da regio e participar
de todo o desenrolar dos fatos.
A histria toda contada atravs de dilogos entre os personagens como
pode ser visto na figura 38, para poder avanar no jogo o usurio deve acompanhar

55

e entender a histria para saber os prximos passos a serem seguidos. Existem


diversos desafios a serem vencidos pelo jogador, como por exemplo, reunir alguns
seguidores para o grupo do monge Jos Maria.
Algumas cenas do jogo podem ser vistas nas figuras 36, 38 e 39, e a figura 37
mostra um dos ambientes sendo do jogo sendo editado.

Figura 36 - Cena do jogo da Guerra do


Contestado

Figura 37 - Edio de um cenrio da Guerra


do Contestado

Figura 38 - Dilogo entre personagens da


Guerra do Contestado

Figura 39 - Cena de uma animao do jogo da


Guerra do Contestado

1.4.2 Coelhinho Saltitante

O Coelhinho Saltitante foi um jogo simples desenvolvido no 3D Game Builder


para demonstrar a sua capacidade de criao de jogos infantis ou casuais. O
objetivo do jogo saltar com o coelho pelo caminho formado pelas plataformas sem
cair e antes do fim do tempo definido para cada nvel.

56

O jogo formado por diversas fases com incremento de dificuldade em cada


nvel avanado. Nos nveis mais avanados varias dificuldades surgem para o
jogador, como por exemplo, plataformas moveis ou falsas. Nas fases o jogador
tambm pode encontrar objetos para facilitar o seu avano, como por exemplo, para
aumentar o numero de vidas, aumentar o tempo restante, entre outros itens.
Algumas cenas do jogo podem ser vistas nas figuras 40, 42 e 43, e a figura 41
mostra um dos ambientes sendo do jogo sendo editado.

Figura 40 - Cena do jogo Coelhinho Saltitante

Figura 41 - Edio de um dos cenrios do


Coelhinho Saltitante

Figura 42 - Cenrio de um nvel avanado do


Coelhinho Saltitante

Figura 43 - Cenrio de um nvel avanado do


Coelhinho Saltitante

1.4.3 UnC Virtual

O conceito de walkthrough consiste na navegao por um ambiente virtual de


maneira interativa, o walkthrough vem difundindo-se muito rapidamente no ramo

57

arquitetnico, pois permite que determinada construo seja vista de todos os


ngulos antes mesmo de ser construda, possibilitando assim possveis alteraes
no projeto de construo e tambm dando uma viso bastante prxima da real ao
cliente.
Para demonstrar que o 3D Game Builder tambm pode ser utilizado como
uma ferramenta para a criao walkthrough foi desenvolvido a UnC Virtual, uma
representao grfica e interativa do ambiente real da Universidade do Contestado
campus de Porto Unio. O ambiente foi criado a partir da planta baixa e tambm da
analise visual dos prdios, dando nfase aos laboratrios de informtica que tiveram
at o seu interior detalhado.
Algumas cenas da simulao podem ser vistas nas figuras 44, 46 e 47, e a
figura 45 mostra um dos ambientes sendo do jogo sendo editado.

Figura 44 - Simulao do laboratrio 1 da UnC

Figura 45 - Edio de um dos ambientes da


UnC

Figura 46 - Simulao dos corredores da UnC

Figura 47 - Simulao da fachada da UnC

58

1.4.4 Interao com ambientes 3D atravs de movimentos corporais

Nas ltimas dcadas as inovaes presentes nos computadores vieram


evoluindo gradativamente, porm at hoje normal que toda a interao entre o
usurio e a maquina seja normalmente feita atravs de teclado, mouse ou joystick.
Nos jogos esta realidade esta mudando, novas tecnologias e mtodos de interao
esto surgindo, como por exemplo, o controle atravs movimentos corporais,
comandos de voz, entre outros.
Buscando atingir estes novos mtodos de interao do usurio com os jogos,
foi includo no 3D Game Builder um mdulo de reconhecimento de movimentos, que
permite ao usurio navegar e interagir com ambientes 3D utilizando uma webcam e
efetuando movimentaes com a sua face, por exemplo, ao olhar para o lado o
personagem no jogo ir ratacionar-se para a direo correspondente.
As figuras 48 e 49 mostram cenas de um jogo de tiro onde toda a
movimentao do personagem pode ser feita atravs de movimentos corporais do
jogador.

Figura 48 - Jogo com movimentao atravs


de reconhecimento de movimentos

Figura 49 - Interao com o jogo atravs de


movimentos corporais.

59

1.4.5 Interao com uma maquete atravs de um ambiente 3D

Durante o desenvolvimento do 3D Game Builder foi inserido na sua linguagem


script a possibilidade de enviar dados para a porta paralela do computador, com isto
e com o uso de circuitos eletrnicos possvel que diversos dispositivos possam ser
acionados e controlados pelas aplicaes criadas no 3D Game Builder.
Para demonstrar esta funcionalidade foi criado no 3D Game Builder um
ambiente 3D para simular uma maquete j existente de uma casa, com luzes que
pode ser acesas e portas que podem ser abertas com o uso de pequenos motores.
Com a ajuda de um circuito conectado a porta paralela foi possvel executar todos os
acionamentos dos componentes eletrnicos que compem a casa, permitindo ao
usurio navegar e interagir com o ambiente 3D tendo esta interao refletida na
maquete, por exemplo, quando o usurio passa por uma porta no ambiente virtual a
mesma porta aberta na maquete.
Esta funcionalidade pode ser til para dar ao usurio uma maior sensao de
imerso virtual, onde as aes executadas no ambiente virtual so refletidas no
mundo real.
As figuras 50 e 53 mostram cenas do ambiente virtual da casa, a figura 52
mostra uma imagem real da maquete e a figura 51 mostra a edio da do ambiente
virtual da maquete.

Figura 50 - Simulao virtual da maquete

Figura 51 - Edio da maquete virtual.

60

Figura 52 - Simulao virtual da maquete

Figura 53 - Edio da maquete virtual.

61

5 CONCLUSO

Logo no surgimento dos primeiros jogos eletrnicos eles chamaram a ateno


das pessoas devido diverso que tinham a oferecer. Porm, atualmente para
muitas pessoas os jogos j deixaram de ser apenas uma diverso e se tornaram a
sua profisso, inmeras empresas especializadas na criao de jogos surgiram em
todo o mundo, inclusive no Brasil. O principal motivo do surgimento destas empresas
est ligado aos lucros que este mercado tem a oferecer.
Internacionalmente a lucratividade com a comercializao de jogos enorme,
e j superou at mesmo a indstria cinematogrfica. Porm estes lucros poderiam
ser ainda maiores, se no existisse o principal vilo deste mercado, a pirataria. O
Brasil tambm est entrando para este promissor segmento, porm ainda a passos
lentos, o motivo de tal lentido tambm a pirataria, que devido baixa renda da
populao se torna ainda maior. Muitas empresas que surgiram h alguns anos
atrs como as primeiras iniciativas no ramo no pas hoje j no existem mais, mas
mesmo assim novas empresas vm surgindo e outras mesmo com a pirataria se
mantm no mercado, a principal ttica utilizada por tais empresas a exportao
dos jogos aqui criados para outros pases, conseguindo desta maneira uma maior
renda com a comercializao internacional de seus jogos.
Alm do quesito financeiro que os jogos tm a oferecer, existe tambm o lado
dos sonhadores, pessoas que tem como sonho criar um jogo, sem se importar se
iram ter algum lucro com ele.
A criao de jogos uma rea atraente, mas no uma tarefa simples, pois
envolve diversas reas da computao, como banco de dados, redes, computao
grfica, estrutura de dados, inteligncia artificial, entre outras. Justamente para
facilitar este desenvolvimento existem as game engines, que ao proverem
funcionalidades de alto nvel facilitam e agilizam a codificao de jogos.
Praticamente todos os jogos existentes na atualidade possuem internamente
uma game engine provendo as suas funcionalidades de baixo nvel. Seja ela
desenvolvida especificamente para aquele jogo ou uma genrica utilizada em vrios
jogos.

62

Levando isto em considerao este trabalho teve como objetivo a criao de


uma game engine que permitisse a criao de jogos de maneira rpida e de modo
simplificado.
A game engine desenvolvida, chamada de 3D Game Builder, atendeu a todas
as expectativas e requisitos definidos inicialmente, alm de oferecer novas
funcionalidades que foram agregadas durante o desenvolvimento, fornecendo uma
interface simples e intuitiva para pessoas com pouca experincia e oferecendo
recursos avanados para desenvolvedores experientes.
O 3D Game Builder foi desenvolvido com o objetivo de ser uma ferramenta
completa para criao de jogos, porm no ficou restrito a jogos, podendo ser
utilizado para diversas tarefas, como por exemplo, para a simulao de ambientes
3D, walkthroughs, entre outras aplicaes. Ou seja, se tornou uma ferramenta
genrica para criao de qualquer tipo de aplicao 3D.
A ferramenta no se tornou apenas mais uma entre as existentes, se tornou
bastante popular entre os desenvolvedores da rea, principalmente por ser a
primeira do gnero desenvolvida no Brasil. Durante os 6 primeiros meses em que foi
disponibilizada para download teve mais de 25 mil downloads, alm de se tornar
notcia em diversos sites de desenvolvimento de jogos.
O desenvolvimento deste trabalho serviu para a aquisio de muito
conhecimento, justamente pelo motivo dos jogos envolverem diversas reas da
computao.

5.1 TRABALHOS FUTUROS

A Game Engine desenvolvida constitui-se de uma ferramenta completa para a


criao de jogos, porm ainda possvel que novas funcionalidades e tecnologias
sejam adicionadas a ela. As sugestes para trabalhos futuros so:

VRML - O VRML (Virtual Reality Modeling Language), uma tecnologia que


permite a visualizao e interao com objetos e ambientes 3D atravs de
equipamentos de realidade virtual, como culos estereoscpicos, luvas
digitais e capacetes de imerso. Como o 3D Game Builder se tornou uma

63

ferramenta que pode ser usada tanto para a criao de jogos como para o
desenvolvimento de ambientes e simulaes 3D, a implementao de um
exportador para o formato VRML seria algo interessante para ser estudado.
Atravs de um breve estudo realizado sobre o formato VRML constatou-se
que ele simples e pode ser facilmente integrado junto a arquitetura do 3D
Game Builder. Outro ponto interessante sobre o VRML que os ambientes
neste formato podem ser visualizados atravs da internet, utilizando um
navegador web, como por exemplo, o Internet Explorer, onde com a
instalao de um plugin possvel fazer navegao e interao direta com o
ambiente 3D.

Mdulo para Modelagem - Atualmente o 3D Game Builder permite que os


ambientes 3D sejam criados no editor de cenrios, para isso o usurio
dispem de diversos objetos pr-definidos (cubos, esferas, cilindros, entre
outros), porm para a criao de ambientes realistas necessrio que
objetos mais complexos sejam utilizados, para isso existe o importador de
objetos externos que permite a importao de objetos modelados em
softwares especficos para esta tarefa. Isto acarreta na dependncia do 3D
Game Builder com estas ferramentas. Justamente para suprir esta
dependncia, sugere-se o desenvolvimento de um mdulo que permita a
modelagem de objetos complexo dentro do prprio 3D Game Builder.

Criao de Animao - A mesma dependncia citada acima para a criao


de objetos complexos ocorre na criao de personagens para os jogos, estes
devem ser primeiramente modelados e animados em softwares especficos
para tal tarefa. Sugere-se como trabalho futuro a implementao de um
modulo que permita a seleo de personagem pr-definido ou at mesmo a
modelagem destes no prprio 3D Game Builder e tambm a criao e edio
das animaes destes personagens. Uma possvel soluo seria a utilizao
de tcnicas de animao implcitas, visto que permitem maior liberdade de
movimentos, alm de que a implementao de um editor para este tipo de
animao se adaptaria melhor a arquitetura do 3D Game Builder.

64

REFERNCIAS
ABRAGAMES. A Indstria de Desenvolvimento de Jogos Eletrnicos no Brasil.
Pesquisa realizada em 01 mai. 2005. Disponvel em:
http://www.abragames.org/docs/PesquisaAbragames.pdf Acessado em: nov. 2008.
ABRAGAMES. A indstria brasileira de jogos eletrnicos: Um mapeamento do
crescimento do setor nos ltimos 4 anos. Pesquisa realizada em 17 jul. 2008.
Disponvel em: http://www.abragames.org/docs/Abragames-Pesquisa2008.pdf
Acessado em: nov. 2008.
ARMITAGE, Grenville; CLAYPOOL, Mark; BRANCH, Philip. Networking And
Online Games: Understanding And Engineering Multiplayer Internet Games.
England: John Wiley & Sons Ltd. 2006.
ASSIS, D., MATIAS, A. Game supera cinema como opo de entretenimento em
2003. Artigo da Folha de So Paulo, 31 dez. 2003. Disponvel em:
www1.folha.uol.com.br/folha/ilustrada/ult90u40114.shtml. Acessado em: nov. 2008.
ASTLE, Dave; HAWKINS, Kevin. Beginning OpenGL Game Programming. Boston:
Thomson, 2004.
AZEVEDO, Eduardo; CONCI, Aura. Computao Grfica - Teoria e pratica.
Editora Campus, 2003
BAKIE, R.T.. A Brief History of Video Games. Introduction to Game Development.
Hingham, USA, 2005.
BATTAIOLA, Andr L. et al. Desenvolvimento de jogos em computadores e
celulares. Revista de Informtica Terica e Aplicada, 2001.
BOURG, M. David; SEEMAN, Glenn. AI for Game Developers. O'Reilly, 2004.
CARVALHO, P. H. Gustavo. Um Modelo Preditivo para Desenvolvimento de
Jogos de Computador. Trabalho de Graduao, Universidade Federal de
Pernambuco, 2006.
CODEPLEX. GLSL Debugger. Disponvel em:
http://www.codeplex.com/hl2glsl/Wiki/View.aspx?title=GLSL%20Debugger&referring
Title=Home. Acessado em: nov. 2008.
CONITEC. 3D Game Studio. Disponvel em: http://www.conitec.net/english/gstudio/
Acessado em: nov. 2008.

65

DALMAU, Daniel S. Core Techniques and Algorithms in Game Programming.


New Riders Publishing. 2003.
DEVMASTER. DevMaster.net - 3D Game and Graphics Engines Database.
Disponvel em: http://www.devmaster.net/engines/. Acessado em: nov. 2008.
EBERLY, H., David. 3D Game Engine Design - A Practical Approach To RealTime Computer Graphics. San Francisco: Morgan Kaufmann Publishers, 2004.
GILLIUS. GNE - Game Networking Engine. Disponvel em:
http://www.gillius.org/gne/. Acessado em: nov. 2008.
IRRLICHT. Irrlicht Engine. Disponvel em: http://irrlicht.sourceforge.net/. Acessado
em: nov. 2008.
JONES, Wendy. Beginning DirectX 9. Boston: Thomson, 2004.
KISHIMOTO, Andr. Brasil: uma Indstria em Crescimento. PDJzine Revista
Eletrnica de Distribuio Livre da Programadores e Desenvolvedores de Jogos. 1
Edio, mai. 2006. Disponvel em:
http://www.programadoresdejogos.com/pdjzine/pdjzine01.zip. Acessado em: nov.
2008.
KOVACH, Peter J. Inside Direct3D. Redmond, Washington: Microsoft Press. 2000.
MIGUEL, G. Cesar; MONTEIRO, L., R., Jlio; CAVALHIERI, A., Marcos.
Componentes de uma Game Engine. 2006. Disponvel em:
http://cognitio.incubadora.fapesp.br/portal/atividades/cursos/posgrad/jogos_eletronic
os/2006/trabalhos/tf2/TF2-M_GameEngine_Cesar-Marcos-Julio.pdf. Acessado em:
nov. 2008.
MILLINGTON, Ian. Game Physics Engine Development. San Francisco: Morgan
Kaufmann, 2007.
MIFFLIN, H. The American Heritage Dictionary of the English Language. Fourth
Edition, 2006.
PESSOA, C. wGEM: Um Framework de Desenvolvimento de Jogos para
Dispositivos Mveis. Dissertao de Mestrado, Pernambuco, Novembro, 2001.
PESSOA, A. C. Carlos; RAMALHO, L. Geber; BATTAIOLA, L. Andr. wGEM: um
Framework de Desenvolvimento de Jogos para Dispositivos Mveis. 2002.

66

SOFTEX. Tecnologias de Visualizao na Indstria de Jogos Digitais. Relatrio


Softex, 2005. Disponvel em:
http://www.softex.br/observatorio/_publicacoes/default.asp. Acessado em: nov. 2008.
TERATHON. C4 Engine. Disponvel em:
http://www.terathon.com/c4engine/index.php. Acessado em: nov. 2008.
UNIDEV. Portal de Programao de Jogos. Disponvel em:
http://www.unidev.com.br. Acessado em: set. 2008.
UNITY3D. UNITY: Game Development Tool. Disponvel em: http://unity3d.com/.
Acessado em: nov. 2008.
UNREAL ENGINE. Unreal Technology. Disponvel em:
http://www.unrealtechnology.com/. Acessado em: nov. 2008.
WANGENHEIM, V., Aldo. Modelos Hierrquicos. Anotaes de aula, Computao
Grfica, UFSC, 2003.
WIKIPEDIA. Game Engine. Disponivel em:
http://en.wikipedia.org/wiki/Game_engine. Acessado em: jan. 2008.
WIKIPEDIA. Physics Engine. Disponvel em: http://en.wikipedia.org/wiki/
Physics_engine Acessado em: set. 2008.
WRIGHT, Richard; LIPCHAK, Benjamin; HAEMEL, Nicholas. OpenGL
SUPERBIBLE: Comprehensive Tutorial and Reference. 4 Edio. United States:
Pearson Education Inc. 2007.
ZERBST, Stefan; DVEL, Oliver. 3D Game Engine Programming. Boston:
Thomson, 2004.

67

ANEXO A Tipos de Jogos

Gnero

Descrio

Imagem

Caracteriza-se pela explorao de


ambientes e interao com outros
Aventura

personagens. Os jogos so mais


focados na narrativa e no em
desafios baseados em reflexos.
Rayman 3
bastante utilizado na combinao
com outros gneros. A principal

Ao

caracterstica a utilizao de
elementos rpidos de combate e
movimentao.
Starcraft Ghost

Envolve jogos bidimensionais com


Plataforma

personagens andando e pulando


sobre plataformas.

Super Mario 3

Nos jogos deste gnero o jogador


Luta

luta contra outros jogadores ou


contra o computador, normalmente
utilizando artes marciais ou armas.
Tekken 5

68

Variao do gnero ao onde o


FPS

jogador colocando em uma


perspectiva de viso de primeira
pessoa.
Ghost Recon 3
Em jogos tpicos deste gnero o
objetivo coletar recursos, construir

RTS

um determinado exercito e controlar


as suas unidade para atacar o
inimigo.
Warcraft 3

Estratgia
por
Turnos

Gnero similar ao RTS, porm neste


as aes dos jogadores so
realizadas em turnos alternados.
Civilization IV

RPG

Verso digital dos jogos de RPG


clssicos.
Final Fantasy XIII

RPG digital presente em um mundo


MMORPG

on-line e povoado simultaneamente


por centenas de jogadores.
World of Warcraft

69

Gnero que envolve a explorao de


Horror

ambientes que tendem a provocar


medo psicolgico nos jogadores.
Silent Hill 3

Este gnero busca simular com alto


Simulao

grau de realismo ambientes ou


situaes do mundo real.
Flight Simulator
2004

Gnero onde objetivo a disputa


Corrida

entre jogadores em corridas,


podendo ser atravs de carros,
motos, bicicletas, etc.

Project Gotham
Race 3

Esporte

Gnero que retrata esportes reais


como futebol, tnis, basquete, etc.

FIFA 2006

Este gnero explora as habilidades


Rtmico

de sincronizao do jogador com


uma determinada musica.

70

Dance Dance Revolution

Gnero que combina elementos


Puzzle

identificao de padres, lgica e


estratgia.
Bejeweled

So jogos simples e rpidos.


Mini-game

Tambm podem ser inseridos em


jogos maiores como um pequeno
desafio.
Mario Party 7

Tradicional

Classe que envolve todos os jogos


tradicionais de cartas e tabuleiros.
Chessmaster
10000

Gnero que tem como objeto ensinar


Educativo

de maneira ldica o jogador sobre


determinado tema.
Carmen
Sandiego

71

Gnero cujo objetivo fazer a


Advergames divulgao de um produto, empresa
ou ponto de vista.
Clio Xtrem
Racer
Tabela A1 - Gneros de jogos.
Fonte: (CARVALHO, 2006, adaptado).

Você também pode gostar