FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame

Post on 15-Jul-2015

224 views 0 download

Transcript of FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame

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