Embed
Email

1277

Document Sample
1277
Shared by: HC111111032758
Categories
Tags
Stats
views:
1
posted:
11/10/2011
language:
pages:
41
CENTRO UNIVERSITÁRIO FEEVALE









DANIEL COLNAGHI









XNA GAME PROGRAMMING









Novo Hamburgo, novembro de 2007

DANIEL COLNAGHI









XNA GAME PROGRAMMING









Centro Universitário Feevale

Instituto de Ciências Exatas e Tecnológicas

Curso de Ciência da Computação

Trabalho de Conclusão de Curso









Orientador: Ricardo Ferreira de Oliveira









Novo Hamburgo, novembro de 2007

AGRADECIMENTOS





Agradeço a meu irmão por

me ensinar a nunca desistir e por

toda a força que me deu no

decorrer dos anos, a minha mãe e

meu pai pela paciência, apoio e

por acreditarem em mim em todas

as horas difíceis, a minha

namorada Carol por me ajudar

sempre que possível e ao meu

orientador Ricardo por me

mostrar o caminho quando eu não

sabia mais por onde seguir.

RESUMO







O desenvolvimento de jogos tem crescido exponencialmente com o tempo,

provocando uma revolução na tecnologia de seu desenvolvimento. Segundo André

LaMothe, não existe limitações para o ser humano de criar jogos cada vez mais

avançados e com recursos que podem chegar bem próximo a realidade. Em dez anos

atrás os jogos produzidos eram tão avançados pra época que muitos ficavam se

perguntando o que mais poderia vir logo após, e hoje em dia os jogos produzidos já são

planejados para os computadores futuros, e nos deixam perguntando, que maquina será

preciso para rodar o jogo, ou até quando será lançada a máquina que rodará o hoje com

seus recursos máximos.

LISTA DE FIGURAS





Figura 1: Jogo Core Wars para o console Unix ................................................ 9

Figura 2: Pong versão do console Atari ........................................................... 10

Figura 3: Tela do jogo Wolfeinstein ................................................................. 11

Figura 4: Tela do jogo DOOM ........................................................................ 12

Figura 5: Microsoft XBOX 360........................................................................ 13

Figura 6: Inteligência Artificial do jogo Asteroids ........................................... 17

Figura 7: Diagrama de Inteligência artificial. ................................................... 18

Figura 8: Diferenças entre os Gráficos ............................................................. 19

Figura 9: Gráfico em três dimensões ................................................................ 20

Figura 10: Colisão em células ou tiles .............................................................. 20

Figura 11: Colisão usando um vetor 3D ........................................................... 21

Figura 12: Tela do jogo Warcraft 3 usando câmera fixa .................................. 22

Figura 13: Comunicação entre modem ............................................................. 23

Figura 14: Comunicação cliente servidor ......................................................... 23

Figura 15: Comunicação ponto a ponto............................................................ 24

Figura 16: Rascunho de um jogo ...................................................................... 26

Figura 17: Modelo da aplicação do XNA ......................................................... 32

Figura 18: Classe do jogo criada pelo XNA ..................................................... 33

Figura 19: Versão do XACT ............................................................................ 35

Figura 20: Tela do XACT com a estrutura de um novo projeto ....................... 36

Figura 21: Diagrama de I.A. do jogo proposto ................................................. 37

LISTA DE ABREVIATURAS E SIGLAS





IDE Integrated Development Enviroment

MUD Multi User Dungeon

RPG Role Play Game

Índice









1. INTRODUÇÃO .......................................................................................... 8

2. A HISTÓRIA DOS JOGOS ....................................................................... 9

2.1. Gêneros ................................................................................................ 13

2.2. 2D e 3D ............................................................................................... 14

2.1.1 Software de Imagem 2D ............................................................. 14

2.1.2 Software de Modelagem 3D ........................................................ 15

3. ASPECTOS ENVOLVIDOS NA PRODUÇÃO DE JOGO ...................... 16

3.1. Computação Gráfica ............................................................................ 16

3.2. I.A. ....................................................................................................... 16

3.2.1. Algoritmos Determinísticos...................................................... 17

3.2.2. Inference Engine ....................................................................... 18

3.3. Matemática e Física ............................................................................. 18

3.3.1. Gráfico 2D ................................................................................ 19

3.3.2. Gráfico 3D ................................................................................ 19

3.3.3. Teoria da colisão 2D e 3D ........................................................ 20

3.4. Multiplayer e Online ........................................................................... 22

4. PROJETO DO JOGO ................................................................................. 25

4.1. Brainstorm ........................................................................................... 25

4.2. Rascunhos do jogo............................................................................... 26

4.3. Detalhes do jogo .................................................................................. 27

4.4. Game Design Document ...................................................................... 27

5. TECNOLOGIAS DISPONÍVEIS NO MERCADO ................................... 29

5.1. Cg ........................................................................................................ 29

5.2. DirectX ................................................................................................ 29

5.3. XNA .................................................................................................... 30

6. TECNOLOGIA XNA CARACTERÍSTICAS ........................................... 31

6.1. XNA Game Studio Express ................................................................. 31

6.2. Modelo da Aplicação........................................................................... 32

6.3. Content Pipeline .................................................................................. 33

6.4. XNA Audio Creation Tool (XACT).................................................... 34

