MonoGame é um framework gratuito, simples e poderoso usado para a criação de jogos direcionados a computadores desktop, consoles de videogame e dispositivos móveis, utilizando a linguagem de programação C#. Ele tem sido utilizado em uma ampla gama de lançamentos célebres, tais como Streets of Rage 4, Carrion, Celeste, Stardew Valley e muitos outros.

Este mecanismo é uma reimplementação open-source do descontinuado Microsoft XNA 4 Framework e oferece uma série de recursos ao desenvolvimento de jogos, incluindo um framework de jogo, sistemas de renderização 2D e 3D, reprodução de efeitos sonoros e música, entrada de teclado, mouse, toque e controle, construção e otimização de conteúdo, e uma biblioteca de matemática completa otimizada para jogos.

História Em 2009, José Antônio Leal de Farias, um membro ativo da comunidade XNA, iniciou um projeto de código aberto chamado XNA Touch com o objetivo de portar jogos XNA 2D simples para dispositivos móveis. Ele começou com o SilverSprite de Bill Reiss e alguns elementos do Mono.XNA. Em dezembro de 2009, o primeiro lançamento, que suportava apenas o iPhone, foi postado no Codeplex. Durante o ano de 2010, vários jogos para iPhone que utilizavam o XNA Touch começaram a aparecer na Apple App Store.

Em março de 2011 o projeto foi renomeado para MonoGame e foi movido para o GitHub. No mesmo ano foi adicionado o suporte para Android, Mac OS, Linux e OpenGL para Windows. Dominique Louis, que entrou no projeto em 2009, assumiu como o líder em tempo integral.

No início de 2012, foi adicionado suporte para DirectX 11 e Windows 8, fornecendo a primeira e atualmente única maneira de portar jogos XNA para a Windows Store. Posteriormente, isso resultou no suporte para o Windows Phone 8 e uma nova plataforma de desktop do Windows. Neste mesmo ano, a equipe do MonoGame foi convidada para falar no evento //Build 2012/ da Microsoft.

Em 2013, a Microsoft Studios publicou vários títulos utilizando o MonoGame no Windows 8 e Windows Phone 8. Também foi anunciado que os primeiros jogos MonoGame estariam chegando ao PlayStation 4, incluindo TowerFall Ascension, Transistor e Mercenary Kings.

No início de 2014, a administração do projeto MonoGame foi entregue a Tom Spilman e Steve Williams, que atualmente lideram o projeto.

Filosofia MonoGame é um framework que adota a filosofia de "traga suas próprias ferramentas", o que significa que fornece os componentes essenciais para construir sua própria engine e ferramentas, mas não se configura como uma engine completa. Ao contrário de outras soluções, como o Unity ou o Unreal, o MonoGame não possui um editor de cenas.

Destinado a programadores que apreciam compreender o funcionamento interno dos sistemas. Ele é desenvolvido com foco na liberdade de personalização e na possibilidade de compreender profundamente os processos subjacentes.

Versões O MonoGame lançou várias versões importantes ao longo dos anos, cada uma trazendo mudanças significativas ao framework. Abaixo, você encontrará uma lista contendo as principais versões lançadas até o momento, contendo detalhes e informações relevantes sobre suas alterações e atualizações no projeto. Todas as informações foram retiradas da página oficial de registro de alterações no site do MonoGame.

XnaTouch 0.7 No dia 2 de dezembro de 2009, foi lançada oficialmente a versão 0.7 do MonoGame, que inicialmente recebeu o nome de XnaTouch 0.7. Essa versão representou um marco importante, sendo a primeira versão estável do framework, e foi desenvolvida com foco exclusivo no suporte ao iPhone. Suas principais funcionalidades incluíam recursos de renderização 2D, reprodução de áudio, capacidades de rede e suporte parcial para interações multitouch. Além disso, havia suporte parcial para aproveitar os recursos do acelerômetro do dispositivo.

