Desenvolvimento De Jogos Na Plataforma Xna

Post on 20-Jun-2015

3.785 views 0 download

Transcript of Desenvolvimento De Jogos Na Plataforma Xna

DESENVOLVIMENTO DE JOGOS NA

PLATAFORMA XNAEllison Leão

Universidade Federal de AlagoasInstituto de Computação

Curso de Ciência da Computação

Sumário Introdução A Plataforma XNA

O começo de tudo Versões do DirectX e suas características A plataforma .NET O console da Microsoft O que é a plataforma XNA? Considerações de Performance XNA versus Outros

Implementando o Jogo Tube Raid Visão Geral do Jogo Visão Matemática do jogo Principais Classes Loop Principal

Introdução

Indústria de Games atualInvestimento de milhões de dólaresJogadores mais próximos dos jogos

Interatividade

Introdução

Introdução

A plataforma XNA

O começo de tudoProgramadores desbravadores:

○ Necessidade de um conhecimento sucinto de linguagens de baixo nível.

Windows 95 – Uma “salvação”:○ Nasce o DirectX ou também chamada de

Windows Game SDK○ DirectX = DirectDraw + DirectSound +

DirectPlay○ Acesso as placas gráficas pelo HAL.

A plataforma XNA As versões do DirectX e suas características

A plataforma XNA As versões do DirectX e suas características

A plataforma XNA As versões do DirectX e suas características

Algumas peculiaridades○ DirectX 6 – Bump Mapping mapeado pelo ambiente.○ DirectX 7 – Transformação e iluminação no chip gráfico.○ DirectX 8 – Introdução dos Shaders. Pixel Shader e Vertex

Shader.

A plataforma XNA A plataforma .NET

Semelhante à plataforma JAVA, criada com o intuito de criar uma plataforma única de desenvolvimento e execução de sistemas.

Criada com o intuito de abranger todas as aplicações para o sistema operacional Windows.

Suporta mais de 20 linguagens de programação.

A plataforma XNA Arquitetura .NET

Todo o funcionamento da plataforma é realizado dentro de uma Infraestrutura chamada de CLI (Common Language Infrastructure).

A implementação da Microsoft para essa CLI é chamada de CLR (Common Language Runtime).

A plataforma XNA Arquitetura .NET

A plataforma XNA .NET Compacto

Versão reduzida do framework visando sistemas embarcados.

Possui algumas bibliotecas da versão full e algumas bibliotecas restritas e específicas para o uso da telefonia móvel.

Xbox360 roda sobre uma versão do .NET compacto.

A plataforma XNA O console da Microsoft.

XBOX 1ª geração○ Marcou o ingresso da Microsoft na indústria dos

games.○ Foi o primeiro console de sexta geração a utilizar um

disco rígido.

A plataforma XNA O console da Microsoft. [6]

XBOX 1ª geração○ Características de hardware:

Possui um processador de 733Mhz da Intel, o qual pode ser considerado como um Pentium III da época.

Possui uma placa gráfica da NVidia, série NV2A, rodando a 250Mhz

Possui rede Ethernet 10/100-T.

A plataforma XNA O console da Microsoft.

XBOX 2ª geração○ Lançado em maio de 2005, para concorrer com as

superpotências de consoles de 7ª geração.○ Trouxe a interatividade para os usuários.○ Fez parcerias com IBM, SiS, ATi.

A plataforma XNA O console da Microsoft.

XBOX 2ª geração○ Características de Hardware:

Possui processador Xenon de 3 núcleos de 3,2Ghz cada. executando simetricamente, com memória cache L2 de 1Mb.

Possui placa gráfica ATI 512Mb, de 700MHz GDDR3.Possui disco rígido de até 120Gb (dependendo da

versão2), com uma unidade de DVD-ROM dupla camada de 12x.

A plataforma XNA XNA Framework

É uma implementação nativa do framework .NET compacto para o XBOX360 e do .NET completo para o PC.

Roda sobre uma CLR, mas o desenvolvimento de jogos fica restrito à linguagem C#.

Encapsula detalhes de baixo nível.

A plataforma XNA XNA Framework

Arquitetura

A plataforma XNA XNA Build [4]

Conjunto de ferramentas que otimizam o código. Bastante utilizado em jogos de larga escala. Coordena o Game Asset Pipeline. Exemplo de utilização no XNA Build: Estudo de caso de

Brian Keller no jogo MechCommander 2.

A plataforma XNA XNA Game Studio

IDE própria para desenvolvimento de jogos Baseada no Visual Studio. Inicialmente criada com 2 versões:

○ XNA Game Studio Express○ XNA Game Studio Professional

A plataforma XNA XNA Game Studio

A plataforma XNA Considerações de Perfomance