6.4.1. Projeto de som .......................................................................... 35

7. PROPOSTA DE JOGO .............................................................................. 37

8. CONCLUSÃO ............................................................................................ 39

9. BIBLIOGRAFIA ........................................................................................ 40

INTRODUÇÃO





As ferramentas e métodos de desenvolvimento de jogos têm mudado com

o tempo, os efeitos, gráficos e outros recursos que antes não era possível fazer hoje faz

parte da maioria dos jogos lançados. Cada vez mais os desenvolvedores criam um

mundo virtual mais perto do nosso mundo real. Essa afirmação já era prevista pelo

visionário André LaMothe, que sempre acreditou no potencial dos jogos e o rumo que

ele tomava com o tempo.



Benjamin Nitshke foi um dos pioneiros no desenvolvimento de jogos em XNA,

ele foi privilegiado a testar suas funcionalidades e a nova tecnologia que a Microsoft já

vinha desenvolvendo. Inicialmente parecia mais um framework de desenvolvimento de

jogos como o DirectX, onde ainda seria preciso uma IDE para desenvolver, isso por que

a Microsoft manteve segredo durante um tempo.



Os desenvolvedores de jogos sempre ficaram separados entre, desenvolvimento

de jogos de computador e desenvolvimento de jogos em console, para cada um deles era

preciso uma nova IDE e uma nova linguagem de programação. Com o XNA é possível

desenvolver jogos para computador e para XBOX 360 sem alterar muito o código,

inclusive a manipulação de sons agora é feita de um modo separado para não precisar

programar para console e computador de dois modos diferentes.



Nem por isso o desenvolvimento em cima do DirectX parou, hoje o DirectX

está na versão 10 e promete se manter atualizado independente das tecnologias

paralelas.

9









2. A HISTÓRIA DOS JOGOS







Segundo LaMothe (1999), a história dos jogos começou em meados da década

de 60, quando surgiram os primeiros mainframes. Um dos jogos mais antigos é o Core

Wars, um jogo baseado em texto que rodava em Unix. Com o passar do tempo

começaram a surgir jogos com gráficos primitivos e começaram a se espalhar pelos

mainframes e mini-computadores.









Figura 1: Jogo Core Wars para o console Unix



A maioria dos jogos eram para rede e seguiam alguns estilos como Multi-User

Dungeons (MUDs) e Star Trek. No entanto estes jogos eram jogados pela minoria e

apenas depois do lançamento do Pong a massa popular teve acesso aos jogos. O Pong

foi desenvolvido por Nolan Busnell, que investiu na área dos jogos e criou a empresa

Atari.

10









Figura 2: Pong versão do console Atari



Em meados dos anos 70, surgiram os primeiros computadores pessoais. TRS-

80, Apple e o Atari 800 foram os primeiros a invadirem o mercado, antes disso surgiram

kits como o Altair 8000 que não era muito fácil de montar. Entre estes três modelos, o

Atari 800 era o mais poderoso, o TRS-80 era voltado para negócios e a Apple tinha o

melhor marketing.



Os jogos eram escritos em BASIC ou linguagem de máquina pura. Eles não

possuíam uma interface gráfica muito avançada e com isso bastava fazer um jogo no

estilo Pong com poucas regras para ganhar a atenção do publico da época. Esse fator

ajudou a fazer dos primeiros jogos clássicos tornando seus criadores muito conhecidos.

Não existiam materiais sobre o assunto, até que alguém publicou um artigo de 50 a 100

paginas, outro artigo apareceu na revista Byte.



Na década de 80 surgiram os primeiros computadores de 16-bits e nessa época

os jogos começaram a ter uma aparência boa com mais recursos gráficos. Jogos como

Wing Commander e Flight Simulator apareceram no mercado fazendo sucesso com seus

gráficos avançados. Nessa época o Amiga 500 e o Atari ST dominavam o mercado

como melhores computadores para jogos, entretanto o PC continuava no mercado por

ser um computador de baixo custo.

11



O PC continuou a ganhar popularidade lentamente até a década de 90 quando a

IBM PC - compatível chegou à liderança no mercado lançando o Windows 3.0 e ficou

conhecido como “o computador de trabalho pessoal”. Era possível jogar, escrever

programas e abri-lo para conectar outras placas, diferente do Macintosh da Apple. Esse

diferencial atraiu vários hobistas.



O avanço dos jogos chegou ao ano de 1993 quando a Id Software lançou

DOOM como uma continuação do sucesso Wolfenstein 3D. Ela conseguiu provar que o

PC também era uma plataforma de programação de jogos e isso impulsionou mais ainda

o avanço do PC. Isso fez a Microsoft reavaliar sua posição quanto à programação de

jogos, concluindo que era hora de entrar no mercado. Ela entrou no mercado como

Microsoft Games e tinham como objetivo criar a solução para todos os problemas do

mundo.









Figura 3: Tela do jogo Wolfenstein

12









Figura 4: Tela do jogo DOOM



Entretanto o Windows 95 não tinha um bom desempenho em vídeo em tempo

real e sua capacidade de áudio deixava muito a desejar. Para solucionar este problema a

Microsoft lançou o WinG que possuía algumas funções gráficas para desenhar bitmaps

na tela.



Logo em seguida a Microsoft começou a desenvolver o DirectX que serviria

