Introdução ao XNA e ao
Game Developer Express
José Antonio “jalf” Leal de Farias
Microsoft Most Valuable Professional
Comunidade SharpGames




                       jalf@sharpgames.net
                       http://www.sharpgames.net
Quem é esse cara?
 DirectX/XNA MVP
 Diretor Técnico Stairs Studio
   http://www.stairs.com.br
 Criador e Administrador do Sharpgames
   http://www.sharpgames.net
 Livros
 Colunista XBox Magazine
Agenda
 Introdução
   Xbox Live
   Community Games
   XNA Challenge
   SharpGames
 XNA Game Studio
   Starter Kit
 XNA Framework
   Modelo de Aplicação; Content Pipeline
   Gráficos; Audio; Input
   Armazenamento
   Matemática
O que é XNA?
XNA Game Studio Express
 Desenhado com acadêmicos, hobistas e
 pequenos desenvolvedores de games
 Ideal para jogos casuais
 Nova plataforma para desenvolvimento de jogos
 baseado em .NET 3.0, .NET Compact Framework
 Extensão da IDE do Visual C# 2008
 Grupo de bibliotecas multi-plataforma
 optimizada para jogos
XNA Framework
 O XNA Framework é uma plataforma de
   desenvolvimento de jogos baseada em
 .NET que pode ser usada para criar jogos
         para Windows e Xbox 360
 Suporta as plataformas de jogos da
 Microsoft
 Foco no jogo, não na plataforma
 APIs consistentes e de fácil utilização
Instalação
 .NET 3.0
 Visual Studio 2008 (Qualquer Versão)
 XNA Framework
 XNA Game Studio
Games
                                                        Starter Kits            Code           Content            Comps




Starter Kits
                                            Extended
                                            Framework         Application Model                     Content Pipeline




                                            Core
                                            Framework   Graphics        Audio          Input         Math          Storage




                                            Platform     Direct3D               XACT           XINPUT           XContent




  Modifique os jogos e crie o seu próprio

 Um jogo completamente funcional
   Use como um começo para seus próprios jogos
   Acessado via “New Project…”
   Pressione F5 e divirta-se!
   Documentação e tutoriais

 Disponibilidade
   2 jogos incluídos com XNA Game Studio Express
   Novos kits saem regularmente
Camadas do XNA Framework
   Jogos             Starter Kits            Code                Content     Components




   Extended
   Framework               Application Model                        Content Pipeline




   Core
                     Graphics         Audio            Input          Math       Storage
   Framework




   Plataforma            Direct3D            XACT                XINPUT        XContent




Legenda    XNA Fornece        Você Fornece          Comunidade
Extended Framework
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




                                          Core
                                                            Application Model                     Content Pipeline




Princípios de Design
                                          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     2D File   Material File   Audio File
                    Formats     Formats      Formats        Formats
                     .FBX         .DDS         .FX         .XAP (XACT)
                      .X          .BMP
                               .JPG .PNG
  Processadores                   .TGA

     Conversões de tipo altamante tipadas
     Extensões de código gerenciado
 ContentManager xnaLoader = new
ContentManager();
 myAsset =
Core Framework
Games
                                                   Starter Kits            Code           Content            Comps




Graphics
                                       Extended
                                       Framework         Application Model                     Content Pipeline




                                       Core
                                       Framework   Graphics        Audio          Input         Math          Storage




                                       Platform     Direct3D               XACT           XINPUT            XContent




Fornece recursos de renderização de baixo
                   nível
 Construído sob o Direct3D 9
 APIs atualizadas que seguem as regras do .NET
   Efeitos
   Recursos
   Lock/Unlock
   Vertex streams
 Recursos fornecidos
   Model, Mesh, Bones
   Texturas
   Efeitos e shaders
XNA Framework Effects
XNA Framework Effects
Games
                                                       Starter Kits            Code           Content            Comps




