sexta-feira, 18 de abril de 2014

XNA Game Studio - O Recomeço

Faz 4 anos que eu não atualizo o meu blog. E nesse longo tempo fiquei bem afastado do desenvolvimento com o XNA Game Studio.

Essa semana, resolvi dar uma olhada em todos os meus projetos e ajeitar o código deles com o objetivo de colocá-los no GitHub. Ia começar pelos tutoriais aqui do blog pois até hoje recebo muitos e-mails de leitores me pedindo ajuda.

Ao tentar configurar meu PC para ajeitar o código dos tutoriais aqui do blog me deparei com uma triste notícia: o XNA foi descontinuado pela Microsoft. 

Inicialmente fiquei triste com a descoberta mas depois de investigar um pouco descobri que não há motivos para a tristeza. Um projeto chamado MonoGame está dando continuidade ao framework.

Lembram do Mono.XNA?

Em outubro de 2008 escrevi um post sobre uma implementação multi plataforma e open source do XNA framework. Em março de 2011, o projeto foi renomeado para MonoGame e foi movido para o GitHub.

O objetivo do projeto é permitir que os desenvolvedores que usam o XNA para desenvolver jogos para Xbox 360, Windows e Windows Phone, também consigam portar esses jogos para IOS, Android, Mac OS X, Linux e Windows 8 Metro. O desenvolvimento para PlayStation Mobile, Raspberry PI e PlayStation 4 também está em andamento.




Página do projeto: http://www.monogame.net/

Um recomeço

O que parecia uma notícia ruim acabou se tornando uma notícia, no mínimo, animadora. Com nosso conhecimento em XNA, agora podemos desenvolver jogos que podem ser publicados em diversas plataformas.

Em breve tentarei escrever um tutorial sobre esse novo assunto, ou então portar o tutorial antigo para o MonoGame.

Abraços a todos. Até breve.

quinta-feira, 1 de abril de 2010

Novidade - XNA 4.0

Faz mais de 6 meses que eu não apareço para atualizar o blog.

O ano de 2010 começou e tivemos diversas boas notícias sobre o desenvolvimento de jogos com o XNA Game Studio.

As que mais me chamaram a atenção foram o lançamento da versão 4.0, e com isso a possibilidade de criar jogos para Windows Phone.

Agora além de conseguirmos fazer jogos para PC, Xbox360 e Zune, também poderemos disponibilizar nossos jogos para qualquer celular ou smatphone que utiliza o sistema operacional da Microsoft. O melhor de tudo: da mesma maneira que fazíamos antes.

No site http://creators.xna.com/en-US/article/firstwindowsphonegame temos um breve tutorial de como começar a desenvolver jogos para windowsphone.

No site http://developer.windowsphone.com/windows-phone-7-series/ temos alguns exemplos, demos e documentações também sobre o desenvolvimento.

Em breve se for possível farei um tutorial sobre o assunto.

Abraços a todos. Até a próxima.

quinta-feira, 6 de agosto de 2009

Tutorial - Nosso Primeiro Jogo 2D - Extra


Este será o nosso último tutorial da série de desenvolvimento do nosso primeiro jogo 2D. Esse tutorial foi baseado nos vídeos Beginners Guide to 2D Games encontrado no site creators.xna.com.

Nesta última parte iremos surpreender os jogadores do nosso simples jogo com explosões bem legais a cada destruição.

Salvando as Novas Imagens e Adicionando ao Projeto

Começaremos esta parte do nosso tutorial, adicionando ao nosso projeto as imagens que usaremos para a explosão e a fumaça de nossas explosões. Para isso vamos salvar as imagens abaixo com seus seguintes nomes em nosso PC clicando com o botão direito do mouse.

explosion:

smoke:
Agora, no Visual C# Express Edition, no Solution Explorer, vamos clicar com o botão direito do mouse na pasta Sprites que está dentro de Content. Agora iremos adicionar as novas imagens assim como fizemos com as outras, clicando em Add->Existing Item e selecionando as novas imagens no local onde as salvamos.


Criando o Sistema de Particulas

Para fazer as explosões dos aviões inimigos no nosso jogo iremos precisar de um sistema de particulas para que fiquem mais realistas as explosões e a fumaça.

Assim ainda no solution explorer, vamos criar uma nova classe que será a responsável por cada particula de efeito no nosso jogo, clicando em Belonave->Add->New Item->Class, o nome do arquivo se chamará Particle.cs.

Essa nossa classe será uma classe pública, assim vamos mudar a declaração dela para public class Particle. E não podemos esquecer também de mudar os using para os do XNA como na figura abaixo.