como uma solução completa para gráficos, sons, dispositivos de entrada(teclado,

joysticks e similar), rede e sistema 3D. O DirectX só começou a fazer sucesso a partir da

versão 3.0 quando ele se tornou mais estável. E mesmo assim as empresa continuaram a

desenvolver jogos usando a plataforma DOS, essa situação só mudou no lançamento do

DirectX 5.0.



Atualmente o DirectX está na versão 10 mas só roda no Windows Vista,

deixando a maioria dos usuário do Windows XP com a versão 9.0c. Ele é muito usado

para desenvolver jogos complexos e de alto desempenho. Entretanto a Microsoft não

parou por ai, atualmente a grande novidade é o XNA, uma IDE completa para

desenvolvimento de jogos de computador com possibilidade de portabilidade para

XBOX 360, o ultimo console lançado pela Microsoft.

13









Figura 5: Microsoft XBOX 360.





2.1 Gêneros



Hoje em dia existem muitos gêneros de jogos, mas não necessariamente é

preciso escolher um deles, pode-se fazer uma mixagem de gêneros (ANDRÉ

LAMOTHE, 1999).



Primeira pessoa: é o jogo em 3D com a visão do personagem, os mais

conhecidos são Doom, Quake e Unreal. Tem como objetivo passar a sensação de estar

no ambiente do personagem principal.



Esporte: os gráficos variam de 2D e 3D, sua principal característica é a

inteligência artificial que vem sendo cada vez mas aprimorada. Normalmente estes

jogos permitem que dois jogadores joguem simultaneamente. Um dos jogos mais

famosos é o Winning Eleven.



Luta: a visão normalmente é de lado e o jogo é uma mistura de gráficos 2D e

3D. A trilogia do Street Fighter é o exemplo mais conhecido.



Arcade/Tiro/Plataforma: tem como principal característica a simplicidade. São

jogos 2D, rápidos, como Pac-Man e Asteroid.



Simulações mecânicas: estilo que passa a sensação de pilotar algum veículo

como carro, avião, submarino entre outros. Um dos simuladores que chega mais perto

da realidade é o Grant Turismo.



Simulação de ecossistema: tem como objetivo dar poder de Deus ao jogador.

Os títulos mais conhecidos são The Sims, Simcity e Black and White.

14



Estratégia: normalmente o jogador tem que controlar um exército ou uma

nação para atingir um objetivo específico. O estilo se divide em dois tipos, em tempo

real e por turno, podendo levar horas para terminar uma jogada. Ages of Empire e

Deadlock refletem os dois estilos.



Role Play Game: também conhecido como RPG, é um dos estilos que mais

atraiu jogador, tanto no modo de jogo sozinho como no modo online. Sua característica

é a interação com outros personagens do jogo tornando um jogo não linear. Atualmente

a interação online é tanta que permite juntar-se em clãs, realizar missões, sozinho ou em

grupo, trocar itens, organizar eventos e muito mais. Um exemplo atual é o Silkroad.



Historia interativa: estilo de jogo linear onde o jogador tem que seguir um

roteiro. Normalmente decifrando charadas ao decorrer do jogo.



Tabuleiro/Puzzles: jogos de tabuleiros normalmente disputados por mais de um

jogador como o Monopoly.





2.1 2D e 3D



Os jogos podem ser desenvolvidos em duas dimensões (2D) ou em três

dimensões (3D). Alguns jogos usam uma mixagem desses estilos, normalmente os jogos

em 2D possuem gráficos renderizados em ferramentas de modelagem 3D para

parecerem mais agradáveis ao jogador (ANDRÉ LAMOTHE, 1999).





2.1.1 Software de imagem 2D



Atualmente no mercado existem inúmeros softwares de edição de imagens com

muitos recursos e efeitos, muitos deles são gratuitos ou até código aberto. Para o

desenvolvimento do projeto será usado o Macromedia Fireworks 8 que possui uma

versão de demonstração de 30 dias. Outros softwares para edição de imagem são o

Photo Shop, Corel Draw, Paint e Paint .NET.

15



2.1.2 Software de modelagem 3D



Softwares de modelagem 3D podem ser extremamente complexos para leigos

no assunto e podem custar até 100.000 dólares. Existem versões de demonstração e

gratuitas, mas normalmente são bem limitadas. As ferramentas mais conhecidas no

mercado são o TrueSpace, Cagliari, 3D Studio Max e Maya. No projeto não será usado

nem uma dessas ferramentas

3. ASPECTOS ENVOLVIDOS NA PRODUÇÃO DE JOGO





3.1 Computação Gráfica



Segundo Feldman (2001), ao passar dos anos o desenvolvimento de jogos no

estilo árcade tornou-se um grande negocio e atraiu muitos programadores fieis a esse

gênero. A computação gráfica começou a crescer desde então, simplesmente por que um

jogo de árcade não vendo no mercado se não possuir um bom design. Feldman mostra

como exemplo o Sonic The Hedgehog, provavelmente não seria tão carismático se os

gráficos fossem representados como caracteres ASCII. Outro exemplo é o Mortal

Kombat, os personagens do jogo não pareceriam tão reais se fossem desenhados a mão

em vez de fotos reais.



A qualidade dos gráficos tem se mostrado de certa forma essencial para os

jogos e uma boa ferramenta de manipulação de imagem pode aumentar a produtividade