Audio
                                           Extended
                                           Framework         Application Model                     Content Pipeline




                                           Core
                                           Framework   Graphics        Audio          Input         Math          Storage




                                           Platform     Direct3D               XACT           XINPUT            XContent




     É muito fácil tocar seus sons
 Construa seus pacotes de som usando a
 ferramenta XACT
   Adicionar sons
   Ajustar propriedades
   Construir bancos de sons
 Fácil integração para desenvolvedores
   Acesse-os via seus nomes lógicos
   Looping, streaming, e gerenciamento de memória
   Sem gerenciamento de buffer de baixo nível
Games
                                                Starter Kits            Code           Content            Comps




Input
                                    Extended
                                    Framework         Application Model                     Content Pipeline




                                    Core
                                    Framework   Graphics        Audio          Input         Math          Storage




                                    Platform     Direct3D               XACT           XINPUT            XContent




 Torna fácil a obtenção de dados de entrada
  Pronto para usar
    Sem inicialização
    Sem gerenciamento de estado
  Dispositivos
    Joystick do Xbox 360
    Teclado
    Mouse (apenas no Windows)
Games
                                                        Starter Kits            Code           Content            Comps




Storage
                                            Extended
                                            Framework         Application Model                     Content Pipeline




                                            Core
                                            Framework   Graphics        Audio          Input         Math          Storage




                                            Platform     Direct3D               XACT           XINPUT            XContent




 Fornece um jeito fácil para ler e salvar
           informações do jogo
 StorageContainer atua como um sistema de
 arquivos virtual
   Arquivos armazenados no local correto de cada
   plataforma
   Suporta mútiplos dispositivos de armazenamento e
   perfis no Xbox 360
 Baseado em Streams, o que facilita a integração
 com o System.IO
Games
                                                    Starter Kits            Code           Content            Comps




Math
                                        Extended
                                        Framework         Application Model                     Content Pipeline




                                        Core
                                        Framework   Graphics        Audio          Input         Math          Storage




                                        Platform     Direct3D               XACT           XINPUT            XContent




 Biblioteca de funções matemáticas para
                   jogos

 Vector, Matrix, Quaternion, Plane, AABB,
 Sphere, Ray, Frustum, Curve
 Regra-da-mão-direita por default
 Fácil integração
 Testes de intersecção
 Facilitadores para movimentos
Criando Jogos para o Xbox 360
Pré-requisitos e Instalação
 Assinatura da Xbox live
 XNA Creator’s Club (US$99 por um ano)
 Instale o XNA Game launcher a partir da
 Xbox marketplace
 Compre o XNA Creaters Club a partir Xbox
 marketplace
 Para obter seu código de conexão, rode o
 XNA Game launcer de: GamesDemos and
 More no Xbox 360
Games
                                                   Starter Kits            Code           Content            Comps




Xbox 360 Development
                                       Extended
                                       Framework         Application Model                     Content Pipeline




                                       Core
                                       Framework   Graphics        Audio          Input         Math          Storage




                                       Platform     Direct3D               XACT           XINPUT           XContent




       Experiência de desenvolvimento

 Project templates para jogos do Xbox 360
 F5 faz o deploy para o console
 Remote debugging
   Breakpoints
   Watches
   Debug e Trace para o PC
 Sem
   Edit and Continue
   Debug Visualizers
Criando um jogo
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
1. Continuamente roda o Game Loop:
  1. Atualiza a game engine
          Lê os controladores, atualiza o estado e a posição dos
          game elements
  1. 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);
}
Xbox LIVE Arcade??
   Xbox Live é o lugar para usuários que
   querem testar e comprar conteúdo no Xbox
   360
   Xbox Live Arcade contém conteúdo de
   jogos

     Alta Visibilidade em qualquer console (Aba ‘Games’)
     Integração com o Marketplace (Download, compra, licenças)
     Disponível para assinantes Silver & Gold
     Banner de promoção de novos títulos
     Diversos recursos para a retenção e re-play de jogos
