SlideShare une entreprise Scribd logo
1  sur  26
Introdução ao XNA e ao
XNA Game Developer
José Antonio “jalf” Leal de Farias
Microsoft Most Valuable Professional
Sharpgames Team




                          jalf@sharpgames.net
                          http://www.sharpgames.net
Agenda
 O que é XNA??
 XNA Game Studio
 XNA Framework
 Xbox 360
 Xbox Live Community Games
 Criando um Jogo
 Aprendendo XNA
O que é XNA??
 XNA's 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
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?
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
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
Games
                                                                         Starter Kits            Code           Content            Comps




Modelo de Aplicação
                                                             Extended
                                                             Framework         Application Model                     Content Pipeline




                                                             Core
                                                             Framework   Graphics        Audio          Input         Math          Storage




                                                             Platform
                                                                          Direct3D               XACT           XINPUT            XContent




Mantenha-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
Games
                                                        Starter Kits            Code           Content            Comps




Modelo de Aplicação
                                            Extended
                                            Framework         Application Model                     Content Pipeline




                                            Core
                                            Framework   Graphics        Audio          Input         Math          Storage




                                            Platform
                                                         Direct3D               XACT           XINPUT            XContent




Crie 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
Games
                                                      Starter Kits            Code           Content            Comps




XNA Framework Content Pipeline            Extended
                                          Framework         Application Model                     Content Pipeline




Princí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
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");
Xbox 360
 Lançado em Novembro de 2005
 Xbox Live
 Novos conceitos para os jogadores
 Um grande passo para o mundo dos
 games…
Xbox Live Community Games
Xbox Live Community Games
XNA 3.0
Todo o suporte já criado
melhorado
Suporte ao Zune
Zune, Xbox e Windows juntos?
Final de 2008!!!
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
Construção de um jogo em XNA
Basedo 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, etc
2. 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
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) {
     }
 }
Inicialização do jogo
Texture2D 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
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");
XNA Game Drawing
protected 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();
}
Update do Jogo
protected 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();
}
Leitura do Joystick
GamePadState 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
}
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);
}
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/
http://www.xna.com
    jalf@sharpgames.net
http://www.sharpgames.net

Contenu connexe

Similaire à Introdução ao XNA

Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight  Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight Luciano Condé
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro FrameworkIgor Kondrasovas
 
Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7Luciano Condé
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkIgor Kondrasovas
 
TDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games MiddlewareTDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games Middlewaretdc-globalcode
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameFLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameLucas Mousinho
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in RioRenato Groff
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16Gabriel Lima
 
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019Renato Groff
 
Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Felipe Pedroso
 
A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisKelvin Oliveira
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Opencadd Advanced Technology
 
Overview do Windows Phone 7 Series
Overview do Windows Phone 7 SeriesOverview do Windows Phone 7 Series
Overview do Windows Phone 7 SeriesLuciano Condé
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 

Similaire à Introdução ao XNA (20)

Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight  Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro Framework
 
Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro Framework
 
TDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games MiddlewareTDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games Middleware
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Silverlight
SilverlightSilverlight
Silverlight
 
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameFLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
 
Kinect
KinectKinect
Kinect
 
Computação no Desenvolvimento de Jogos Digitais
Computação no Desenvolvimento de Jogos DigitaisComputação no Desenvolvimento de Jogos Digitais
Computação no Desenvolvimento de Jogos Digitais
 
.NET Open Source 2009
.NET Open Source 2009.NET Open Source 2009
.NET Open Source 2009
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive - Coders in Rio Summit 2019
 
Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8
 
A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos Digitais
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
 
Overview do Windows Phone 7 Series
Overview do Windows Phone 7 SeriesOverview do Windows Phone 7 Series
Overview do Windows Phone 7 Series
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 

Plus de José Farias

Introdução ao cocos sharp
Introdução ao cocos sharpIntrodução ao cocos sharp
Introdução ao cocos sharpJosé Farias
 
Por dentro do ID@Xbox
Por dentro do ID@XboxPor dentro do ID@Xbox
Por dentro do ID@XboxJosé Farias
 
10 questões sobre o futuro dos Games
10 questões sobre o futuro dos Games10 questões sobre o futuro dos Games
10 questões sobre o futuro dos GamesJosé Farias
 
Introdução do DirectX com C++
Introdução do DirectX com C++Introdução do DirectX com C++
Introdução do DirectX com C++José Farias
 
É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?José Farias
 
Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013José Farias
 
Criando jogos para o windows 8
Criando jogos para o windows 8Criando jogos para o windows 8
Criando jogos para o windows 8José Farias
 
Criando Jogos com HTML5
Criando Jogos com HTML5Criando Jogos com HTML5
Criando Jogos com HTML5José Farias
 
