Introdução ao XNA

  • 829 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
829
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Introdução ao XNA e aoXNA Game DeveloperJosé Antonio “jalf” Leal de FariasMicrosoft Most Valuable ProfessionalSharpgames Team jalf@sharpgames.net http://www.sharpgames.net
  • 2. Agenda O que é XNA?? XNA Game Studio XNA Framework Xbox 360 Xbox Live Community Games Criando um Jogo Aprendendo XNA
  • 3. O que é XNA?? XNAs Not Acronymed (não é uma sigla) Plataforma de desenvolvimento de jogos com foco no jogo e não na tecnologia XNA Game Studio XNA Framework
  • 4. Um pouco de história…. XNA Game Studio Express 1.0 lançado em12/2006 Foco não profissional ?? XNA Game Studio 2.0 lançado12/2007 XNA Game Studio Professional?
  • 5. XNA Game Studio XNA Game Studio Extende o Visual Studio para a criação de jogos com C# XNA Framework Framework Cross-platform game framework e runtime Xbox 360 CLR Versão Customizada do .NET Compact Framework
  • 6. XNA Framework Games Your Code Your Content Components Starter Kits Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Networking Gamer Services Platform DirectX XDK .NET Framework .NET CF
  • 7. Games Starter Kits Code Content CompsModelo de Aplicação Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContentMantenha-se focado no jogo e não em qual plataforma ele está rodando Configurado e rodando rapidamente As primeiras linhas de código já serão para seu jogo. Abstração de Plataforma Qual a melhor maneira de criar um game loop? Como eu crio e gerencio minha janela? Como eu sigo as melhores práticas para a plataforma? Game É o tipo principal de seu jogo Eventos de Load, Update e Draw
  • 8. Games Starter Kits Code Content CompsModelo de Aplicação Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContentCrie componentes reusáveis que podem facilmente ser integrados ao seu jogo GameComponent, DrawableGameComponent Base para todos os componentes XNA O Autor escreve o Load, Update, e Draw Pode descobrir e interagir com outros componentes Game.Components Gerenciado em tempo de execução pelo jogo Grande suporte a „design time‟ pelo IDE
  • 9. Games Starter Kits Code Content CompsXNA Framework Content Pipeline Extended Framework Application Model Content PipelinePrincípios de Design Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Liberdade de escolha Ferramenta de criação de conteúdo Game engines Menos código para a criação Mais tempo para a criação do jogo Forte integração entre código e conteúdo Build de código e de conteúdo unificados
  • 10. XNA Framework Content Pipeline Importadores Conteúdo de jogo adicionado ao Visual Studio 3D File 3D File 2D File Material File Audio File 2D File Material File Audio File Formats Formats Formats Formats Formats Formats Formats Formats .FBX .FBX .DDS .BMP .DDS .BMP .FX .FX .XAP (XACT) .XAP (XACT) .X .JPG .PNG Processadores .X .JPG .PNG .TGA .TGA Conversões de tipo altamante tipadas Extensões de código gerenciado ContentManager xnaLoader = new ContentManager(); myAsset = xnaLoader.Load<Mesh>("MyAssetName");
  • 11. Xbox 360 Lançado em Novembro de 2005 Xbox Live Novos conceitos para os jogadores Um grande passo para o mundo dos games…
  • 12. Xbox Live Community Games
  • 13. Xbox Live Community Games
  • 14. XNA 3.0Todo o suporte já criadomelhoradoSuporte ao ZuneZune, Xbox e Windows juntos?Final de 2008!!!
  • 15. XNA 2D game“Rock Rain” Construção de um jogo simples O jogador deve guiar a nave evitando os asteróides É um jogo 2D simples, baseado em sprites
  • 16. Construção de um jogo em XNABasedo na forma como um jogo funciona Todo jogo tem algums comportamentos fundamentais:1. Inicializa todos os recursos no início Inicializa todas as texturas, modelos, som, etc2. Continuamente roda o Game Loop: 1. Atualiza a game engine Lê os controladores, atualiza o estado e a posição dos game elements 2. Desenha o ambiente do jogo renderiza os game elements na tela
  • 17. Esqueleto de um jogo XNA partial class Game1 : Microsoft.Xna.Framework.Game { public Game1() { graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); } protected override void LoadGraphicsContent(bool loadAllContent) { } protected override void Update(GameTime gameTime) { } protected override void Draw(GameTime gameTime) { } }
  • 18. Inicialização do jogoTexture2D cheeseTexture;SpriteBatch spriteBatch;protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { cheeseTexture = content.Load<Texture2D>("cheese"); spriteBatch = new SpriteBatch(graphics.GraphicsDevice); }} LoadGraphicsContent é chamada quando seu jogo inicializa Ele cria a textura do queijo e carrega uma imagem nele Também cria um SpriteBatch para gerenciar o processo de renderização
  • 19. Usando o Content Pipeline O content pipeline gerencia os recursos Cada recurso recebe um nome O método Load do ContentManager fornece acesso ao recurso Note o uso de generics cheeseTexture = content.Load<Texture2D>(“rockrain");
  • 20. XNA Game Drawingprotected override void Draw(GameTime gameTime){ graphics.GraphicsDevice.Clear(Color.Black); // Desenha o Background spriteBatch.Begin(); spriteBatch.Draw(backgroundTexture,new Rectangle(0, 0, graphics.GraphicsDevice.DisplayMode.Width, graphics.GraphicsDevice.DisplayMode.Height),Color.LightGray); spriteBatch.End(); // sprites spriteBatch.Begin(SpriteBlendMode.AlphaBlend); base.Draw(gameTime); spriteBatch.End();}
  • 21. Update do Jogoprotected override void Update(){ foreach (GameComponent gc in Components) { if (gc is Meteor) { hasColision = ((Meteor)gc).CheckCollision(shipRectangle); if (hasColision) { audioComponent.PlayCue("explosion"); Start(); break; } } } UpdateComponents();}
  • 22. Leitura do JoystickGamePadState padState = GamePad.GetState(PlayerIndex.One);if (padState.IsConnected){ if (padState.DPad.Left == ButtonState.Pressed) { breadX--; } if (padState.DPad.Right == ButtonState.Pressed) { breadX++; } /// repetir para o eixo Y do pão}
  • 23. Leitura analógica do Joystick int padXSpeed = 10; int padYSpeed = 10;GamePadState padState = GamePad.GetState(PlayerIndex.One);if (padState.IsConnected){ breadX += (int) (padState.ThumbSticks.Left.X * padXSpeed); breadY -= (int) (padState.ThumbSticks.Left.Y * padYSpeed);}
  • 24. Terminando… Recursos Livro http://www.amazon.com/Beginning-XNA-2-0-Game- Programming/dp/1590599241 XNA Developer Center http://msdn.com/xna Blog do time do XNA http://blogs.msdn.com/xna Sharpgames! http://www.sharpgames.net Creator‟s Club http://creators.xna.com/
  • 25. http://www.xna.com jalf@sharpgames.nethttp://www.sharpgames.net