1 / 35

XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora

XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora. Alexandre Santos Lobão contato@AlexandreLobao.com. Quem sou eu?. Agenda. Visão Geral do XNA Tutorial – um jogo em 1 hora Gráficos Game Components Input Detecção de Colisão Sons Uso de fontes. Proposta.

bikita
Download Presentation

XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora

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. XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora Alexandre Santos Lobão contato@AlexandreLobao.com

  2. www.alexandrelobao.com Quem sou eu?

  3. Agenda • Visão Geral do XNA • Tutorial – um jogo em 1 hora • Gráficos • Game Components • Input • Detecção de Colisão • Sons • Uso de fontes

  4. Proposta Iniciativa da Microsoft parafacilitar e popularizar o desenvolvimento de jogosdigitais, permitindo a suacriaçãoatravés de linguagemC#e ricasAPIsde desenvolvimento

  5. Universidade Canal de talentos Technology Crescimento

  6. XNA Game Studio • Desenvolvimentopara Xbox 360 • Arquitetura simples paracriação de jogos 2006 2007 • Multiplayer, Visual Studio • Adotadoem 700 universidadesamericanas • 4 contratosXBLA nacompetição Dream Build Play 2008 • Jogosdacomunidade no Xbox LIVE • Desenvolvimento de jogospara Zune • SuporteaoXbox LIVE Arcade

  7. Network Graphics Audio Input Math Storage Componentes do XNA Game Studio Framework

  8. XNA Framework Camadas Jogos Starter Kits Código Conteúdo Componentes Framework (extensões) Framework 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

  9. Arquitetura de um programa XNA • Ao se criar um projeto, são gerados dois arquivos: • Program.cs • Game1.cs

  10. Arquitetura de um programa XNA • Métodos chamados pela classe Game • 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: • Update • Onde se coloca a lógica principal do jogo (cálculos) • Draw • Onde se colocam as rotinas de desenho do jogo

  11. XNA Framework - Graphics • Fornece recursos de renderização de baixo nível • Construídoemcima do Direct3D 9 • Recursosoferecidos • Model, Mesh, Bones • Texturas • Efeitos e Shaders • BasicEffectfacilitaapresentarobjetos 3D • SpriteBatchpara 2D e partículas

  12. Tutorial – passo 1 • Carregando texturas • Bola, tijolos e bastão

  13. Desenho de objetos 2D • Na classe game1: private Texture2D textura; • No Método LoadGraphics: textura = content.Load<Texture2D>("xna_thumbnail"); • No Método UnloadGraphics: textura.Dispose(); No Método Draw: SpriteBatch.Begin(SpriteBlendMode.AlphaBlend); SpriteBatch.Draw(textura, Vector2.One, Color.White); SpriteBatch.End();

  14. “Components” de um game • Coleção Components da Classe Game • Informa ao XNA quais os componentes do jogo • Passos para criar um componente: • Criar uma classe derivada de GameComponent • Criar um objeto desta classe • Adicionar o objeto ao Game usando: this.Components.Add(objeto); • O XNA automaticamente chama os métodos Update e Draw do objeto, se existirem

  15. “Components” de um game Uma classe derivada de GameComponent class clsSprite : GameComponent { public Texture2D textura; // sprite texture public Vector2 posicao; // sprite posicao on screen public Vector2 velocidade; // velocidade in pixels public clsSprite(Game game, Texture2D Textura, Vector2 Posicao) : base(game) { textura = Textura; posicao = Posicao; } }

  16. Tutorial – passo 2 • Criando um game component • Movimentando a bola

  17. XNA Framework - Input Xbox 360 controller • 11 botões • 2 triggers (alavancas) • 2 direcionais analógicos • 1 direcional digital • Dois motores de vibração GamePadState state = GamePad.GetState(PlayerIndex.One); GamePad.SetVibration(PlayerIndex.One, 1.0f, 1.0f);

  18. Tratamento de input do usuário Podemos ler o estado do GamePad... public override void Update(GameTime gameTime) { ... // Muda a posição usando o thumbstick da esquerda GamePadState gamePad = GamePad.GetState(PlayerIndex.One); Posicao.X += gamePad.ThumbSticks.Left.X; Posicao.Y -= gamePad.ThumbSticks.Left.Y;

  19. Tratamento de input do usuário 2. Alterar o método Update para tratar o input do usuário - Teclado public override void Update(GameTime gameTime) { ... // muda a posição usando o teclado 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;

  20. Tutorial – passo 3 • Recebendo input do usuário • Controle do bastão com o gamepad

  21. Detecção de colisão • Todo jogo precisa disso! public bool Colidiu(clsSprite sprite) { // Verifica se colidiu com a sprite if (this.posicao.X + this.textura.Width > sprite.posicao.X && this.posicao.X < sprite.posicao.X + sprite.textura.Width && this.posicao.Y + this.textura.Height > sprite.posicao.Y && this.posicao.Y < sprite.posicao.Y + sprite.textura.Height) return true; else return false; }

  22. Tutorial – passo 4 • Detecção de colisão • Fazendo a bola quicar no bastão e tijolos

  23. Uso de Audio com XACT • Para que o som seja utilizável tanto no Windows quanto no Xbox 360, é necessário converter os sons em “Sound banks”, • Cada “Sound bank” é composto por “Wave banks” • Cada “Wave Bank” arnazena diversos arquivos (formato WAV ou AIF apenas) • Formatos mais “profissionais”, sem perda de informação como o MP3

  24. Uso de Audio com XACT • Para incluir um som no jogo: • Gerar o arquivo de som XACT • Incluir o arquivo no jogo • Utilizar o som via Content Pipeline

  25. Uso de Audio com XACT Utilizando sons via ContentPipeline • Criação dos objetos // Audio objects AudioEngineaudioEngine; WaveBankwaveBank; SoundBanksoundBank; protected override void Initialize() { audioEngine = new AudioEngine("MySounds.xgs"); waveBank = new WaveBank(audioEngine, "Wave Bank.xwb"); soundBank = new SoundBank(audioEngine, "Sound Bank.xsb"); base.Initialize(); }

  26. Uso de Audio com XACT Utilizando sons via ContentPipeline • Gerar um efeito sonoro (som sem loop) soundBank.PlayCue("chord"); • Tocar música de fundo (som com loop) // Iniciar a música myLoopingSound = soundBank.GetCue("notify"); myLoopingSound.Play(); // Pararoucontinuar a música if (myLoopingSound.IsPaused) myLoopingSound.Resume(); else myLoopingSound.Pause();

  27. Tutorial – passo 5 • Colocando som no jogo • Música de fundo e efeitos sonoros

  28. Uso de Fontes no XNA • Incluir novo item do tipo “SpriteFont” • Configurar parâmetros da fonte <FontName>Arial</FontName> <Size>14</Size> <Spacing>2</Spacing> <Style>Regular</Style> <CharacterRegion><Start>&#32;</Start> <End>&#126;</End> • Utilizar a fonte • Na classe Game1.cs SpriteFont fonteArial; • No método Initialize() fonteArial = content.Load<SpriteFont>("FonteArial"); • No métodoDraw() mySpriteBatch.Begin(); mySpriteBatch.DrawString(fonteArial, “Hello World!", Vector2.One, Color.Yellow); mySpriteBatch.End();

  29. Tutorial – passo 6 • Escrevendo com XNA • Número de vidas, game over

  30. Conclusões

  31. Hádiversascomunidades… Dezenas (centenas?) jogos – muitoscom fonteaberto! Dezenas (centenas?) de comunidadesativas!

  32. E diversos “Starter Kits”…

  33. Porondecomeçar? • Baixe o XNA Game Studio hojemesmo! • Baixeessaapresentação e outrosrecursos XNA no SharpGames! • www.sharpgames.net • Comunidade brasileira para desenvolvimento de jogos! • Artigos, links, downloads, XNA, DirectX, Projeto Hoshimi e muito mais! • XNA Developer Center • http://msdn.microsoft.com/xna/ • XNA Creators Club • http://creators.xna.com/

  34. Livros

  35. AlexandreLobão Professor dapós-graduaçãoemJogosEletrônicos do IESB ColunistadaRevistaOficial do Xbox 360 Escritor e roteirista www.AlexandreLobao.com

More Related