Nossa partícula terá os seguintes atributos: position; velocity; acceleration; lifetime, por quanto tempo a particula ficará viva; timeSinceStart, quanto tempo já passou desde que ela foi criada; scale; rotation; rotationSpeed, a velocidade da rotação da particula; e também o isActive, que indicará se a partícula ainda está "viva".


Nossa partícula também terá dois métodos, um para inicializa-la e um para atualiza-la. O primeiro irá inicializa-la em uma posição, com uma velocidade e aceleração, um tempo em que ficará viva, sua escala e a velocidade de sua rotação. Daremos também, ainda nesse primeiro método, o tempo desde que foi iniciada a particula como 0.0 já que esse método é o que inicializa nossa particula. Se estivermos atentos iremos perceber que ainda falta inicializarmos a rotação, mas isso faremos em outro momento mais a frente.


Agora trataremos da parte de atualização da nossa particula. O que faremos basicamente é manter os atributos dela atualizados a cada intervalo de tempo.

Agora que temos nosso modelo de particula, podemos criar o nosso sistema de particulas, que será responsável por gerenciar todas as particulas do nosso jogo. Assim como fizemos para criar o Particle.cs, vamos fazer o mesmo para criar o ParticleSystem.cs.

Mas nessa nossa nova classe, não só trocaremos os using, e tornaremos ela pública, como também a tornaremos abstrata e faremos ela herdar da classe DrawableGameComponent. Isso significa que ela irá proporcionar as funcionalidades básicas para criarmos um efeito de partículas. Outras subclasses irão extender os efeitos dessa classe de uma maneira mais customizada.


Ela terá acesso a diversos atributos de outras classes como do objeto ao qual daremos o efeito de explosão e fumaça. Teremos também um gerador de números randomicos para dar mais realidade ao nosso efeito.


Outras constantes também serão necessárias pois serão usadas nos sistemas de particulas mas especializados que criaremos a seguir. Continuaremos na linha onde paramos anteriormente.



Agora poderemos passar para o construtor da nossa classe. No construtor receberemos o nosso Game, o numero de particulas que esperamos ver na tela a cada momento e o nome da nossa textura.

Nossa classe terá também a implementação das funções Initialize, LoadContent, Update e Draw. Mas antes de começarmos a implementá-las, temos que implementar diversos métodos auxiliares para nosso sistema de particulas, ainda continuando abaixo de onde paramos antes.
Agora abaixo das implementações que acabamos de fazer, vamos implementar os métodos Initialize:

LoadContent:



Update:

e Draw:

E temos também que lembrar que deixamos para setar o atributo rotation da classe Particle, o que faremos agora:

Sistemas de Particulas Customizados

Agora que já temos a base do nosso sistema de particulas, podemos começar a trabalhar nos nossos sistemas especializados em explosões e fumaça. Como fizemos para adicionar o Particle.cs e o ParticleSystem.cs, vamos adicionar também mais dois arquivos ao nosso projeto, o ExplosionParticleSystem.cs e o SmokeParticleSystem.cs.

Faremos também as mesmas alterações dos using que fizemos nos outros arquivos e tornaremos estas classes também públicas e as faremos herdar do nosso recém finalizado ParticleSystem.

Devido ao grande trabalho que tivemos implementando o nosso ParticleSystem, nessas nossas classes especializadas, só precisaremos implementar três funções: a InitializeConstants(), InitializeParticle() e o construtor delas.

Começaremos pela classe ExplosionParticleSystem:

Seu construtor:
InitializeConstants:

InitializeParticle:
Agora na classe SmokeParticleSystem:

Seu construtor:
InitializeConstants:

Agora, para finalizarmos, devemos ir a nossa classe Game.cs e fazer as seguintes alterações:

Mais algumas variáveis:


Construtor:
UpdateCannonMissiles:

Ahh... ainda em Game.cs não podemos esquecer de um último detalhe:


Se não nos esquecemos de nenhum detalhe, podemos rodar nosso jogo e veremos explosões e fumaças realistas ao derrubarmos cada aeronave inimiga.

Resumo

Esta foi a ultima parte do nosso tutorial de como criar um jogo 2D com o XNa Game Studio. Nela conseguimos criar um sistema de particulas e simular explosões e fumaça no nosso jogo... Poderiamos expandir esse sistema para abordar outras formas de particulas como um brilho mágico, neblina, sei lá, depende da sua imaginação.

Espero que as coisas fiquem bem claras e qualquer dúvida não exitem em entrar em contato comigo, via comentários, via e-mail, etc.

Sei que ficou bastante "cuspido" esta ultima parte, mas é resultado da minha falta de tempo, por isso estou bem aberto para responder a duvidas sejam quais forem.

Espero que tenha ajudado e que a maioria tenha gostado.

Em breve colocarei uma enquete aqui para saber qual será a temática do próximo tutorial.

Abraços a todos.