Criando Jogos Sofisticados com DirectX
Criando Jogos Sofisticados com DirectXCriando Jogos Sofisticados com DirectX
Criando Jogos Sofisticados com DirectXJosé Farias
 
Criando aplicativos para o windows 8
Criando aplicativos para o windows 8Criando aplicativos para o windows 8
Criando aplicativos para o windows 8José Farias
 
Oportunidades com o XNA
Oportunidades com o XNAOportunidades com o XNA
Oportunidades com o XNAJosé Farias
 
Publicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live ArcadePublicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live ArcadeJosé Farias
 
Como ganhar dinheiro com games
Como ganhar dinheiro com gamesComo ganhar dinheiro com games
Como ganhar dinheiro com gamesJosé Farias
 
Criando jogos com xna para o windows phone
Criando jogos com xna para o windows phoneCriando jogos com xna para o windows phone
Criando jogos com xna para o windows phoneJosé Farias
 
Criando jogos com o kinect
Criando jogos com o kinectCriando jogos com o kinect
Criando jogos com o kinectJosé Farias
 

Plus de José Farias (18)

Introdução ao cocos sharp
Introdução ao cocos sharpIntrodução ao cocos sharp
Introdução ao cocos sharp
 
Por dentro do ID@Xbox
Por dentro do ID@XboxPor dentro do ID@Xbox
Por dentro do ID@Xbox
 
10 questões sobre o futuro dos Games
10 questões sobre o futuro dos Games10 questões sobre o futuro dos Games
10 questões sobre o futuro dos Games
 
Radioino
RadioinoRadioino
Radioino
 
MonoGame business
MonoGame businessMonoGame business
MonoGame business
 
Introdução do DirectX com C++
Introdução do DirectX com C++Introdução do DirectX com C++
Introdução do DirectX com C++
 
É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?
 
Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013
 
Criando jogos para o windows 8
Criando jogos para o windows 8Criando jogos para o windows 8
Criando jogos para o windows 8
 
Criando Jogos com HTML5
Criando Jogos com HTML5Criando Jogos com HTML5
Criando Jogos com HTML5
 
Criando Jogos Sofisticados com DirectX
Criando Jogos Sofisticados com DirectXCriando Jogos Sofisticados com DirectX
Criando Jogos Sofisticados com DirectX
 
Criando aplicativos para o windows 8
Criando aplicativos para o windows 8Criando aplicativos para o windows 8
Criando aplicativos para o windows 8
 
Network com XNA
Network com XNANetwork com XNA
Network com XNA
 
Oportunidades com o XNA
Oportunidades com o XNAOportunidades com o XNA
Oportunidades com o XNA
 
Publicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live ArcadePublicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live Arcade
 
Como ganhar dinheiro com games
Como ganhar dinheiro com gamesComo ganhar dinheiro com games
Como ganhar dinheiro com games
 
Criando jogos com xna para o windows phone
Criando jogos com xna para o windows phoneCriando jogos com xna para o windows phone
Criando jogos com xna para o windows phone
 
Criando jogos com o kinect
Criando jogos com o kinectCriando jogos com o kinect
Criando jogos com o kinect
 

Introdução ao XNA

  • 1.
  • 2. Introdução ao XNA e ao XNA Game Developer José Antonio “jalf” Leal de Farias Microsoft Most Valuable Professional Sharpgames Team jalf@sharpgames.net http://www.sharpgames.net
  • 3. Agenda O que é XNA?? XNA Game Studio XNA Framework Xbox 360 Xbox Live Community Games Criando um Jogo Aprendendo XNA
  • 4. O que é XNA?? XNA's 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
  • 5. 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?
  • 6. 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
  • 7. 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
  • 8. Games Starter Kits Code Content Comps Modelo de Aplicação Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Mantenha-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
  • 9. Games Starter Kits Code Content Comps Modelo de Aplicação Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Crie 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
  • 10. Games Starter Kits Code Content Comps XNA Framework Content Pipeline Extended Framework Application Model Content Pipeline Princí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
  • 11. 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");
  • 12. Xbox 360 Lançado em Novembro de 2005 Xbox Live Novos conceitos para os jogadores Um grande passo para o mundo dos games…
  • 15. XNA 3.0 Todo o suporte já criado melhorado Suporte ao Zune Zune, Xbox e Windows juntos? Final de 2008!!!
  • 16. 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
  • 17. Construção de um jogo em XNA Basedo 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, etc 2. 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
  • 18. 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) { } }
  • 19. Inicialização do jogo Texture2D 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
  • 20. 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");
  • 21. XNA Game Drawing protected 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(); }
  • 22. Update do Jogo protected 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(); }
  • 23. Leitura do Joystick GamePadState 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 }
  • 24. 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); }
  • 25. 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/
  • 26. http://www.xna.com jalf@sharpgames.net http://www.sharpgames.net