Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Como usar o Monogame para criar jogos baseados em XNA no Windows Phone 8

From Wiki
Jump to: navigation, search

Este tutorial mostrar como utilizar o projeto open source MonoGame para criar jogos XNA no Windows Phone 8.

WP Metro Icon Joystick.png
WP Metro Icon WP8.png
Article Metadata

Exemplo de código
Testado com
Aparelho(s): Nokia Lumia 920

Compatibilidade
Plataforma(s): Windows Phone 8
Windows Phone 8
Device(s): All WP8 devices

Artigo
Palavras-chave: XNA, MonoGame, Games
Tradução:
Por Vitor Pombeiro
Última alteração feita por lpvalente em 14 Jul 2013


Contents

Introdução

XNA tem sido uma excelente framework para criar jogos nas plataformas Windows Phone 7.x, Windows e XBOX 360. Tem fornecido funcionalidades bastante poderosas tais como content pipeline, spritebatches, shaders e 3D, sons, musica, controladores de jogo e muito mais. Muitos programadores de jogos (incluindo eu) à muitos anos que utilizada o XNA e já tem uma boa base de código, ferramentas, bibliotecas de UI e muito mais tendo em mente o desenvolvimento com XNA.

Infelizmente, a Microsoft descontinuou o suporte para o XNA na plataforma Windows Phone 8 (bem como para as apps da Windows 8 Store). Enquanto que os jogos XNA continuam a funcionar no Windows Phone 8, eles funcionam no "modo de compatibilidade" o que significa essencialmente que os programadores tem como alvo o WP7.x e não pode utilizar nenhuma das novas características que o WP8 veio trazer.

MonoGame permite aos programadores terem como alvo o Windows Phone 8 enquanto continuam a utilizar XNA e C#, a nossa combinação preferida para desenvolver jogos. Se você é um programador de jogos XNA experiente ou um novato a tentar desenvolver o seu primeiro jogo XNA, MonoGame é uma excelente escolha. Eu pessoalmente tenho utilizado o MonoGame em vários projetos disponibilizados comercialmente, o último dos quais é o MonsterUp Memory para Windows 8, atualmente disponível na store.

O que é o MonoGame

MonoGame é uma implementação Open Source da framework XNA 4 da Microsoft. Sem desmontar (disassembling) nenhuma das bibliotecas originais do XNA, a comunidade está a tentar construir uma biblioteca open source compatível (inclusivamente utilizando os mesmos namespaces) tendo como alvo várias plataformas. MonoGame utiliza o poder de outros projetos open source, como o SharpDX, que disponibiliza uma API DirectX completa sobre a plataforma .NET para gráficos 2D e 3D bem como para o som e o Lidgren.Network que providencia suporte para rede no MonoGame. Mas as boas noticias são que você não tem que se preocupar com isso, visto que no fim o MonoGame providencia-lhe, ao programador de jogos XNA, uma framework familiar compatível com XNA para o desenvolvimento de jogos destinados ao Windows Phone 8. Um aspeto incrível do MonoGame é que não só lhe abre as portas para continuar a utilizar XNA, como também para migrar os seus jogos para outras plataformas.

Para começar

Antes de começar, temos de preparar o nosso ambiente de desenvolvimento. Em primeiro lugar, necessita de um Windows 8 x64 Pro. Se também querer utilizar um emulador para o WP8, tem de confirmar que o seu hardware é capaz de utilizar SLAT. Se você efetuar o download do SDK do WP8 do link que se encontra na lateral do artigo, vai ter também o Visual Studio 2012 Express instalado. Isto é o suficiente, mas se quiser utilizar a versão completa do Visual Studio 2012, verifique que o instala antes de instalar o SDK. Se você como muitos outros programadores não estão preparados para instalar o Windows 8 na maquina de produção, pode considerar instalar numa maquina virtual. Se é esse o caso, leia este artigo.

