.NET - Desenvolvendo jogos com o MonoGame


 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 eu 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 http://www.monogame.net/downloads/  e baixar a última versão disponível, que neste momento é a versão 3.2.

Baixe então o arquivo no link  :

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á listada 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:

Descrição resumida dos templates instalados:

  1. MonoGame Windows Phone 8 Project - Cria um projeto de jogo para o Windows Phone 8;

  2. MonoGame Windows Store (XAML) Project - Projeto de um jogo estilo modern app para Windows 8 usando XAML;

  3. MonoGame Windows Sotre Project - Projeto de jogo para Windows 8 (modern app);

  4. MonoGame Android Project - Projeto para Android (requer o 'Mono for Android');

  5. MonoGame Content Project - Cria projeto para armazenar recursos para serem compilados;

  6. MonoGame Linux Project - Projeto para a plataforma Linux;

  7. MonoGame OUYA Project - Projeto para OYYA (console com versão Android);

  8. MonoGame Windows OpenGL Project - Projeto de jogo para Windows Desktop usando a API OpenGL;

  9. 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;

Este template é construído em cima do DirectX. (Mais precisamente, SharpDX, que é construído em cima do DirectX.) Há uma 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 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 o 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:

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 esta no namespace Microsoft.XNA.Framework.

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

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 da 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:

#region Using Statements

using System;

using System.Collections.Generic;

using Microsoft.Xna.Framework;

using Microsoft.Xna.Framework.Content;

using Microsoft.Xna.Framework.Graphics;

using Microsoft.Xna.Framework.Input;

using Microsoft.Xna.Framework.Storage;

using Microsoft.Xna.Framework.GamerServices;

#endregion

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:

Para fechar a janela tecle ESC.

Partindo deste projeto você pode começar a criar o seu jogo e para poder 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:

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.

Vou deixar alguns links para outros site onde você poderá encontrar mais material para se aprofundar no assunto.

E Deus limpará de seus olhos toda a lágrima; e não haverá mais morte, nem pranto, nem clamor, nem dor; porque já as primeiras coisas são passadas.
Apocalipse 21:4

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti