apresentação alexandre tolstenko nogueira alexandre@tolstenko.net
Post on 21-Apr-2015
110 Views
Preview:
TRANSCRIPT
Apresentação
Alexandre Tolstenko Nogueiraalexandre@tolstenko.net
http://tolstenko.nethttp://forum.gamux.com.br
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!
Ao final do curso:
• Noções básicas do framework XNA;• Estruturação de um jogo simples, porém
completo (braistorm, planejamento, definindo limites);
NÃO ensinaremos:
• Desenhar (mas vamos usar muitos);• Compor músicas (mas vamos colocar elas
nos jogos);• Ganhar dinheiro (por hora...);
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?
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!
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...)
Teoria Prática
Teoria
XNA
Componentes Camadas Facilidades
PongCarregar e desenhar
imagens na tela
Estrutura e organização
básicaColisões
11
XNA Componentes
Framework
Graphics Audio Input Math Storage Network
XNA Camadas
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
Jogos Starter Kits Código Conteúdo Componentes
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
Teoria
XNA Pong
História Objetivo Modelagem Computacional
Carregar e desenhar
imagens na tela
Estrutura e organização
básicaColisõ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
Teoria
XNA PongCarregar e desenhar
imagens na tela
Rectangle Texture2D SpriteFont Códigos
Estrutura e organização
básicaColisões
20
Rectangle
• Rectangle(X, Y, Width, Height)
(X,Y)
Width
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:– 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; ...}
Teoria
XNA PongCarregar 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
Teoria
XNA PongCarregar e desenhar
imagens na tela
Estrutura e organização
básicaColisões
Retangular ...
30
Colisão retangularupdate_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).
Teoria Prática
33
Prática
• Prática:–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• http://www.alexandrelobao.com/
35
Agradecimento
spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!", positionVect, Color.Black);
top related