MonoGame 2.0 Em 28 de outubro de 2011, foi lançada a versão 2.0 do MonoGame, trazendo consigo importantes mudanças. Nessa atualização, o projeto foi renomeado para MonoGame e passou a ser hospedado no GitHub, o que trouxe maior acessibilidade e possibilitou uma colaboração mais ampla com a comunidade de desenvolvedores. Além disso, o suporte foi expandido além do iPhone, incluindo agora plataformas como Linux e Mac. Essa atualização permitiu que um número maior de desenvolvedores utilizasse o framework em diferentes sistemas operacionais e se beneficiasse das funcionalidades oferecidas pelo MonoGame.

MonoGame 2.1 No dia 28 de outubro de 2011, foi lançada a versão 2.1 do MonoGame, trazendo consigo várias melhorias e adições para várias plataformas suportadas pelo framework. Diversas características foram aprimoradas, como a reescrita do gerenciador de conteúdo, que passou a utilizar classes parciais e as implementações em cache, que resultaram em uma redução significativa no uso de memória. Além disso, foram feitas melhorias na classe ContentReader e no suporte de áudio XACT. Além disso, também havia sido adicionado suporte para gamepads e joysticks, com planos para melhorias futuras nas integrações.

No iOS, ocorreram melhorias no suporte a gestos e na transição entre os modos retrato e paisagem. O suporte à WaveBank também foi aprimorado, e a funcionalidade Guia estava disponível exclusivamente para o iOS nessa versão.

No Android, foi feita uma atualização para oferecer suporte ao Mono para Android 4.0. Também houve melhorias no suporte de orientação e o sistema de som foi alterado para utilizar o SoundPool. Além disso, o suporte a gestos de toque e toque duplo foi adicionado.

No MacOS X, foram realizados diversos aprimoramentos e correções relacionados ao modo de tela cheia e ao controle em janela. Também foram implementadas várias propriedades e eventos para controle de atividade e eventos no dispositivo. As funções de renderização, como DrawPrimitives, DrawUserPrimitives e DrawIndexedPrimitives, também receberam melhorias significativas. Além dessas mudanças, o suporte à WaveBank foi aprimorado.

Nos sistemas Linux e Windows, foram adicionadas novas implementações que compartilhavam grande parte do código com o MacOS X. Além disso, foi acrescentado suporte a shaders no Linux.

MonoGame 2.5 No dia 29 de março de 2012, foi lançada a versão 2.5 do MonoGame, trazendo diversas correções e adições para diferentes plataformas suportadas pelo framework. Essas mudanças visavam melhorar a estabilidade e a confiabilidade em busca de jogos, além de aprimorar a funcionalidade geral do MonoGame.

Algumas das alterações realizadas incluíram correções na pilha de rede para aprimorar a busca por jogos e garantir uma experiência mais confiável. Além disso, foram realizadas atualizações nos códigos de renderização e no código do jogo para que estivessem em conformidade com o XNA 4.0 e para garantir uma compatibilidade adequada.

MonoGame 3.0 No dia 1º de janeiro de 2013, foi lançada a versão 3.0 do MonoGame, trazendo consigo diversas melhorias e adições ao projeto. Essa atualização expandiu o suporte para novas plataformas, incluindo Windows 8, Windows Phone 8, OUYA e PlayStation Mobile, incluindo o Vita.

Uma das principais novidades dessa versão foi a introdução de efeitos personalizados, que permitiam aos desenvolvedores criar efeitos visuais exclusivos para seus jogos. Além disso, foi adicionado suporte PVRTC para iOS, o que resultou em melhor desempenho e qualidade gráfica em dispositivos Apple. O iOS também passou a suportar músicas compactadas, reduzindo o tamanho dos arquivos de áudio sem comprometer significativamente a qualidade.

Também houve melhorias na compatibilidade com o XNA 4, tornando o MonoGame mais semelhante ao comportamento dessa versão e facilitando a transição para os desenvolvedores familiarizados com o Microsoft XNA 4 Framework.

MonoGame 3.2 No dia 7 de abril de 2014, foi lançada a versão 3.2 do MonoGame, trazendo uma série de melhorias e adições significativas. Essa atualização trouxe o suporte oficial ao Visual Studio 2013 para modelos MonoGame e melhorias no desempenho do XInput no Windows/Windows 8.