e melhorar a qualidade final da arte dos gráficos.



Alguns tipos de ferramentas gráficas que podem ajudar no trabalho de

manipulação de imagem e animação são:



Programas de desenho



Utilitário de captura de imagem



Programa para visualizar e converter imagens



Ferramenta de palheta de cores





3.2 I.A.



Segundo Colnaghi (2001), a inteligência artificial (I.A.) é um conjunto de

algoritmos baseado em lógica, probabilidade e memória a fim de simular a inteligência

17



de um ser humano. A lógica para cada jogo pode variar dependendo da necessidade da

inteligência da maquina.



Na prática, a I.A. depende muito do foco, ou seja, objetivo final do cérebro a

ser modelado. Para um jogo, se o personagem parecer inteligente, estará suficiente,

independente da lógica utilizada. Não existe uma maneira correta de modelar a I.A., se

os resultados obtidos são satisfatórios o método escolhido está aprovado (ROBERTO

COLNAGHI, 2001).





3.2.1 Algoritmos Determinísticos



Algoritmos determinísticos são comportamentos predeterminados ou pré-

programados. Por exemplo, se olharmos para a I.A. do jogo Asteroids, os asteróides são

criados em uma posição qualquer com uma velocidade aleatória. O asteróide possui

apenas um objetivo, seguir seu curso predeterminado, e essa e a sua inteligência

artificial - simples.









Figura 6: Inteligência Artificial do jogo Asteroids.

18



3.2.2 Inference Engine



Segundo Harrison (2003), essa técnica é mais avançada e normalmente é uma

solução para a implementação e codificação da inteligência artificial, mas ela é apenas

uma parte para a solução.



Ela tem como objetivo criar um diagrama de caso com as ações a serem

tomadas dependendo de cada estado da ação. Cada ação é tomada dependendo de seu

resultado, como na imagem abaixo.









Figura 7: Diagrama de Inteligência artificial.





3.3 Matemática e Física



Para o desenvolvimento de um jogo é preciso um conhecimento básico em

física, até mesmo para um jogo no estilo Pong é necessário aplicar formulas de física.

Durante muito tempo estes cálculos de física eram feitos apenas pelo processador da

maquina podendo afetar o desempenho do jogo. Até inicio de 2007 os jogos não

exigiam tanto recurso de física, até o lançamento de Medal of Honor Airborne. Para

19



conseguir jogar usando seus recursos no máximo, é preciso uma placa de física

(AGEIA) além da configuração padrão do jogo.



As placas de física estão começando a aparecer no mercado, abrindo uma nova

possibilidade para os jogos, com isso a programação do jogo terá de ser voltada a este

novo recurso.





3.3.1 Gráfico 2D



Um jogo como Pong usa uma estrutura de gráfico 2D, e deve ser tratada com

um gráfico cartesiano de duas posições, X e Y. Segundo Stahler (2004), é bom ressaltar

que o computador trata o posicionamento das imagens de um modo diferente do gráfico

cartesiano, enquanto o Y do computador é acrescentado, para o cartesiano ele é

subtraído, entretanto existem formulas matemáticas para transformar um ponto do

computador para um ponto no gráfico cartesiano.









Figura 8: Diferenças entre os Gráficos.





O desenvolvimento de um jogo 2D pode ser desenvolvido usando apenas estas

duas posições. A maioria dos jogos de console em 2D são desenvolvidos usando apenas

este conceito. No caso, o jogo proposto usará o gráfico 2D.





3.3.2 Gráfico 3D



Um gráfico 3D difere apenas pela sua dimensão Y, que representa a altura do

objeto no plano. Este objeto é representado por três coordenadas, X, Y e Z. Infelizmente

não existem padrões que dizem que um gráfico 3D deve ter como o eixo Z sendo a

altura. Muitas referencias apontam inclusive o eixo Y como sendo a altura e o Z

profundidade. Entretanto é tudo uma questão de decisão de qual usar (WENDY

STAHLER, 2004).

20









Figura 9: Gráfico em três dimensões.







3.3.3 Teoria da Colisão 2D e 3D





Alguns jogos em 2D usam este tipo de gráfico para simular um efeito de

colisão 3D, conhecidos como jogos isométricos (ANDRÉ LAMOTHE, 1999). Um

exemplo de jogo antigo que usa essa tecnologia é o PaperBoy, outro mais recente que

fez muito sucesso é o Diablo.



Segundo LaMothe (1999), existem três métodos para aplicar colisão em um

jogo.



Jogo baseado em células e totalmente em 2D.



Basicamente deve ser decidido qual será o ângulo de visão do jogo e então

desenhar toda a arte no ângulo definido. Entretanto essa técnica depende também de

como os desenhos são renderizados na tela, elas devem seguir uma ordem, de baixo para

cima, fazendo com que os objetos que estão atrás dos outros continuem atrás.

21



Figura 10: Colisão em células ou tiles.



Full screen com colisão 2D ou 3D.





Essa técnica consiste em desenhar um mundo isométrico do tamanho que for

desejado e criar uma estrutura secundaria que contenha os dados informando onde no

espaço possui colisões. Com essa técnica é possível determinar que os desenhos em 2D

ou 3D não precisam ter informação de altura, por mais complexo que eles sejam.









Figura 11: Colisão usando um vetor 3D.