Introdução a Xbox Live Arcade
Usuários & receita continuam a crescer
+80 jogos disponíveis atualmente
Um ou mais títulos chegam por semana
Melhor serviço de download de jogos em um console no mercado
  Novos Jogos
  Clássicos
  Jogos Independentes
  Conectado aos serviços da Live (MSN)
Crescimento do Serviço
Audiência Engajada
Mais de 45,000,000 de jogos baixados



Mais de 80,000,000 de horas de jogo
  Isso é mais de 9,100 homens-ano




Mais de 170,000,000 de partidas



Mais de 45,000,000 de Achievements obtidos



Mais de 550,000,000 em Gamerscore
Títulos mais jogados em 2007
            By Users       By Average Session By Total Minutes
                                Length
1   TMNT 1989 Arcade      Jewel Quest         UNO
2   Worms                 Hardwood Spades     Texas Hold ‘Em

3   UNO                   Catan               Worms
4   Castlevania           Bejeweled 2         Castlevania        Azul – 2007

5   3D Minigolf Adventures Texas Hold ‘Em     Bejeweled 2        Laranja – 2006

6   Paperboy              Castlevania         Geometry Wars      Verde - 2005
7   Alien Hominid         Zuma                Zuma
8   Geometry Wars         Soltrio Solitaire   Aegis Wing
9   Texas Hold ‘em        Worms               Catan

10 Heavy Weapon           Luxor 2             3D Minigolf
                                              Adventures
Detalhes de Vendas
Downloads e taxas de conversão

 Títulos originais conseguem cerca de 350k downloads no primeiro mês



 Grandes hits conseguem us$125K em vendas na primeira semana


 Games continuam com vendas significantes ao longo de sua vida.
Volume de vendas sobre o
tempo
O gráfico mostra a média de todos os jogos do serviço
Primeiros dois meses de vendas correspondem a 35% do volume total
Vendas tem uma pequena queda após o sétimo mês
Melhores Título                                    (Jul 06 – Jun 07)
       By Sales Volume            By Revenue         By Conversion Rate

1    Street Fighter II HF   Street Fighter II HF    TMNT 1989
2    UNO                    Worms                   UNO

3    TMNT 1989              DOOM                    Texas Hold ‘em
4    Worms                  Castlevania             Street Fighter II HF   Azul – 2007

5    DOOM                   Ultimate Mortal         Worms                  Laranja – 2006
                            Kombat 3
6    Castlevania            Texas Hold ‘em          Castlevania            Verde - 2005
7    Ultimate Mortal        UNO                     GALAGA
     Kombat 3
8    PAC-MAN                Bankshot Billiards 2    Ultimate Mortal
                                                    Kombat 3
9    Geometry Wars          LUMINES LIVE!           PAC-MAN

10   Contra                 TMNT 1989               DOOM
Performance de download de
conteúdo para jogos
 636000 Downloads pagos
   107000 Temas de jogos
   360000 Conteúdo de jogos (novas fases, etc.)
   170000 Imagens e Fotos

 Downloads gratuitos
   1.055.000 downloads

 Resumo – Conteúdo não vai torná-lo rico,
 mas é uma interessante fonte de receita
Presença de Mercado
Como é um jogo da Xbox LIVE Arcade?
   Completa experiência de jogo
      Sem pedaços de jogos separados
      Não deve ter dependências

   Pequeno em Tamanho
      <150 MB (a maioria tem <50 MB)
      Jogável sem mídia física ou qualquer outra dependência
      Sem necessidade de manual de instruções
      “Baixar e jogar”

   Versão de testes limitada mas divertida
      Deve oferecer a opção de compra da versão completa
      Promoção de venda do jogo dentro do jogo é permitida

   Experiências de jogo associadas a Live Arcade
      Ranks globais
      Achievements & Gamerscore
      Convites entre jogos
‘Aba’ da Xbox Live Arcade
Como os jogos chegam a Arcade
                 Desenvolvedor



     Publisher
                                  Arcade
                                 Publishing
     Microsoft                     Team
     3PP Team


                 Gerência do
                  Portfólio
