Desenvolvimento

3 jul, 2015

Desenvolvendo jogos com MonoGame

Publicidade

Neste artigo, eu vou apresentar o MonoGame, um framework para desenvolvimento de jogos multiplataforma com C#, que pode ser integrado ao Visual Studio ou MonoDevelop.

O MonoGame é uma implementação open source da Microsoft XNA Framework para a criação de jogos multiplataforma poderosos. A implementação é feita para Windows, Mac OS X, Apple IOS, Google Android, Linux e Windows Phone.

Então você já percebeu que pode desenvolver jogos para todas essas plataformas fazendo apenas algumas modificações. Você pode usar a linguagem C# para desenvolver o seu jogo e depois portar o jogo para essas plataformas, quer seja desktop, tablet ou smartphone.

Você pode usar ou não o Visual Studio como ambiente de desenvolvimento. Se preferir não usar o Visual Studio, você tem como opção o MonoDevelop, que é uma IDE open source para linguagens Microsoft, ou pode usar o Xamarim Studio.

Neste artigo, vou mostrar como usar o MonoGame integrado ao Visual Studio para o desenvolvimento de jogos.

Recursos usados:

Instalando o MonoGame

A primeira coisa a fazer é acessar o site oficial e baixar a última versão disponível, que neste momento é a versão 3.2.

Baixe então o arquivo no link: MonoGame 3.2.

Após baixar, basta executar o arquivo  MonoGameInstaller-3.2 para instalar o MonoGame.

Como o MonoGame é compatível com mais de uma versão do Visual Studio, durante a instalação você verá listadas as opções de instalação disponíveis para cada versão do Visual Studio. Assim, se você tiver mais de uma versão do Visual Studio, como eu, pode instalar o MonoGame para cada uma delas.

Após o término da instalação, abra o Visual Studio e em Start clique em New Project.

Selecione a linguagem C# e clique em MonoGame para visualizar os templates instalados:

monogame1

Descrição resumida dos templates instalados:

  • MonoGame Windows Phone 8 Project – Cria um projeto de jogo para o Windows Phone 8;
  • MonoGame Windows Store (XAML) Project – Projeto de um jogo estilo modern app para Windows 8 usando XAML;
  • MonoGame Windows Store Project – Projeto de jogo para Windows 8 (modern app);
  • MonoGame Android Project – Projeto para Android (requer o ‘Mono for Android’);
  • MonoGame Content Project – Cria projeto para armazenar recursos para serem compilados;
  • MonoGame Linux Project – Projeto para a plataforma Linux;
  • MonoGame OUYA Project – Projeto para OYYA (console com versão Android);
  • MonoGame Windows OpenGL Project – Projeto de jogo para Windows Desktop usando a API OpenGL;
  • MonoGame Windows Project – Projeto de jogo para Windows Desktop (modo janela).

Criando um jogo com o template Windows Project

Vamos criar um projeto de um jogo usando o template Windows Project.

Esse template é construído em cima do DirectX (mais precisamente SharpDX, que é construído em cima do DirectX). Há outra alternativa de modelo Windows que roda em cima do OpenGL. Na teoria, eles são equivalentes, embora você verá algumas pequenas diferenças na renderização, com a versão DirectX sendo mais bonita.

Devido à forma como o MonoGame funciona, escolher um modelo em detrimento de outro não irá enquadrá-lo de forma permanente. Para a maior parte, o código é o mesmo, independentemente do modelo que você escolher ou do objetivo final do jogo que você está desenvolvendo.

Vamos então selecionar este template e informar um nome para o projeto. Eu chamei o projeto de GameMac1:

monogame-2

Clicando no botão OK, veremos na janela Solution Explorer a solução GameMac1 e o seu projeto com todas as referências necessárias.

Note que por padrão é criada uma classe chamada Game1.cs que herda da classe Game e que está no namespace Microsoft.XNA.Framework.

Nesta classe, temos o fluxo principal da execução do jogo, que é composto por funções que serão executadas em determinada ordem (o Game Loop).

monogame-3

Vejamos uma breve descrição de cada uma das funções definidas na classe Game1 (Herdadas do XNA):

  1. Initialize() – É executada quando o jogo começa. Nesta função, definimos os valores iniciais das variáveis usadas no jogo e realizarmos verificações antes de a interface ser renderizada;
  2. LoadContent – É executada após a função Initialize() e carrega os recursos que serão usados durante o jogo (imagens, fontes, sons etc.);
  3. UnloadContent – Libera os recursos quando o Game Loop (loop principal) for finalizado;
  4. Update – É executada muitas vezes durante a execução do jogo. Nesta função, temos a atualização das variáveis do jogo, os cálculos, alteração de status etc.
  5. Draw – É executada após o Update em um loop e se repete até que o jogo seja encerrado. Aqui temos a renderização dos gráficos.

Dando uma espiada nos namespaces referenciados no projeto teremos:

código

Note que o namespace Microsoft.Xna.Framework é base da maioria dos recursos referenciados no projeto.

Executando o projeto, iremos obter uma janela conforme a figura abaixo:

monogame-4

Para fechar a janela tecle ESC.

Partindo deste projeto, você pode começar a criar o seu jogo e, para adicionar recursos como imagens, sons, fontes etc. ao seu jogo, você terá que instalar uma das ferramentas a seguir para poder compilar os recursos em um formato compatível com o MonoGame:

  • Instalar o XNA Game Studio 4.0 – tem recursos para criar jogos para Windows e XBox 360;
  • Instalar o Windows Phone 8 SDK – usado para compilar os recursos no ambiente do Visual Studio;
  • Usar o XNA content compiler (programa externo) – usado para compilar os recursos externamente.

Assim lançamos os fundamentos para que você possa iniciar o desenvolvimento de jogos usando o MonoGame.

Desenvolver jogos não é uma tarefa simples, mas movidos pela paixão e pelo talento vemos o resultado em jogos consagrados no mercado como Halo, FIFA, Mortal Kombat etc.