A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Alexandre Tolstenko Nogueira

Apresentações semelhantes


Apresentação em tema: "Alexandre Tolstenko Nogueira"— Transcrição da apresentação:

1

2 Alexandre Tolstenko Nogueira
Apresentação Alexandre Tolstenko Nogueira

3 Objetivo do Curso Divulgar nosso trabalho;
Encontrar pessoas determinadas; Formar um grupo forte e unido; Fazer crescer o Gamux; Ganhar campeonatos e chamar atenção!

4 Ao final do curso: Noções básicas do framework XNA;
Estruturação de um jogo simples, porém completo (braistorm, planejamento, definindo limites);

5 NÃO ensinaremos: Desenhar (mas vamos usar muitos);
Compor músicas (mas vamos colocar elas nos jogos); Ganhar dinheiro (por hora...);

6 Devaneios O que vou aprender com esse curso?
Pergunta errada... -> atitude passiva. O que quero aprender? (melhorou) Tudo irá depender do seu interesse! Quero programar um MMO-RPG ou talvez um Crysis? Eu também quero! Mas... Será se consigo?

7 Devaneios Não apenas basta querer, tem que se empenhar, mas além de tudo temos que saber dimensionar o que queremos. Guardem bem isso: Temos que saber dimensionar nossos objetivos! Como aprendo isso? Sentindo como se programa jogos simples!

8 PONG (Sons de carteiras quebrando e teclados sendo arremessados; grunhidos tímidos de desespero do garoto do fundo que queria fazer um jogo da Barbie...)

9 Teoria Prática

10 Carregar e desenhar imagens na tela Estrutura e organização básica
Teoria XNA Componentes Camadas Facilidades Pong Carregar e desenhar imagens na tela Estrutura e organização básica Colisões

11 XNA Componentes Framework Graphics Audio Input Math Storage Network

12 Pipeline de Conteúdo (content pipeline)
XNA Camadas Jogos Starter Kits Código Conteúdo Componentes Framework (extensões) Modelo de Aplicação Pipeline de Conteúdo (content pipeline) Framework (núcleo) Graphics Audio Input Math Storage Network Plataforma Direct3D XACT XINPUT XCONTENT Legenda XNA já provê Você cria Comunidade

13 Facilidades (algumas)
Renderização de baixo nível Recursos oferecidos Model, Mesh, Bones; Texturas, Audio, Vídeo e outros conteúdos; Efeitos e Shaders; Redes SpriteBatch para 2D e partículas BasicEffect facilita apresentar objetos 3D

14 Modelagem Computacional Carregar e desenhar imagens na tela
Teoria XNA Pong História Objetivo Modelagem Computacional Carregar e desenhar imagens na tela Estrutura e organização básica Colisões

15 História Criadores: Nolan Bushnell e Ted Dabney O que é?
O videogame Pong consiste em um console ligado a um monitor e era movido a moedinhas.

16 História (ou estória?) Os inventores deixaram a máquina em um bar em San Francisco, Califórnia. No dia seguinte, tiveram uma surpresa quando checaram a máquina e viram que ela estava lotada de moedas. Aquelas moedas mudaram toda a perspectiva que os criadores tinham em relação a seu invento. Aí estava o primeiro videogame lucrativo da história. Ao invés de vender a idéia para alguém, era melhor abrir o seu próprio negócio. E em 27 de Junho de 1972, a empresa Atari foi fundada.

17 Objetivo Objetivo: O objetivo era acertar a esfera (bola) com sua raquete (barra vertical) e lançar para o campo adversário, marcando ponto quando a bola passasse ao campo adversário.

18 Modelagem Computacional
O que precisa para representar o PONG? Ball (ou quadrado); Paddle (ou barra); Como representar esses elementos? Retângulo Imagem ou Textura

19 Carregar e desenhar imagens na tela
Teoria XNA Pong Carregar e desenhar imagens na tela Rectangle Texture2D SpriteFont Códigos Estrutura e organização básica Colisões