Tom Miller diz – “60 fps é o mínimo aceitável” [2] Regra 80-20. “20% do código faz 80% do trabalho” Classe Microsoft.Xna.Framework.Game do XNA realiza

trabalho de aumento na perfomance. 3 principais métodos são importantes:○ Update()○ Draw()○ LoadGraphicsContent()

Todas as classes criadas obrigatoriamente herdam a classe Game.

A plataforma XNA Considerações de Perfomance

HLSL – High Level Shader Language○ Linguagem padrão de acesso às placas gráficas (GPUs).○ Até 2001 o acesso era feito pelo FFP(Fixed Function

Pipeline) do DirectX.○ Permite uma “conversa” em alto nível com as placas, sem a

necessidade de utilização de linguagem Assembly.

A plataforma XNA XNA vs. outros Frameworks

Jfrog [1]○ Tese de mestrado de João Ricardo Bittencourt○ Visa a criação de game engines tanto para desktops, quanto

para sistemas embarcados○ É livre.

A plataforma XNA XNA vs. outros Frameworks

Crystal Space○ Desenvolvido, inicialmente, para criar aplicações 3D

genéricas.○ É escrito em C++ e utiliza algumas funções da biblioteca

ODE e Bullet para o tratamento da física.○ Criação de aplicações modularizadas (plugins).

○ É livre.

A plataforma XNA XNA vs. outros Frameworks

Guff[5]○ Criado a partir da tese de mestrado de Luís Valente.

○ Seu princípio se dá pela reutilização de funções de outras bibliotecas já existentes como OpenGL, GLEW e SDL.

○ É livre.

Implementando o Jogo Tube Raid Visão Geral do Jogo

Inspirado no famoso jogo River Raid do Atari 2600. Jogador guia uma nave ao longo de uma superfície

tubular. Jogador deve desviar de alguns obstáculos e coletar

outros para fazer pontos.

Implementando o Jogo Tube Raid Visão Geral do Jogo

Alguns Screenshots do jogo.

Implementando o Jogo Tube Raid Visão Matemática do jogo

Superfície tubular - Definição○ Rotação de um ponto P ao longo de um raio r , para cada

ponto da curva geratriz r(t). Após a escolha da curva, são calculados também, ao

longo da curva, 3 vetores:○ Vetor Tangente

Por definição

Implementando o Jogo Tube Raid Visão Matemática do jogo

○ Vetor Normal Por definição

○ Vetor Binormal

Implementando o Jogo Tube Raid Visão Matemática do Jogo

3 curvas geratrizes existem no jogo:○ Círculo

Por definição

Onde a e b são coordenadas do centro e r, o raio da circunferência.

Implementando o Jogo Tube Raid Visão Matemática do Jogo

3 curvas geratrizes existem no jogo:○ Hélice

Por definição

Implementando o Jogo Tube Raid Visão Matemática do Jogo

3 curvas geratrizes existem no jogo:○ Senóide

Por definição

○ Onde: A - Amplitude da curva.

B - Relaciona-se com o período da função (2π/|B| ). C - Translação Horizontal. D - Translação Vertical.

Implementando o Jogo Tube Raid Principais Classes

Classe Curve

Implementando o Jogo Tube Raid Principais Classes

Classe Circle:Curve Classe Senoid:Curve Classe Helix:Curve Classe Tube

Implementando o Jogo Tube Raid Loop Principal

Método Update()○ Atualiza a movimentação da nave dentro da superfície de

acordo com a tecla pressionada.

○ Verifica o intervalo de atualização para o desenho de uma novo “pedaço“ da superfície.

Método Draw()○ Desenha na tela a superfície gerada com a respectiva

iluminação e textura.○ Desenha na tela as novas posições da nave ao longo da

superfície.○ Desenha na tela o score e estado do escudo atuais.○ Verifica o teste de colisão.

Conclusão

Bibliografia [1] Bittencourt, J. R. & Giraffa, L. M. (2004), ‘Desenvolvendo

jogos computadorizados multiplataforma com amphibian’, V Workshop sobre Software Livre, Porto Alegre: SBC, 2004, 119-122p.

[2] Carter, C. (2007), Sams Microsoft XNA Unleashed, Sams. [3] Landry, N. (2007), ‘Microsoft xna: Reasons for purchasing an

xbox 360’ [4] Nitschke, B. (2007), Professional XNA Game Programming:

For Xbox 360 and Windows, Wiley Publishing, Inc. [5] Valente, L. & (Advisor), A. C. (2005), ‘Guff: A game

development tool’, IV Workshop de Teses e Dissertações em Computação Gráfica e Processamentode Imagens, SIBGRAPI.

[6] Wikipédia (2008c), ‘Xbox — wikipédia, a enciclopédia livre’. URL http://pt.wikipedia.org/w/index.php?title=Xbox&oldid=9259408.