Em relação a recursos e compatibilidade, essa versão trouxe suporte para texturas DXT/S3TC no Android, melhorias no suporte a toque em jogos de desktop do Windows, aprimoramentos no renderizador 3D e melhorias no gamepad OUYA. Internamente, o MonoGame passou por atualizações para reduzir a geração de lixo em seu sistema.

Outras melhorias incluíram suporte automático para recarga de conteúdo no currículo para Android, suporte para TextureCube, Texture3D e RenderTargetCube no DirectX, e aprimoramento de TitleContainer.SupportRetina para carregar conteúdo em alta resolução.

Além disso, a versão 3.2 trouxe várias correções e melhorias em áreas diversas do framework, como em operações de matemática, renderização, áudio e mídia. Além dessas, foram feitas outras correções externas específicas para o iOS, Windows Phone e PSM (PlayStation Mobile).

E por último, uma nova plataforma desktop para Windows havia sido introduzida, utilizando DirectX/XAudio, e o projeto antigo do Windows ela foi renomeada para WindowsGL.

MonoGame 3.3 No dia 16 de março de 2015, foi lançada a versão 3.3 do MonoGame, trazendo uma série de melhorias e novos recursos. Nessa atualização, foram adicionados sistemas modernos para a manipulação de inputs do teclado, além de mais validação para desenhar chamadas e renderizar elementos. Também foi introduzido o suporte para busca de textura de vértice no Windows.

Foram realizadas otimizações, como a redução de chamadas OpenGL redundantes, aprimoramentos nos cálculos de zona morta do gamepad e a utilização do FFmpeg para construção de conteúdo de áudio. Além disso, foram feitas várias correções e melhorias específicas para Android, iOS, Windows Phone e Windows Store. O pipeline de conteúdo também foi aprimorado com o suporte opcional de compactação de conteúdo.

Outras atualizações incluíram a criação de todas as ferramentas e pipeline de conteúdo para 64 bits. Houve correções para PSM e adição de suporte Protobuild para geração de projetos. Também foi realizada uma refatoração interna para uma melhor separação do código específico da plataforma, além da adição da ferramenta de linha de comando MGCB ao instalador do Windows pertencente ao MonoGame.

MonoGame 3.4 No dia 29 de abril de 2015, foi lançada a versão 3.4 do MonoGame, trazendo diversas melhorias e correções ao framework. Nessa atualização, as extensões de pipeline de conteúdo antigas do XNA foram removidas e substituídas por novos tipos que foram adicionados ao projeto para preencher as lacunas existentes.

Uma das melhorias significativas foi feita na documentação de referência, proporcionando um melhor entendimento e acesso às informações sobre o framework. Além disso, foram realizadas melhorias nas versões Mac, Linux e Windows da ferramenta Pipeline GUI, aprimorando sua usabilidade e funcionalidade.

MonoGame 3.5 Em 17 de março de 2016, foi lançada a versão 3.5 do MonoGame, trazendo consigo uma série de melhorias e novos recursos. Uma das principais novidades foi a integração do pipeline de conteúdo com o Xamarin Studio e o MonoDevelop no Mac e no Linux, tornando mais fácil e automático incluir os arquivos XNB no projeto final nessas plataformas.

Uma refatoração significativa no suporte a texturas no pipeline de conteúdo foi realizada, visando melhorar a eficiência e a qualidade do processamento. Além disso, foram adicionados 151 novos testes de unidade, garantindo uma maior estabilidade e confiabilidade do framework. Foram feitas melhorias significativas no processamento de modelos FBX, bem como correções para a serialização XML.

Uma adição importante foi a implementação da MediaLibrary para plataformas Windows, proporcionando aos desenvolvedores uma maneira fácil de gerenciar e acessar arquivos de mídia. A plataforma PlayStation Mobile foi removida nessa versão. Também foi introduzido um projeto de modelo de extensão para o pipeline de conteúdo.