Usando matemática 3D com câmera fixa.





Essa técnica é a mais fácil, pois não é preciso fazer nem uma estrutura extra

para armazenar os dados dos objetos, basta usar uma engine 3D e fixar a câmera em um

ângulo para fazer o efeito de jogo isométrico. A maioria dos jogos da Sony Playstation I

e II usa essa técnica, são em 3D com câmera fixa em 45º.

22









Figura 12: Tela do jogo Warcraft 3 usando câmera fixa.









3.4 Multiplayer e OnLine



Criar um jogo multiplayer requer muito planejamento na hora de desenvolver o

projeto e a forma de comunicação entre os jogadores e o servidor, muitos jogos não dão

conta de tantos jogadores e se tornam lentos e praticamente impossíveis de se jogar

independente da conexão da maquina do jogador, ou seja o client (ANDRE

LAMOTHE, 1999).



Antigamente os jogos eram modem a modem, ou seja, sem um servidor entre

os dois jogadores. O primeiro jogo modem a modem foi criado por Dani Bunten Berry e

se chama Modem Wars, ele foi lançado para o Commodore 64 na década de 80. O jogo

era de estratégia e em tempo real, o que tornou o jogo realmente significante pois até

então nem um jogo era em tempo real (TODD BARRON, 2001).

23









Figura 13: Comunicação entre modem.



Segundo Barron (2001), a comunicação entre as maquinas pode ser feito de

outros dois jeitos, cliente servidor e ponto a ponto. No cliente servidor, os dados são

enviados para o servidor e retornam um valor ao cliente e vice versa, nesse tipo de

comunicação o servidor é sempre dedicado, ou seja, ele só recebe as informações e

processa o jogo propriamente dito não necessariamente precisa estar rodando. Na

comunicação ponto a ponto um cliente simula um server e todos clientes se comunicam

com ele e entre si seguindo o principio de uma comunicação ponto a ponto.









Figura 14: Comunicação cliente servidor.

24









Figura 15: Comunicação ponto a ponto.

25









4. PROJETO DE UM JOGO





Segundo Perucia (2005), o desenvolvimento de um projeto de jogos é muito

parecido com outro software qualquer, mas caracteriza-se mais pela sua fase inicial de

criação. A criação do jogo segue as principais fases brainstorm, rascunho do jogo,

detalhes do jogo que por sua vez resultam no documento final para codificação da idéia.

Conhecido como Game Design Document.



Cada fase do processo pode ser repassada até a definição final da idéia. A

importância deste documento é tão grande que ao final de seu desenvolvimento, pode

ser avaliado se o jogo vai ser um sucesso ou um fracasso.





4.1 Brainstorm



O brainstorm (tempestade de idéias) é a primeira fase de um projeto de jogos.

Nessa fase os projetistas devem avaliar todas as sugestões para amadurecer as idéias e

não descartar nada que pareça absurdo. Segundo Alexandre Perucia(2005), muitas

idéias que pareciam não ter nenhum sentido, no final, acabam virando um sucesso. Um

exemplo é o Mario, onde um bombeiro se torna herói em um mundo que tem tartarugas

e cogumelos que andam.



Algumas questões que devem ser tratadas nessa fase são: objetivo do jogo, o

que o jogador deve fazer, como ele deve fazer, o que torna o jogo divertido, se o jogo

terá charadas, etc. Nessa fase as idéias não precisam ser detalhadas. Outro passo é

definir o estilo do jogo que será desenvolvido, ou até uma mixagem dele.



O objetivo final do Brainstorm é reunir o máximo de idéias possíveis e

diferentes para, futuramente, transformar em algo criativo e facilitar o processo de

desenvolvimento de idéias.

26



Todas as idéias criadas no Brainstorm de um jogo que não são utilizadas

podem ser armazenadas para que possam futuramente se transformar em outros jogos.





4.2 Rascunhos do jogo



A segunda fase consiste em criar protótipos do jogo em papel, desenhar cenas e

passagens do jogo para poder simular a jogabilidade (gameplay). Esse tipo de técnica é

mais adequado para jogos simples como jogos de tabuleiro e jogos em duas dimensões e

ajuda na visualização do projeto final, permitindo fazer alterações sem gerar muito

impacto no seu desenvolvimento (ALEXANDRE PERUCIA, 2005).









Figura 16: Rascunho de um jogo segundo Perucia(2005).





O rascunho pode ser desenhado em forma de roteiro como se fosse um filme.

Ele ajuda a prever as funcionalidades do jogo não só para o jogador, mas também para o

desenvolvedor ou responsável pela documentação técnica do jogo.

27



4.3 Detalhes do jogo



Segundo Perucia (2005), após ter o rascunho do jogo pronto é preciso fazer um

detalhamento complexo e escrever tudo a respeito do jogo. Nessa etapa a técnica

consiste em realizar perguntas sobre o jogo como:



Em que época se passará o jogo? Medieval, atual ou futurístico.



Quais são seus inimigos? Como serão seus ataques.



Qual o objetivo principal do jogo?



Qual será a trilha sonora do jogo?



Qual será a história do personagem principal do jogo?



As perguntas podem ser feitas dependendo do estilo do jogo, no caso as

perguntas aqui são feitas para o desenvolvimento de um jogo no estilo RPG.



Segundo André Lamothe(1997), as charadas podem tornar o jogo mais

