Sunteți pe pagina 1din 58

Bruno Pereira Evangelista

www.brunoevangelista.com

XNA um framework que possibilita uma alta produtividade no desenvolvimento de jogos Hoje mostraremos como iniciar o desenvolvimento de um jogo 3D com o XNA
No, ns no criaremos um jogo completo! =(

Mas mostraremos passo a passo vrios conceitos utilizados na criao de jogos 3D

Alguns dos tpicos abordados


Iniciando um novo jogo Adicionando assets ao jogo Desenhando malhas 3D Movendo objetos e cmera Configurando luzes Coliso

Vamos comear com partes mais tericas seguindo para partes mais prticas !!!

Software
Visual Studio C# Express + Service Pack 1.0 .NET Framework 2.0 SDK Game Studio Express Refresh 1.0 DirectX 9 Runtime (Dezembro 2006)

Hardware
Placa grfica compatvel com Shader Model 1.1 Recomendado Shader Model 2.0
GeForce 5200 ou superior!

Criando um novo projeto do XNA Game Studio Express

Classe base para todos os seus jogos Inicializa todos os recursos necessrio Possui um game loop definido
Single Thread Passos fixos ou variados de tempo

Mtodos
Initialize Load/UnloadGraphicsContent Update Draw

Objetos/Servios
GraphicsDeviceManager ContentManager

Objetos do mundo real podem ser representados computacionalmente atravs da malha de sua superfcie
Uma bola pode ser representada atravs da superfcie de uma esfera

10

11

12

O XNA possui um pipeline de contedo, que pode ser utilizado para compilar vrios assets do jogo
Os assets so importados em seu formato original, e transformado em um formato XML padro Em seguida os assets so processados, gerando objetos gerenciados de jogo Por fim, eles so compilados, gerando binrios otimizados para uso no windows ou Xbox 360

13

14

Para que um asset seja processado pelo pipeline de contedo basta adicion-lo ao projeto Em seguida ele pode ser carregados atravs do gerenciado de contedo (ContentManager)

HORA DE IMPLEMENTAR

15

16

Para gerarmos uma imagem da malha 3D carregada, a mesma precisa ser renderizada
No XNA no existe o pipeline de renderizao fixo preciso fazer o uso do pipeline programvel, utilizando Shaders! xD

Voc ainda no domina a programao de shaders?


No se preocupe, o XNA possui classes para abstrair a programao de shaders

17

Encapsula alguns dos algoritmos do fluxo de renderizao fixo utilizando shaders


Simula algumas funes do pipeline fixo Suporta os modelos de shader 1.1 e 2.0 Possui suporte a iluminao (vrtice/pixel), texturizao, fog e outros Ainda muito limitada: No suporta multitexturizao, luzes pontais ou spot e outros

18

Uma instncia do BasicEffect criada para cada modelo carregado que no possui um efeito
Para cada material "bsico" exportados criado um BasicEffect quando a malha carregada Ferramentas como o 3D Studio Max permitem exportar outros materiais, como efeitos

19

O que ainda precisamos fazer?


Criar e configurar a cmera pela qual o mesmo observado

A cmera pode ser configurada atravs da classe BasicEffect

20

Representadas atravs das matrizes de projeo e viso


Projeo: Como a cena tridimensional ser projetada para que possamos observ-la em um monitor 2D Viso: Posio e orientao da cmera no mundo

A classe Matrix do XNA possui vrios mtodos para auxiliar a criao de uma cmera

21

Projeo Perspectiva (Similar ao olho humano)


XNA: Matrix.CreatePerspectiveFieldOfView

22

Viso (Posiciona e orienta a cmera )


XNA: Matrix. CreateLookAt
Vetor cima Posio do Olho

Posio Observada

23

HORA DE IMPLEMENTAR

24

Sistema de coordenadas
Diferente do DirectX o XNA utiliza o sistema de coordenadas da mo direita

Sistema da mo esquerda

Sistema da mo direita

25

Ordenao de primitivas
Diferente do DirectX e do OpenGL, a ordenao de primitivas padro do XNA Clockwise (CW)
V1 V1

V3

Clockwise

V2

V2

Counterclockwise

V3

26

27

Um dos principais elementos responsveis em adicionar realismo a uma cena

DIRECIONAL

OMNIDIRECIONAL

HOLOFOTE
28

29

Equao de Iluminao de Phong

COMPONENTE AMBIENTE

COMPONENTE DIFUSA

COMPONENTE ESPECULAR

30

IMAGEM FINAL ADIO DE TODAS AS COMPONENTES

31

No XNA a iluminao pode ser configurada atravs da classe BasicEffect


Possui suporte apenas a fontes de luz direcionais Suporta at trs fontes de luz =( Utiliza o equao de Blinn-Phong para iluminao

Utilizando shaders voc pode criar seu modelo de iluminao e suas fontes de luz!

32

HORA DE IMPLEMENTAR

33

34

Tipos de entradas suportados pelo XNA


Controle Xbox 360 (Windows e Xbox 360) Teclado (Windows e Xbox 360) Mouse (Windows)

35

Classes de estado dos dispositivos


GamePadState KeyboardState MouseState

Classes dos dispositivos (Utilizadas para ler o estado dos mesmos)


GamePad Keyboard Mouse

36

HORA DE IMPLEMENTAR

37

Existm vrios tipos de cmeras diferentes que podemos utilizar em um jogo


Cmera em primeira pessoa / terceira pessoa Cmera fixa / dinmica Cmera com trajeto animado

Vamos implementar uma cmera para o jogo


Cmera em terceira pessoa Segue o personagem a uma distncia fixa Pode ser rotacionada

38

HORA DE IMPLEMENTAR

39

40

O pipeline de contedo do XNA possui suporte nativo aos formatos de modelo .FBX (Autodesk) e .X (DirectX)
Nesta seo mostraremos como fcil exportar modelos e carregar os mesmos no XNA

HORA DE IMPLEMENTAR

41

42

Existem vrias maneiras de testar a coliso entre objetos


Utilizar a malha real do objeto Utilizar uma malha simplificada do objeto Utilizar o fecho convexo do objeto Utilizar volumes de coliso

43

Mais rpido

Esferas

AABB

OOBB

Malha
Tringulos

Mais preciso ?

44

O XNA j possui vrias classes que podem auxiliar no clculo de colises


BoundingFrustum BoundingSphere BoundingBox (AABB) Plane Ray

45

Cada malha processada pelo pipeline de contedo possui um BoundingSphere


Mas muitas vezes desejamos usar outros slidos de coliso Alm disso, no gerado um slido de coliso para todo o modelo

Para gerarmos outros slidos de coliso podemos extender o processador de modelos do XNA

46

HORA DE IMPLEMENTAR Utilizar novo processador de modelos Adicionar coliso com o cho e objetos

47

48

Para adicionar um pouco mais de ao ao jogo vamos deixar que o jogador possa pular
Para isso basta adicionar uma gravidade a cena

Note que no queremos simular uma gravidade real


Queremos apenas que o efeito final seja agradvel ao jogador Alm disso, utilizar acelerao pode causar problemas no nosso sistema de coliso

49

HORA DE IMPLEMENTAR

50

51

O XNA possui classes que facilitam a escrita na tela utilizando qualquer tipo de fonte As fontes so criadas a partir de arquivos SpriteFont
Arquivo XML que descrevem como construir uma textura para uma determinada fonte de texto Podem ser criados pela IDE do GameStudioExpress

Os SpriteFonts so assets que so carregados normalmente pelo pipeline de contedo

52

Para desenharmos objetos 2D como sprites e textos podemos utilizar a classe SpriteBatch
Realiza o desenho dos objetos em lote, permitindo um aumento de desempenho Encapsula todo o processamento necessrio para desenhar os objetos utilizando shaders

53

HORA DE IMPLEMENTAR

54

55

Objetivo do jogo
Coletar o maior nmero de esferas at o tempo acabar No muito desafiador, mas no vamos comear fazendo um Gears of War ^^

NO DA MAIS TEMPO DE IMPLEMENTAR VAMOS VER O JOGO! =)

56

Projeto de jogo de tiro em primeira pessoa desenvolvido com XNA


Demo criado em 1 ms Equipe de 3 pessoas

57

Criar jogos com o XNA fcil e divertido No perca mais seus dias criando
Cdigos para criar e gerenciar janelas Importadores de modelos, texturas, etc Classes de matemtica Loop de jogos E vrias outras coisas chatas

Crie algo novo j na sua primeira linha de cdigo !!!

58

Bruno P. Evangelista
bpevangelista@gmail.com Home Page www.brunoevangelista.com

"De fato, que aproveitar ao homem ganhar o mundo inteiro mas perder sua alma?" Mateus 16, 26

S-ar putea să vă placă și