Depois de instalar o Visual Studio e o WP8 SDK, temos de obter o MonoGame. Existem algumas formas de o fazer:

  • Download do código fonte do projeto completo aqui e descomprimir para uma diretoria à escolha, ou
  • Como o MonoGame está hospedado no GitHub, pode utilizar o seu cliente Git preferido para efetuar um clone do repositório. Eu utilizo a versão da aplicação oficial do GitHub o qual pode ser obtido aqui gratuitamente. Instale o cliente, e depois vá à página do MonoGame no GitHub e carregue no botão "Clone with Windows".
    Clone with Windows button
  • Pode ainda utilizar o Windows PowerShell e a interface de linha de comandos do GitHub para obter os mesmos resultados. Simplesmente vá à diretoria onde pretende colocar o MonoGame e utilize os seguintes comandos.
    git clone https://github.com/mono/MonoGame.git
    cd .\MonoGame
    git submodule init
    git submodule update


Muito provavelmente, depois de experimentar o poder e a simplicidade do XNA, vai querer fazer muitos jogos com ele. Portanto, nós devemos fazer um template para o Visual Studio 2012. Por sorte, MonoGame providencia estes templates e só precisa de os copiar para o local correto.

Vá a C:\Users\[your username]\Documents\Visual Studio 2012\Templates\ProjectTemplates\Visual C# e crie uma diretoria para o MonoGame. Então vá ao local para onde efetuou o download do código fonte do projeto MonoGame, abrir o ProjectTemplates e depois o VisualStudio2012. Copiar tudo o que se encontra na diretoria para a diretoria criada anteriormente. Ao fazer isto corretamente, quando voltar a executar o Visual Studio 2012 e selecionar "New Project" vai ver uma nova categoria para o MonoGame sobre o Visual C#. Muito bem. Clicar duas vezes no Windows Phone 8 Game para criar o seu primeiro jogo XNA para o WP8 com o MonoGame.

The MonoGame templates

Utilizando a framework do MonoGame

O template está instalado e já criou a sua solução. Mas ainda não sabe para onde efetuou o download do MonoGame propriamente dito! É resolvido muito facilmente. Simplesmente siga os seguintes passos.

  • Carregue no botão direito do rato sobre a solução
  • Escolha Add -> Existing Project
  • Vá à diretoria para a qual efetuou o download do MonoGame
  • Abra o MonoGame.FrameWork
  • Selecione o ficheiro Choose MonoGame.Framework.WindowsPhone.csproj
  • Carregue em abrir
    Agora já adicionou o projeto da framework do MonoGame à sua solução, agora necessita de o referenciar no seu jogo.
  • Abrir as referencias no seu projeto no explorador da solução
  • Apagar a referencia que tem um triângulo amarelo chamada MonoGame.Framework.WindowsPhone
  • Carregue no botão direito do rato nas referencias e escolha Add Reference
  • Carregue em Projects
  • Deve conseguir visualizar o projeto MonoGame.Framework na lista. Selecione a caixa que se encontra junto.
  • Carregue em OK

Agora o MonoGame foi adicionado e referenciado no seu projeto do jogo.

Resolver pequenos problemas

Neste momento, já deve ter reparado que o projeto tem alguns problemas a compilar e a executar. Temos de resolver estes pequenos problemas e estaremos prontos para avançar.

  • No explorador da solução, carregar no botão "Show All Files".
  • Procurar Game1.cs, carregar no botão direito do rato e escolher incluir no projeto
  • Abrir o GamePage.xaml
  • Alterar
    x:Class="XamlPhoneGame1.MainPage
    para
    x:Class="XamlPhoneGame1.GamePage
  • Abrir o GamePage.xaml.cs
  • Alterar
    public partial class MainPage : PhoneApplicationPage
    para
    public partial class GamePage : PhoneApplicationPage
    e
    public MainPage()
    para
    public GamePage()
  • Finalmente abrir Properties -> WMAppManifest.xml no seu projeto do jogo e alterar a "Navigation Page" de MainPage.xaml para GamePage.xaml

Neste momento, tem um XAML a funcionar, compatível com XNA, o projeto do jogo para WP8 com MonoGame que compila e executa num emulador e nos fantásticos dispositivos WP8 da Nokia. Parabéns!

Então e o conteúdo do jogo?