interessante fazendo do jogo um desafio para que o jogador pense e interaja mais com o

ambiente. A idéia é fazer com que o jogo não se torne linear. Atualmente os jogos

onlines têm usado muito deste artifício para segurar o jogador por mais tempo e fazendo

com que ele retorne com mais freqüência. Para que um jogo que possua apenas o modo

de jogar sozinho se torne uma referência, é preciso que tenha muitas charadas e que não

seja linear, dando a liberdade no jogador escolher caminhos totalmente diferentes a cada

vez que joga. Um bom exemplo é o The Elder Scrolls IV Gates of Oblivion.



É nesta fase que a equipe toda deve ser perguntar se não falta mais nada ou se

não deveria ser alterado mais alguma coisa. No decorrer do detalhamento de cada

funcionalidade do jogo, a equipe deve levantar a possibilidade de reavaliar alguma

pendência e partir do inicio para tornar a idéia mais clara e objetiva. Para isso é possível

voltar ao rascunho do jogo ou até mesmo ao brainstorm (ALEXANDRE PERUCIA,

2005).





4.5 Game Design Document



O game design document tem como objetivo agregar todos os documentos do

projeto em um único documento. Essa etapa é muito útil, pois tudo o que foi proposto

até o momento pode ser repensado para não ocorrer nem um imprevisto na criação do

28



projeto. Essa fase pode levar muito tempo e tem como objetivo avaliar de forma clara

todo o funcionamento do jogo.



A avaliação do jogo como um todo aumenta a possibilidade de tornar a idéia

um sucesso.

29









5. TECNOLOGIAS DISPONIVEIS NO MERCADO





5.1 Cg



A linguagem Cg foi criada para tornar possível o controle de shapes,

aparências e movimentos de objetos usando programação gráfica direto do hardware

com o intuito de tornar extremamente rápido o processamento gráfico (RANDIMA

FERNANDO, 2003).



O Cg proporciona aos desenvolvedores uma plataforma de programação fácil

de usar e ajuda na criação de efeitos especiais em tempo real com qualidade

cinematográfica mais rapidamente. Ele também remove a necessidade de programar os

efeitos diretamente em linguagem assembly, ou seja, diretamente no hardware.





5.2 DirectX



Segundo McCuskey (2002), a Microsoft criou a primeira versão do DirectX

para migrar os desenvolvedores do MS-DOS para o Windows. Antes disso a Microsoft

tinha grandes problemas com a limitação e capacidade gráfica e acesso a som

diretamente, acarretando muita lentidão para os jogos e alguns aplicativos. E esse foi o

objetivo inicial quando a Microsoft criou o DirectX, proporcionar um acesso rápido e

direto ao hardware.



Outro beneficio do DirectX é fazer com que qualquer dispositivo de hardware

seja acessado indiferente da sua marca ou configuração.



O DirectX é dividido em partes:



DirectGraphics

30



Essa parte do DirectX fica encarregada de desenhar os gráficos na tela. Em

versões anteriores ela era separada em DirectDraw para os gráficos 3D e Direct3D para

gráficos e modelos em 3D.



DirectAudio



Essa parte é responsável pelo som e musica do jogo, usada para manipular o

som em qualquer ponto do espaço.



DirectPlay



Esse componente do DirectX permite criar jogos multi-player, pela rede local

ou internet. O componente também permite comunicação por voz em tempo real em

jogos multi-player.



DirectInput



O DirectInput gerencia todas as entradas de dados como teclado, mouse,

joystick, controles com force feedback.



DirectShow



Proporciona controle de vídeo e multimídia.





5.3 XNA



Segundo Cawood (2007), para todos os desenvolvedores de XBOX 360, o

XNA fez o maior progresso ma programação de jogos no mundo. Antes do XNA era

muito complicado e custoso para um estudante, hobista ou desenvolvedor independente

de jogos ter acesso a kit de desenvolvimento de console. O XNA possui uma IDE

própria para desenvolvimento, o XNA Game Studio Express que é uma extensão do

Visual C# Express, as duas ferramentas são gratuitas, ou seja, o usuário tem a

possibilidade desenvolver um jogo sem custo algum.



Mais características serão abordadas no decorrer do trabalho.

31









6. TECNOLOGIA XNA CARACTERISTICAS





Segundo Nitschke (2007), o desenvolvimento do XNA começou há alguns

anos atrás, mas se manteve em segredo. A primeira vez que o logo XNA veio a público

foi em 2004, na documentação do DirectX (André Lamothe, 1998). A Microsoft

guardou o segredo do objetivo de desenvolvimento do XNA de forma que seus

programadores não sabiam o que esperar. Todo o desenvolvimento do XNA foi feito

seguindo um padrão novo de framework, com um conceito totalmente diferente.



O XNA não é apenas um framework como o DirectX, ele contém uma IDE

derivada do Visual Studio (Andrew Parsons e Nick Randolph, 2007) e algumas

ferramentas para facilitar o trabalho do desenvolvedor.



Contudo, não é apenas o XNA e sua facilidade de desenvolver que realmente

interessam e sim sua portabilidade para o Xbox 360 e sua biblioteca de códigos livres

que a Microsoft disponibiliza, sem falar que para disponibilizar seu jogo em Xbox 360,