E os jogos da comunidade?
        Revisados pelo membros do
        Creator’s Club
        Critérios como violência,
        sexo, sangue, etc.
        Critérios Técnicos
        Formado EXCLUSIVAMENTE
        pela comunidade
Que tipo de games estamos
       procurando?

Nós queremos jogos que …
… sejam atraentes
 “Baixar e jogar”
 “Divertido para toda a família”
 “Divertido para todas as idades”
 Jogos casuais
… suportem vários dispositivos
 Social em sua natureza
 Controladores mais
 atrativos
 Quebrar paradigmas
… inspirem
 Saúde física e mental
 Ensinem sobre o mundo real
 Faça você uma pessoa melhor
 Ajudar os outros
…unam as pessoas
Jogos sociais

 Multiplayer
 Competitivo
 Cooperativo
 “Backseat driver”
 Party Games
… Jogos que funcionem entre
plataformas
O que isso tudo significa para você?

  Primeiro, negócio é negócio: Se você tem um
  grande jogo, nos queremos vê-lo
  Compreendendo o valor de seu serviço para o
  cliente vai lhe ajudar a criar um melhor jogo
  para ele
  Novas áreas de interesse:
    Simples, Atrativos
    Suporte a vários tipos de controladores
    Temas e conteúdo inspirativos
    Social, Social, Social
Guia de Conceito
Os 6 Pilares do que queremos em jogos
 Inovação
 Jogabilidade
 Visual
 Multiplayer & Social
 Plataformas
 Global
Jogabilidade
  Tem de caber em 150 MB!
  Idéias únicas
  “Baixar e jogar”
  Permitir pequenas seções de jogo
  ‘Planejado para a família INTEIRA
     Opções para crianças
     Dificuldade progressiva
Visual
Este jogo merece estar no Xbox 360?


Re-Design, não apenas um porte

Exemplos:
 RoboBlitz
 Small Arms
 Jetpac Refuelled
Multiplayer
 Xbox LIVE & desenhado para poucos participantes
  “Join In Progress”
  Migração de Host
 Multiplayer Local (2+ em um console)
 Co-Op
 Experiências Sociais
 Offline gameplay & tracking
Apelo Global
 Planeje seu jogo com o mercado global em mente

 Localização
  Inglês, Frances, Italiano, Alemão, Espanhol, Japonês,
  Koreano, Chinês (tradicional), Português (pt-br opcional).
Dúvidas?
     José Antonio “jalf” Leal de Farias
    Microsoft Most Valuable Professional
            jalf@sharpgames.net
           www.sharpgames.net
           Twitter: @sharpgames