Uma caraterística fantástica do XNA é o content pipeline. Permitelhe utilizar muitos dos formatos mais populares (png, jpg, wav, mp3, x e muitos mais) nos seus jogos. O XNA content pipeline utiliza todos estes ficheiros e cria ficheiros .xnb que por sua vez podem ser desenhados, tocados ou visualizados nos seus jogos em qualquer das plataformas suportadas. Para o MonoGame, eu tenho boas e más noticias. As más são que não está disponível um content pipeline semelhante mas as boas noticias são de que existe uma forma de contornar simples e direta. Tudo o que tem de fazer é seguir os seguintes passos.

  • Crie um novo projeto XNA para o WP 7.x.
  • Adicione todo o seu conteúdo no projeto "content" na sua solução.
  • Efetue o "Build" da solução.

Neste momento, tem todos os ficheiros .xnb prontos para serem utilizados no seu jogo para o WP8. Para tornar as coisas mais fáceis e para evitar ter de adicionar ficheiros de conteúdo e ter de alterar as propriedades constantemente, faça o seguinte.

  • Vá à diretoria do seu projeto WP8 e crie uma nova diretoria chamada "Content".
  • Adicione essa diretoria ao seu projeto.
  • Copie todos os ficheiros .xnb da diretoria bin do projeto WP7.x para a diretoria "Content" do projeto WP8.
  • Adicione apenas um ficheiro .xnb ao seu projeto WP8. Qualquer um serve. Grave tudo.
  • Edite o ficheiro vsproj do seu projeto do jogo com o seu editor de texto favorito.
  • Substitua a tag Content com o seguinte
<Content Include="Content\**\*.*">     
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

Isto irá adicionar automaticamente qualquer ficheiro .xnb que coloque na diretoria "Content" ao seu projeto com as propriedades corretas (basicamente seleciona a opção "Copy if Newer" da propriedade "Copy to Output" para que você não tenha de fazer isso em todos os ficheiros). Se adicionar mais ficheiros .xnb enquanto desenvolver o seu jogo, vão ser automaticamente adicionados também. Se sentir-se aventureiro pode utilizar soft links no sistema de ficheiros para criar ficheiros .xnb no projeto WP7.x diretamente na diretoria "Content" do projeto WP8 ou até executar automaticamente o processamento do conteudo XNA sempre que efetuar o build do seu projeto MonoGame para o WP8 mas não vou explicar isso aqui pois é um pouco avançado para um tutorial de iniciação.

Eu segui os passos, fiz o build do meu primeiro jogo MonoGame compatível com XNA e executei-o. E agora?

Agora utilize as sua habilidades com o XNA para fazer jogos incríveis que podem usufruir das características incríveis do WP8. Crie apps "freemium" utilizando "in app purchases" (IAP). Crie jogos HD utilizando as resoluções 720p ou WXGA. Crie jogos para vários jogadores utilizando o NFC, bluetooth ou wi-fi. Este tutorial não tem como objetivo ensinar XNA, existem vários tutoriais excelente por ai com esse objetivo, visto que o XNA já se encontra bastante maduro atualmente. Mas espero ter ajudado na iniciação do seu primeiro jogo XNA para o Windows Phone 8.

Eu preciso de ajuda! Onde é que eu vou?

MonoGame tem uma comunidade muito ativa. O fórum do Windows Phone para o MonoGame encontra-se aqui. A página oficial do projeto MonoGame encontram-se aqui e aqui.


Ficheiros

Pode fazer o download do template final (o qual será igual ao seu se efetuou todos os passos indicados anteriormente) no link em baixo. Siga as instruções do ficheiro "ReadMe" para testar no emulador ou num dispositivo real.

File:TemplateFinal.zip

Também pode fazer o download desta simples demonstração jogo XNA com MonoGame para WP8 com o monstro verde do meu jogo MonsterUp Adventures :) Este jogo simples corre em altas resoluções (todas as 3 suportados pelo WP8) o que é impossível utilizando só o XNA para WP7.1 o qual só suporta 800x480(wvga). Obtenha também o jogo no link em baixo.

File:SampleGame.zip

This page was last modified on 14 July 2013, at 15:23.
269 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×