basta se cadastrar no Creators Club e pagar uma taxa anual de U$ 99.





6.1 XNA Game Studio Express



Atualmente a única forma de desenvolver em XNA é usando a IDE XNA

Game Studio Express, mas a Microsoft lançará em breve o XNA Game Studio Pro.

Também é bom lembrar que a única linguagem de desenvolvimento é o C#. Porém

existe um modo de utilizar o XNA com o Visual Studio 2005, mas não recomendado

pela Microsoft.



O XNA Game Studio Express é um add-on do C# Express e é necessário ter o

Service Pack 2 do Windows, o .NET Framework 2.0, processador de 1GHz, mais de

512MB de RAM, e o mais importante, uma placa de vídeo com Shader Model 1.1 ou

superior.

32



6.2 Modelo da aplicação



O framework do XNA é dividido em três partes essenciais.



XNA Graphic Engine; XNA Game Application Model; XNA Content Pipeline.









Figura 17:Modelo da aplicação do XNA.







Todas estas DLLs são escritas em C# e podem ser facilmente exploradas

usando a ferramenta Reflector(Lutz Roeder http://www.aisto.com/roeder/dotnet/).

Algumas destas DLLs são apenas chamadas para as DLLs do DirectX para simplificar

um pouco a estrutura.



Cada projeto do XNA usa a classe Game que contém todos os componentes

necessários. São eles: dispositivo gráfico (graphic device), gerenciador de conteúdo

(content manager) e configuração da aplicação (window settings).



A classe Game contém três métodos essenciais para o projeto, a Microsoft

adicionou mais dois métodos (LoadGraphicsContent e UnloadGraphicsContent) na

classe Game em sua versão final, que são criados automaticamente, mas não serão

abordados por que servem mais para jogos que possuem uma estrutura mais simples.

33







NomeJogo

Class

Methods

 Initialize

 Update

 Draw









Figura 18: Classe do jogo criada pelo XNA.







O método Initialize carrega todo o conteúdo do jogo seta todas as

configurações iniciais e inicia tudo o que for preciso. Se no caso for usado a modelagem

que a Microsoft preparou para o XNA, todo o conteúdo deve ser iniciado no método

LoadGraphicsContent.



O método Update atualiza todo o conteúdo que nele estiver. Ele é sempre

chamado logo após cada frame. Mas não necessariamente depende desta chamada, o

método Update é independente do resto da aplicação.



O método Draw tem como objetivo gerenciar todo o conteúdo gráfico. É neste

método que todo o conteúdo gráfico será desenhado e atualizado sempre que for

preciso.



A separação destes dois métodos (Update e Draw) não parecem afetar muito o

desempenho do jogo no Xbox 360 mas no computador onde o usuário pode minimizar o

jogo toda hora e o jogo precisa continuar executando mesmo que o método Draw não

seja mais chamado.





6.3 Content Pipeline



O Content Pipeline é usado para compilar, importar e carregar recursos como

texturas, shaders, modelos 3D e arquivos de sons. Ele procura e adiciona

automaticamente os recursos sem precisar importar e transformar em um arquivo

binário.



Ao importar um modelo não é preciso compilar o projeto para verificar se o

modelo contém erros ou não, o XNA se encarrega da tarefa.

34



O Content Pipeline não é apensa uma DLL, ela é formada por cinco sub-

divisões, são elas:



Microsoft.Xna.Framework.Content.Pipeline.dll: contém as funções básicas

do Content Pipeline.



Microsoft.Xna.Framework.Content.Pipeline.EffectImporter.dll: usado para

compilar e importar shaders.



Microsoft.Xna.Framework.Content.Pipeline.FBXImporter.dll: é a maior

das DLLs e contém inúmeras funções para importar modelos no formato .fbx e possui

funcionalidades como skining e bones, bastante usadas em jogos 3D.



Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.dll: é a DLL

responsável por importar todas as texturas 2D. Usando as texturas em formato dds (

formato usado pelo DirectX ) se obtém uma performance ainda melhor, mas também

suporta os formatos .png, .jpg, .bmp e .tga.



Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll: usada para

importar os modelos 3D no formato .x



Contudo não é preciso ter estas DLLs para rodar o jogo, elas são apenas usadas

para compilar o projeto e ajudar na importação dos modelos e imagens.





6.4 XNA Audio Creation Tool (XACT)



Segundo Nitschke (2007), o XACT era uma ferramenta apenas para o XBOX

360 e era preciso ser um desenvolvedor certificado para ter acesso ao XDK( Xbox

Development Kit) para usa-lo, sem falar de sua alta complexibilidade. Até mesmo os

desenvolvedores de jogos com bastante experiência tinham que estudar bastante para

desenvolver em cima do XDK.



Mas tudo isso mudou e a Microsoft resolveu adicionar o XACT dentro do

DirectX SDK, tornando uma ferramenta importante para o XNA. Com isso também não

é mais necessário a instalação do DirectX SDK para acessar o XACT, pois o XNA

instala automaticamente a ferramenta.



Existem outras versões do XACT lançadas antes de outubro de 2006 que

podem não funcionar corretamente caso um projeto seja aberto ou convertido para esta

versão. No caso, a versão em questão é a 13, outras versões como a 11 e 12 podem não

35



ter suporte a algumas funcionalidades. A versão 13 também é representada pela Content

Version 41 no about do XACT, como mostra a imagem abaixo.









Figura 19: Versão do XACT.





Nitschke explica que no desenvolvimento do jogo usando o XACT, o

desenvolvedor não precisa se preocupar muito com algumas propriedades como,

volume e formato do som, essa função fica para o especialista na área de som. Inclusive

essa é uma nova área que aparece no desenvolvimento de jogos.





6.4.1 Projeto de som



Inicialmente o XACT cria um projeto vazio e não contém nem um arquivo de

som ou banco de sons disponível. Nitschke aborda a ferramenta da seguinte maneira.



A árvore do projeto que contém a estrutura dos elementos e que não podem ser

alterados.



Duas categorias padrões, default e musica, que pode ser usado para marcar os

arquivos de sons como efeitos ou musicas.



Uma variável global, SpeedOfSound (velocidade do som), que sempre é 343.5

e outras 4 variáveis, Cue Instance, separada em Distance, Doppler Pitch Scalar,

Number of cue Instances e Orientation Angle. Todas essas variáveis são importantes

para sons 3D.



Um caminho para efeitos globais.

36



Todo o restante da estrutura é iniciada em branco e deve ser adicionada

conforme sua necessidade.









Figura 20: Tela do XACT com a estrutura de um novo projeto.

7. PROPOSTA DE JOGO





A proposta de jogo consiste em desenvolver um jogo no gênero role play game,

utilizando gráficos 2D e sistema de colisão de tiles. A arte do jogo será desenvolvida

por um profissional de design a fim de tornar o jogo mais agradável.



O jogo conterá uma inteligência artificial simples que será implementado nos

inimigos, conforme diagrama abaixo.









Figura 21: Diagrama de I.A. do jogo proposto.

38



O objetivo do jogo será o personagem explorar o mapa e combater os inimigos

que aparecerem. Podendo comprar itens para equipar e deixar o personagem mais forte

e resistente. Conforme o personagem combate seus inimigos ele ganhará pontos de

experiência que por sua vez o fortalecerá com o tempo.



A documentação seguirá o exemplo do Game Design Document abordado no

trabalho.



O jogo será desenvolvido usando a tecnologia XNA e sua IDE Game Studio

Express. Os sons serão editados na ferramenta XACT.

8. CONSIDERAÇÕES FINAIS





Neste trabalho foi possível ver todos os processos envolvidos na criação de um

projeto de jogo até a escolha de ferramentas para desenvolvimento de cada fase do jogo.

Dentro dessa pesquisa foi possível planejar o desenvolvimento do jogo usando as

técnicas, documentação, foco para o desenvolvimento e o caminho a seguir para manter

uma idéia do inicio ao fim.

O planejamento inicial de um projeto demonstrou sua importância no resultado

final, mantendo a qualidade e expectativas do jogo.

9. BIBLIOGRAFIA





Perucia, Alexandre Souza, et. Al.(2005) Desenvolvimento de Jogos Eletrônicos, Porto

Alegre, Novatec.



Colnaghi Junior, Roberto. (2001) Programação de jogos de computador na

plataforma Windows – Teoria e prática, Novo Hamburgo, Trabalho de conclusão.



LaMothe, André. (1995) Black Art of 3D Game Programming, California, Waite

Group Express.



LaMothe, André. (1999) Tricks of the windows game programming gurus –

Fundamentals of 2D and 3D game programming, Estados Unidos, Sams.



Cawood, Stephen; McGee, Pat. (2007) Microsoft XNA Game Studio Creator’s

Guide, New York, Osborne.



Nitschke, Benjamin. (2007) Professional XNA Game Programming, Indiana, Wrox.



Stahler , Wendy (2004) Beginning Math and Physics for Game Programmers, New

Riders.



Azevedo, Eduardo (2005) Desenvolvimento de Jogos 3D e Aplicações em Realidade

Virtual, Editora Campus.



Barron, Todd (2001) Multiplayer Game Programming, Prima Tech



Buono, Salvatore A (2003) C# and Game Programming: A beginner´s Guide, A K

Peters LTD.



Harrison, Lynn T. (2003) Introduction to 3D Game Engine Design Using DirectX 9

and C#, Apress.



Pazera, Ernest (2001) Isometric Game Programming with DirectX 7.0, Prima Tech.



Feldman, Ari (2001) Designing Arcade Computer Game Graphics, Wordware.



Mulligan, Jessica, et Al (2003) Developing Online Games, New Riders.

41



McCuskey, Mason, et Al (2003) Especial Effects Game Programming with DirectX,

Premier Press.



Fernando, Randima et. Al (2003) Cg The Cg Tutorial – The Definitive Guide to

Programmable Real-Time Graphics, Addison Wesley.



Microsoft XNA Developer Center, Disponível em: Acesso em 17 set. 2007


Related docs
Other docs by HC111111032758
tw_1048
Views: 0  |  Downloads: 0
conference_2008
Views: 51  |  Downloads: 0
vbdb 1
Views: 0  |  Downloads: 0
Artem_Prokhorov_resume
Views: 0  |  Downloads: 0
Demo
Views: 0  |  Downloads: 0
ebooks 20subjects 201011
Views: 0  |  Downloads: 0
1724
Views: 0  |  Downloads: 0
IDE
Views: 2  |  Downloads: 0
PB11 Web Forms
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!