flisol 2015 - desenvolvimento de jogos para linux com monogame
TRANSCRIPT
Mercado de jogos
“Segundo a PricewaterhouseCoopers, o mercado mundial dejogos digitais movimentou U$57 bilhões em 2010, enquanto o decinema, U$ 31.8 bilhões. Em 2011 o setor movimentou U$ 74bilhões, e as previsões indicam que deverá ultrapassar U$ 82bilhões em 2015. Em 2013, apenas o lançamento do jogo GTA V,que teve o custo de U$ 225 milhões, faturou U$ 800 milhões em24 horas, um recorde na história de produtos de entretenimento. Ojogo Angry Birds já foi instalado em 500 milhões de celulares. NoBrasil, estima-se que o mercado já esteja perto de U$ 3 bilhões.”
Fonte: Relatório final - GEDIGames 2014
Participação no mercado
Participação no mercado
Faturamento de empresas brasileiras
Áreas de aplicação
Jogos Educacionais
Advergames
Pesquisa
Simuladores
Entretenimento
Etc…
O que são Game Engines?
Engines são “kits” para desenvolvimentos de jogos utilizados para aproveitar algumas características comuns e presentes em todos os games. As enginesnormalmente implementam física, renderização de imagens, interação com arquivos multimídia, partículas e etc. Elas funcionam como um motor do jogo (por isso o nome engine), sendo responsável por todas as funcionalidades de “baixo nível” que o jogo precisa, como por exemplo, o “refresh” da tela com base no FPS, reações de objetos físicos, carregamento de texturas e etc.
Game Engines para Linux
• LibGDX - Java
• Cocos2d-X - C++
• MonoGame – C#
Projeto Mono
O mono é um projeto open-sourceoriginalmente criado pela Novell e atualmente mantido pela Xamarin para criar um conjunto de ferramentas compatíveis com a plataforma .NET, incluindo, entre outras ferramentas, um compilador de C#, compatíveis com ambientes Linux, BSD, OS X, Windows, Solaris, Android e também consoles como Playstation 3, 4, Vita, Wii e Xbox 360.
Plataforma de Desenvolvimento
O que é MonoGame?
Engine open-source baseada no OpenTK (OpenAL, OpenGL) para desenvolvimento de jogos em C# com uma API unificada que funciona da mesma forma em todas as plataformas suportadas (Android, Windows, Mac, Linux, iOS). Implementando a interface do Microsoft XNA, o que permite uma fácil portabilidade dos jogos desenvolvidos nativamente no framework.
Features
Multiplataforma (Android, iOS, Windows, Mac, Linux, Windows Phone, Playstation 3, 4 e Vita, Xbox 360, Raspberry Pi);
Utilização da OpenGL para gráficos 2D e 3D;
Conjunto de ferramentas de suporte;
Diversos livros e tutoriais na internet;
Forte apoio da comunidade.
Amplo suporte da comunidade
Diversos sites e fóruns voltados a temas específicos do
MonoGame e XNA:
monogame.net
programadoresdejogos.com
unidev.com.br
rbwhitaker.wikidot.com
Requisitos no Linux
MonoDevelop;
Mono MDK;
MonoGame;
Placa de vídeo compatível com OpenGL 2.0.
Comando para instalação dos requisitos no Ubuntu
Site MonoGame
Site com fórum, wiki,
documentação e acesso
ao repositório para com
o código fonte da
engine.
http://www.monogame.net
Jogos feitos pela comunidade
Vídeo
Renderização de Imagens
Renderização de Imagens
Antes de tratarmos deste assunto, conferir abaixo o significado de alguns jargões que utilizamos com frequência para gráficos em 2D:
Texturas
Sprites
Background
Tiles
Renderização de Imagens
Sistema de coordenadas de uma cena
Animação
Sistemas de Colisão
Colisão Bounding Box
Colisão Bounding Sphere
Colisão por Pixels
Scrolling
Técnica de Side Scrolling
Técnica de Parallax Scrolling
Vídeo
Arquitetura de um jogo
Ao se criar um projeto, são gerados dois arquivos:
Program.cs
Game1.cs
Arquitetura de um jogo
Código do Program.cs:
static void Main(string[] args)
{
using (Game1 game = new Game1())
{
game.Run();
}
}
Arquitetura de um jogo
Classe “Game”:
É a classe central da arquitetura
Tem, internamente, um game loop chamado a cada
1/60 de segundo (default, 60FPS)
Game1.cs
• public Game1() : Construtor – cria os objetos Graphics e Content
• Métodos chamados pela classe Game (“Eventos” do jogo)
• Initialize() : Inicializa recursos lógicos não gráficos
• LoadContent() : Utilizada para carregar recursos
• UnloadContent() : Chamada para liberar recursos
• Game Loop:
l Update(GameTime gameTime) : Onde se constroe a lógica do jogo (cálculos)
l Draw(GameTime gameTime) : Utilizado para carregar as rotinas de desenho em uma tela
Game Loop
Initialize() LoadContent()
Update() Draw()
UnloadContent()
Vídeo
Ferramentas Avançadas
Compactação de texturas:
ShoeBox - http://renderhjs.net/shoebox/
Editor de mapas com tiles:
Tiled - http://www.mapeditor.org/
Gerador automático de sonoplastia:
SFXr - http://www.drpetter.se/project_sfxr.html
Ferramentas Avançadas
Utilização de repositório Git:
Source Tree e Bitbucket - https://bitbucket.org/
Edição de áudio:
Audacity - http://web.audacityteam.org/
Composição de trilha sonora:
Linux MultiMedia Studio - https://lmms.io/
Edição de imagens:
Gimp - http://www.gimp.org/
Conclusão
Desvantagens
Requer conhecimentos (ou dedicação nos estudos)
no processo de desenvolvimento de jogos em
“baixo” nível (engine de média complexidade).
Vantagens
Simplifica o processo de desenvolvimento multiplataforma;
Boas APIs de física;
Debug em tempo real;
Muitos códigos de exemplo;
Destaque na comunidade;
Open-source.
Por onde começar
MonoGame Website
http://www.monogame.net/
http://www.monogame.net/documentation
Obrigado a todos!
Sinextra Game Studio
BelJogos