IntroduçãO Ao Xna Campus Party

  • 1.
    Introdução ao XNAe ao Game Developer Express José Antonio “jalf” Leal de Farias Microsoft Most Valuable Professional Comunidade SharpGames jalf@sharpgames.net http://www.sharpgames.net
  • 2.
    Quem é essecara? DirectX/XNA MVP Diretor Técnico Stairs Studio http://www.stairs.com.br Criador e Administrador do Sharpgames http://www.sharpgames.net Livros Colunista XBox Magazine
  • 3.
    Agenda Introdução Xbox Live Community Games XNA Challenge SharpGames XNA Game Studio Starter Kit XNA Framework Modelo de Aplicação; Content Pipeline Gráficos; Audio; Input Armazenamento Matemática
  • 5.
  • 6.
    XNA Game StudioExpress Desenhado com acadêmicos, hobistas e pequenos desenvolvedores de games Ideal para jogos casuais Nova plataforma para desenvolvimento de jogos baseado em .NET 3.0, .NET Compact Framework Extensão da IDE do Visual C# 2008 Grupo de bibliotecas multi-plataforma optimizada para jogos
  • 7.
    XNA Framework OXNA Framework é uma plataforma de desenvolvimento de jogos baseada em .NET que pode ser usada para criar jogos para Windows e Xbox 360 Suporta as plataformas de jogos da Microsoft Foco no jogo, não na plataforma APIs consistentes e de fácil utilização
  • 8.
    Instalação .NET 3.0 Visual Studio 2008 (Qualquer Versão) XNA Framework XNA Game Studio
  • 9.
    Games Starter Kits Code Content Comps Starter Kits Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Modifique os jogos e crie o seu próprio Um jogo completamente funcional Use como um começo para seus próprios jogos Acessado via “New Project…” Pressione F5 e divirta-se! Documentação e tutoriais Disponibilidade 2 jogos incluídos com XNA Game Studio Express Novos kits saem regularmente
  • 10.
    Camadas do XNAFramework Jogos Starter Kits Code Content Components Extended Framework Application Model Content Pipeline Core Graphics Audio Input Math Storage Framework Plataforma Direct3D XACT XINPUT XContent Legenda XNA Fornece Você Fornece Comunidade
  • 11.
  • 12.
    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
  • 13.
    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
  • 14.
    Games Starter Kits Code Content Comps XNA Framework Content Pipeline Extended Framework Core Application Model Content Pipeline Princípios de Design 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
  • 15.
    XNA Framework ContentPipeline Importadores Conteúdo de jogo adicionado ao Visual Studio 3D File 2D File Material File Audio File Formats Formats Formats Formats .FBX .DDS .FX .XAP (XACT) .X .BMP .JPG .PNG Processadores .TGA Conversões de tipo altamante tipadas Extensões de código gerenciado ContentManager xnaLoader = new ContentManager(); myAsset =
  • 16.
  • 17.
    Games Starter Kits Code Content Comps Graphics Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Fornece recursos de renderização de baixo nível Construído sob o Direct3D 9 APIs atualizadas que seguem as regras do .NET Efeitos Recursos Lock/Unlock Vertex streams Recursos fornecidos Model, Mesh, Bones Texturas Efeitos e shaders
  • 18.
  • 19.
  • 20.
    Games Starter Kits Code Content Comps Audio Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent É muito fácil tocar seus sons Construa seus pacotes de som usando a ferramenta XACT Adicionar sons Ajustar propriedades Construir bancos de sons Fácil integração para desenvolvedores Acesse-os via seus nomes lógicos Looping, streaming, e gerenciamento de memória Sem gerenciamento de buffer de baixo nível
  • 21.
    Games Starter Kits Code Content Comps Input Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Torna fácil a obtenção de dados de entrada Pronto para usar Sem inicialização Sem gerenciamento de estado Dispositivos Joystick do Xbox 360 Teclado Mouse (apenas no Windows)
  • 22.
    Games Starter Kits Code Content Comps Storage Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Fornece um jeito fácil para ler e salvar informações do jogo StorageContainer atua como um sistema de arquivos virtual Arquivos armazenados no local correto de cada plataforma Suporta mútiplos dispositivos de armazenamento e perfis no Xbox 360 Baseado em Streams, o que facilita a integração com o System.IO
  • 23.
    Games Starter Kits Code Content Comps Math Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Biblioteca de funções matemáticas para jogos Vector, Matrix, Quaternion, Plane, AABB, Sphere, Ray, Frustum, Curve Regra-da-mão-direita por default Fácil integração Testes de intersecção Facilitadores para movimentos
  • 24.
  • 25.
    Pré-requisitos e Instalação Assinatura da Xbox live XNA Creator’s Club (US$99 por um ano) Instale o XNA Game launcher a partir da Xbox marketplace Compre o XNA Creaters Club a partir Xbox marketplace Para obter seu código de conexão, rode o XNA Game launcer de: GamesDemos and More no Xbox 360
  • 26.
    Games Starter Kits Code Content Comps Xbox 360 Development Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform Direct3D XACT XINPUT XContent Experiência de desenvolvimento Project templates para jogos do Xbox 360 F5 faz o deploy para o console Remote debugging Breakpoints Watches Debug e Trace para o PC Sem Edit and Continue Debug Visualizers
  • 27.
  • 28.
    XNA 2D game “RockRain” Construção de um jogo simples O jogador deve guiar a nave evitando os asteróides É um jogo 2D simples, baseado em sprites
  • 29.
    Construção de umjogo 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 1. Continuamente roda o Game Loop: 1. Atualiza a game engine Lê os controladores, atualiza o estado e a posição dos game elements 1. Desenha o ambiente do jogo renderiza os game elements na tela
  • 30.
    Esqueleto de umjogo 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) { } }
  • 31.
    Inicialização do jogo Texture2DcheeseTexture; 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
  • 32.
    Usando o ContentPipeline 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");
  • 33.
    XNA Game Drawing protectedoverride 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(); }
  • 34.
    Update do Jogo protectedoverride void Update() { foreach (GameComponent gc in Components) { if (gc is Meteor) { hasColision = ((Meteor)gc).CheckCollision(shipRectangle); if (hasColision) { audioComponent.PlayCue("explosion"); Start(); break; } } } UpdateComponents(); }
  • 35.
    Leitura do Joystick GamePadStatepadState = 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 }
  • 36.
    Leitura analógica doJoystick 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); }
  • 37.
    Xbox LIVE Arcade?? Xbox Live é o lugar para usuários que querem testar e comprar conteúdo no Xbox 360 Xbox Live Arcade contém conteúdo de jogos Alta Visibilidade em qualquer console (Aba ‘Games’) Integração com o Marketplace (Download, compra, licenças) Disponível para assinantes Silver & Gold Banner de promoção de novos títulos Diversos recursos para a retenção e re-play de jogos
  • 38.
    Introdução a XboxLive Arcade Usuários & receita continuam a crescer +80 jogos disponíveis atualmente Um ou mais títulos chegam por semana Melhor serviço de download de jogos em um console no mercado Novos Jogos Clássicos Jogos Independentes Conectado aos serviços da Live (MSN)
  • 39.
  • 40.
    Audiência Engajada Mais de45,000,000 de jogos baixados Mais de 80,000,000 de horas de jogo Isso é mais de 9,100 homens-ano Mais de 170,000,000 de partidas Mais de 45,000,000 de Achievements obtidos Mais de 550,000,000 em Gamerscore
  • 41.
    Títulos mais jogadosem 2007 By Users By Average Session By Total Minutes Length 1 TMNT 1989 Arcade Jewel Quest UNO 2 Worms Hardwood Spades Texas Hold ‘Em 3 UNO Catan Worms 4 Castlevania Bejeweled 2 Castlevania Azul – 2007 5 3D Minigolf Adventures Texas Hold ‘Em Bejeweled 2 Laranja – 2006 6 Paperboy Castlevania Geometry Wars Verde - 2005 7 Alien Hominid Zuma Zuma 8 Geometry Wars Soltrio Solitaire Aegis Wing 9 Texas Hold ‘em Worms Catan 10 Heavy Weapon Luxor 2 3D Minigolf Adventures
  • 42.
    Detalhes de Vendas Downloadse taxas de conversão  Títulos originais conseguem cerca de 350k downloads no primeiro mês  Grandes hits conseguem us$125K em vendas na primeira semana  Games continuam com vendas significantes ao longo de sua vida.
  • 43.
    Volume de vendassobre o tempo O gráfico mostra a média de todos os jogos do serviço Primeiros dois meses de vendas correspondem a 35% do volume total Vendas tem uma pequena queda após o sétimo mês
  • 44.
    Melhores Título (Jul 06 – Jun 07) By Sales Volume By Revenue By Conversion Rate 1 Street Fighter II HF Street Fighter II HF TMNT 1989 2 UNO Worms UNO 3 TMNT 1989 DOOM Texas Hold ‘em 4 Worms Castlevania Street Fighter II HF Azul – 2007 5 DOOM Ultimate Mortal Worms Laranja – 2006 Kombat 3 6 Castlevania Texas Hold ‘em Castlevania Verde - 2005 7 Ultimate Mortal UNO GALAGA Kombat 3 8 PAC-MAN Bankshot Billiards 2 Ultimate Mortal Kombat 3 9 Geometry Wars LUMINES LIVE! PAC-MAN 10 Contra TMNT 1989 DOOM
  • 45.
    Performance de downloadde conteúdo para jogos 636000 Downloads pagos 107000 Temas de jogos 360000 Conteúdo de jogos (novas fases, etc.) 170000 Imagens e Fotos Downloads gratuitos 1.055.000 downloads Resumo – Conteúdo não vai torná-lo rico, mas é uma interessante fonte de receita
  • 46.
  • 47.
    Como é umjogo da Xbox LIVE Arcade? Completa experiência de jogo Sem pedaços de jogos separados Não deve ter dependências Pequeno em Tamanho <150 MB (a maioria tem <50 MB) Jogável sem mídia física ou qualquer outra dependência Sem necessidade de manual de instruções “Baixar e jogar” Versão de testes limitada mas divertida Deve oferecer a opção de compra da versão completa Promoção de venda do jogo dentro do jogo é permitida Experiências de jogo associadas a Live Arcade Ranks globais Achievements & Gamerscore Convites entre jogos
  • 48.
    ‘Aba’ da XboxLive Arcade
  • 49.
    Como os jogoschegam a Arcade Desenvolvedor Publisher Arcade Publishing Microsoft Team 3PP Team Gerência do Portfólio
  • 50.
    E os jogosda comunidade? Revisados pelo membros do Creator’s Club Critérios como violência, sexo, sangue, etc. Critérios Técnicos Formado EXCLUSIVAMENTE pela comunidade
  • 51.
    Que tipo degames estamos procurando? Nós queremos jogos que …
  • 52.
    … sejam atraentes “Baixar e jogar” “Divertido para toda a família” “Divertido para todas as idades” Jogos casuais
  • 53.
    … suportem váriosdispositivos Social em sua natureza Controladores mais atrativos Quebrar paradigmas
  • 54.
    … inspirem Saúdefísica e mental Ensinem sobre o mundo real Faça você uma pessoa melhor Ajudar os outros
  • 55.
    …unam as pessoas Jogossociais Multiplayer Competitivo Cooperativo “Backseat driver” Party Games
  • 56.
    … Jogos quefuncionem entre plataformas
  • 57.
    O que issotudo significa para você? Primeiro, negócio é negócio: Se você tem um grande jogo, nos queremos vê-lo Compreendendo o valor de seu serviço para o cliente vai lhe ajudar a criar um melhor jogo para ele Novas áreas de interesse: Simples, Atrativos Suporte a vários tipos de controladores Temas e conteúdo inspirativos Social, Social, Social
  • 58.
    Guia de Conceito Os6 Pilares do que queremos em jogos Inovação Jogabilidade Visual Multiplayer & Social Plataformas Global
  • 59.
    Jogabilidade Temde caber em 150 MB! Idéias únicas “Baixar e jogar” Permitir pequenas seções de jogo ‘Planejado para a família INTEIRA Opções para crianças Dificuldade progressiva
  • 60.
    Visual Este jogo mereceestar no Xbox 360? Re-Design, não apenas um porte Exemplos: RoboBlitz Small Arms Jetpac Refuelled
  • 61.
    Multiplayer Xbox LIVE& desenhado para poucos participantes “Join In Progress” Migração de Host Multiplayer Local (2+ em um console) Co-Op Experiências Sociais Offline gameplay & tracking
  • 62.
    Apelo Global Planejeseu jogo com o mercado global em mente Localização Inglês, Frances, Italiano, Alemão, Espanhol, Japonês, Koreano, Chinês (tradicional), Português (pt-br opcional).
  • 63.
    Dúvidas? José Antonio “jalf” Leal de Farias Microsoft Most Valuable Professional jalf@sharpgames.net www.sharpgames.net Twitter: @sharpgames