20 Rectangle Rectangle(X, Y, Width, Height) Width (X,Y) Height

21 Texture2D Imagem a ser mapeada no retângulo para ser exibida na tela.

22 Font Implementações: Imagens (veremos como fazer isso em outra aula);
Compilado a partir de fontes.

23 Códigos Rectangle: Vector2: Declaração: Rectangle ball_rect;
Alocação: ball_rect = new Rectangle(X,Y,Width,Height) Acesso: ball_rect.X = numero_inteiro; Vector2: Declaração: Vector2 pos_texto; Alocação: pos_texto = new Vector2(X,Y) Acesso: pos_texto.X = numero_float;

24 Códigos Texture 2D: Declaração: Texture2D ball; Carregamento:
ball = Content.Load<Texture2D>("whitepixel"); ball = Texture2D.FromFile(GraphicsDevice, "Content/whitepixel.png"); Desenhando: spriteBatch.Begin(); spriteBatch.Draw(ball, position, Color.White); spriteBatch.End();

25 Códigos SpriteFont: Declaração: SpriteFont Font; Carregamento:
font= Content.Load<SpriteFont>(“Fonte"); //aonde “Fonte” foi previamente adicionado ao projeto. Desenhando: spriteBatch.Begin(); spriteBatch.DrawString(font, pos_texto,”texto”, Color.White); spriteBatch.End(); Dica útil: Vector2 m_string = font.MeasureString(“Texto");

26 Códigos Captura de dados para o teclado:
public override void Update(GameTime gameTime) { ... KeyboardState keyboardState = Keyboard.GetState(); if (keyboardState.IsKeyDown(Keys.Up)) Posicao.Y -= 10; if (keyboardState.IsKeyDown(Keys.Down)) Posicao.Y += 10; if (keyboardState.IsKeyDown(Keys.Left)) Posicao.X -= 10; if (keyboardState.IsKeyDown(Keys.Right)) Posicao.X += 10; }

27 Carregar e desenhar imagens na tela Estrutura e organização básica
Teoria XNA Pong Carregar e desenhar imagens na tela Estrutura e organização básica Declarações de Variáveis Construtor Initialize LoadContent Update Draw UnloadContent Colisões

28 Estrutura e Organização Básica
Váriaveis: Declaração de variáveis da classe. Construtor: Game1() -> possui o mesmo nome da classe. Executado quando se instancia um objeto do da Classe Initialize() Inicializações gerais do jogo LoadContent() Chamado sempre que é necessário carregar os recursos (conteúdos) UnloadContent() Chamado sempre que é necessário liberar os recursos (conteúdos) A cada game loop(60.ticks/seg): Update Onde se coloca a lógica principal do jogo (cálculos) Draw Onde se colocam as rotinas de desenho do jogo

29 Carregar e desenhar imagens na tela Estrutura e organização básica
Teoria XNA Pong Carregar e desenhar imagens na tela Estrutura e organização básica Colisões Retangular ...

30 Colisão retangular Sintaxe XNA para Rectangle:
update_objects(){ for (each_object) save_old_position(); calc new_object_position {based on velocity accel. etc.} if (collide_with_other_objects()) new_object_position = old_position(); {or if destroyed object remove it etc.} } Sintaxe XNA para Rectangle: if(rect1.Intersects(rect2))

31 … Pixel a Pixel; Circular; Poligonal; OBB; AABB; Portal; BSP;
Quadtree; Octree; Vertex-in-triangle; … (ad infinitum).

32 Teoria Prática

33 Prática Prática: Desafio: Pong com colisão simples.
Opcional: transformar o pong em Breakout Desafio: Pong com colisão vetorial, poligonal ou outra técnica mais avançada.

34 Referências http://pt.wikipedia.org/wiki/Pong http://www.gamespp.com

35 Agradecimento spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!",
positionVect, Color.Black);


Carregar ppt "Alexandre Tolstenko Nogueira"

Apresentações semelhantes


Anúncios Google