1 / 35

Apresentação

Apresentação. Alexandre Tolstenko Nogueira alexandre@tolstenko.net http://tolstenko.net http://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!.

elijah
Download Presentation

Apresentação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Apresentação Alexandre Tolstenko Nogueira alexandre@tolstenko.net http://tolstenko.net http://forum.gamux.com.br

  2. 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!

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

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

  5. 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?

  6. 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!

  7. 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...)

  8. Network Graphics Audio Input Math Storage XNA Componentes Framework

  9. 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 XNA jáprovê Vocêcria Comunidade Legenda

  10. Facilidades (algumas) • Renderização de baixo nível • Recursosoferecidos • Model, Mesh, Bones; • Texturas, Audio, Vídeo e outrosconteúdos; • Efeitos e Shaders; • Redes • SpriteBatchpara 2D e partículas • BasicEffectfacilitaapresentarobjetos 3D

  11. História • Criadores: • NolanBushnell e Ted Dabney • O que é? • O videogamePong consiste em um console ligado a um monitor e era movido a moedinhas.

  12. 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.

  13. 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.

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

  15. Rectangle • Rectangle(X, Y, Width, Height) • Width • (X,Y) • Height

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

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

  18. Códigos • Rectangle: • Declaração: Rectangleball_rect; • Alocação: ball_rect = newRectangle(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;

  19. 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();

  20. Códigos • SpriteFont: • Declaração: SpriteFontFont; • 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");

  21. 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; ... }

  22. Estrutura e OrganizaçãoBásica • Váriaveis: • Declaração de variáveis da classe. • Construtor: • Game1() -> possui o mesmonomedaclasse. • Executadoquando se instancia um objeto do daClasse • 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

  23. Colisãoretangular 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))

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

  25. Prática • Prática: • Pong com colisão simples. • Opcional: transformar o pong em Breakout • Desafio: • Pong com colisãovetorial, poligonalououtratécnicamaisavançada.

  26. Referências • http://pt.wikipedia.org/wiki/Pong • http://www.gamespp.com • http://www.alexandrelobao.com/

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

More Related