terça-feira, 30 de setembro de 2008

Camello XNA Feeds

Olá Pessoal,

Agora vocês podem estar ainda mais ligados em nosso blog e suas atualizações.

Inscrevam-se no feed do camelloxna.blogspot.com e estejam sempre atualizados com nossos posts. É gratis, fácil e não precisa fornecer informações pessoais como em um boletim informativo.

Espero que todos gostem da novidade.

Abraços
Leo Camello

segunda-feira, 29 de setembro de 2008

Camello XNA no Orkut

Olá Pessoal,

No dia 25 de setembro criei uma comunidade do blog no Orkut. O intuito da comunidade é ser um espaço onde possamos debater e discutir mais as idéias, tutoriais e novidades colocadas aqui no blog. Lá cada um pode também se manter informado sobre as principais atualizações que posto aqui e sugerir novos conteúdos assim contribuindo para o crescimento do blog.

Conto com a participação de vocês!

Acessem através do link ou na parte de links importantes do blog.

Obrigado desde já.
Espero que todos gostem!

Leo Camello

domingo, 28 de setembro de 2008

Tutorial - Nossa Primeira Aplicação - Parte 3/3

Nesta terceira parte de nosso tutorial iremos interagir com a imagem que adicionamos ao projeto e desenhamos na tela. O objetivo é primeiro fazer nosso aviãozinho se mexer, depois veremos como fazer o aviãozinho detectar os limites de nossa janela e tratar isso fazendo com que ele bata no limite da tela e volte, como não queremos que ele volte de "marcha ré", veremos também como girar ou inverter nossa imagem. Ao final teremos uma aplicação em que nosso aviãozinho fica voando, indo e voltando no topo da tela e com isso teremos entendendo alguns principios mais basicos de manipulação de imagens em um ambiente 2D com o XNA Game Studio.

Abriremos novamente o Visual C# 2005 Express Edition e o nosso projeto, ou pela Start Page em Recent Projects, ou em File->Open Project... se sabemos onde salvamos nosso projeto.

Voltamos a ter nosso Game1.cs aberto. Caso o Game1.cs não esteja aberto é só dar um duplo clique em Game1.cs no Solution Explorer.

Antes de darmos algum movimento a nossa imagem vamos tentar entender um pouco melhor como funciona o sistema de coordenadas 2D que usaremos no XNA Game Studio.

Sistema de Coordenadas 2D

Como muitos de nós estudamos no colégio, em duas dimensões, temos um plano que chamamos de plano cartesiano que é representado por um eixo X e um eixo Y perpendiculares. O sistema de coordenadas 2D do XNA Game Studio, que chamamos de "coordenadas da tela", apresenta apenas uma diferença sobre esse que estudamos no colégio. No cartesiano, a origem dos eixos, geralmente fica na parte inferior esquerda e o eixo Y cresce de baixo para cima enquanto no plano da tela, a origem dos eixos fica na parte superior esquerda e o eixo Y cresce de cima para baixo. No plano da tela, os eixos X e Y estão diretamente relacionados com a resolução da tela, ou seja, se sua tela tem resolução de 800x600 isso quer dizer que o eixo X terá 800 pixels e o Y terá 600 pixels.

Por isso ao inicializarmos nossa variável planePosition como um vetor Zero, ou seja, um vetor que tem 0 como coordenada X e 0 como coordenada Y, nosso aviãozinho apareceu lá na parte superior esquerda da tela.

Movimentando Nossa Imagem

Então, agora que entendemos como é o sistemna de coordenadas da tela, como faríamos para o nosso aviãozinho se mexer? Sabemos que o método Draw() está desenhando nosso aviãzinho de acordo com sua posição a cada quadro, e sabemos também que no método Update() podemos fazer alterações a cada quadro. Assim no método Update() iremos somar um valor a nossa variável posição para que a posição de nosso aviãozinho seja atualizada a cada quadro.

No caso, fiz com que planePosition = planePosition + (1.0, 0.0), o que faz com que a cada quadro a posição do aviãozinho aumente 1 pixel em X.

Se rodarmos nosso projeto, ou na setinha verde de Start Debugging, ou em menu Debug->Start Debugging ou em F5, e tivermos feito as modificações exatamente como as mostradas, nosso aviãozinho irá se movimentar para a direita... direita... direita... até que sai da nossa janela de visualização.

Detectando os Limites da Tela

Agora vamos tentar evitar que o nosso aviãozinho saia da tela. A cada quadro iremos checar se ele ainda está na tela e caso não esteja iremos tratar isso. Podemos tratar de inumeras maneiras dependendo do que queremos, nesse caso do aviãozinho, podemos mandar ele parar ou então ir na direção contraria.

Como comentei ao explicar um pouquinho sobre as coordenadas da tela, o plano que podemos ver na tela em que o aviãzinho está se movimentando tem as dimensões da resoluçã de nossa janela, assim podemos testar antes de cada movimento se a posição do aviãzinho ultrapassa essas barreiras e se ultrapassar faremos com que ele "voe" na direção contraria que estava voando.

Criaremos uma variável velocity que indica a direção em que nosso avião se moverá. Essa variável irá substituir aquele vetor fixo que estavamos usando para fazer o avião se mover 1 pixel para a direita.

Agora, se nosso aviãozinho chegar em qualquer extremidade da tela, faremos com que planeVelocity = -planeVelocity, o que inverterá a direção do vôo. Em C#, assim como em outras linguagens, realizamos testes usando o comando if(checagem){faça algo}.

Para conseguir informações como as dimensões da nossa janela, usaremos a variável graphics que já vem declarada e inicializada para nós com o graphicsDeviceManager.


Testaremos se a posição X do nosso aviãozinho é menos do que zero(limite esquerdo da tela) ou ( simbolizado por || ) é maior que a largura da nossa tela menos a largura da nossa imagem. A subtração pela largura da nossa imagem é necessária pois a posição da mesma é indicada pela sua parte superior esquerda.

Rodando nossa aplicação veremos que o aviãozinho voa, voa, chega no final, bate e volta... mas volta de "marcha ré" e esse não seria o efeito desejado num jogo.

Fazendo o Flip da Imagem

Vamos declarar na nossa classe Game1.cs mais uma variável, desta vez um bool que chamaremos de planeFlip. Esse bool assumirá o valor true se o avião precisar ser "flipado" e false se puder ser desenhado da maneira normal. Inicializamos essa variavel com false para que inicialmente o nosso avião seja desenhado da maneira como é a imagem.


No método Update(), ao detectarmos uma colisão com os limites da tela, devemos mudar o planeFlip para que desenhe a imagem como desejamos. A cada colisão invertemos o sentido da imagem fazendo o planeFlip ser o inverso do que era anteriormente.

Agora no método Draw(), verificamos através do planeFlip como devemos desenhar a nossa imagem. O spriteBatch.Draw() tem um overload que nos permite aplicar efeitos a imagem que estamos desenhando e um desses efeitos é o flip horizontal que dará o efeito que desejamos. Sempre que o aviãozinho bater na direita devemos desenhar ele flipado até bater na direita quando o desenhamos normal.

Então, finalmente, rodando nossa aplicação veremos que nosso aviãozinho voa para um lado e para o outroda maneira que esperavamos.


Resumo

Nesta última parte do nosso tutorial vimos o conceito de coordenadas da tela, vimos também como dar movimento a uma imagem e como usar efeitos ao desenha-la na tela, e como obter parametros da tela através do graphicsDeviceManager.

Aos menos familiarizados com programação e nossa linguagem C# vimos variáveis do tipo bool que assumem valores verdadeiro ou falso, vimos também como fazer um bloco de código condicional com if e else.

Espero que tenham gostado deste nosso primeiro tutorial nos dando uma visão bem básica do XNA Game Studio mas revelando também a diversidade de possibilidades que temos para desenvolver um jogo nessa ferramenta.

No próximo tutorial implementaremos um joguinho básico, onde, além dos conceitos vistos neste tutorial veremos como organizar melhor nosso código através da criação de outras classes e falarei um pouco de orientação a objetos, veremos como podemos embelezar mais um jogo colocando um background e também veremos como realizar interações através da leitura do teclado, do mouse ou do XBox Controller.

quinta-feira, 25 de setembro de 2008

Tutorial - Nossa Primeira Aplicação - Parte 2/3

Esta segunda parte do nosso tutorial visa explicar um pouquinho sobre o código que já vem implementado ao criarmos um projeto no XNA Game Studio, adicionar uma imagem ao projeto e exibi-la na tela.

Na parte um do nosso tutorial criamos com sucesso nosso primeiro projeto e percebemos que ao rodar o nosso projeto sem fazer nenhuma alteração no código temos um "jogo" que é apenas uma tela azul e nada ocorre. Na verdade temos algumas coisas acontecendo por trás daquela tela azul que iremos analisar dentro do código que já nos é gerado pelo XNA Game Studio

Abriremos novamente o Visual C# 2005 Express Edition e o nosso projeto ou pela Start Page em Recent Projects ou por File->Open Project... se sabemos sua localização.

Voltamos a ter nosso
Game1.cs aberto, caso o Game1.cs não esteja aberto no seu projeto é só dar um duplo clique em Game1.cs no Solution Explorer, vamos analisar o codigo implementado nesse arquivo.

Analisando o Código

Ao rolarmos o codigo e lermos um pouco ele vemos muitas coisas. Logo no início do arquivo temos vários using, temos o namespace do projeto e a classe Game1(public class Game1) que é a classe em que iremos nos focar pois é onde quase tudo acontece. Podemos perceber que a classe Game1 é uma classe derivada da classe Microsoft.Xna.Framework.Game (public class Game1 : Microsoft.Xna.Framework.Game) e esta é uma classe base do XNA framework que tem encapsulada criação de janelas, gráficos, audio entre outros.

Vamos nos focar nos métodos da classe Game1. Ao programarmos um jogo qualquer temos que inicializar tudo que iremos usar no nosso jogo e implementar o game loop que irá desenhar na tela, atualizar e interagir com a nossa lógica. O XNA Game Studio já nos fornece métodos de inicialização, de carregamento de conteúdo, de atualização e de desenho (protected override void Initialize(), protected override void LoadContent(), protected override void Update(GameTime gameTime), protected override void Draw(GameTime gameTime)).

Initialize()


É o método onde faremos todas as nossas inicializações não gráficas. Ele é chamado uma vez quando rodamos o nosso jogo. Não inicializamos as partes gráficas nele pois é comum um jogo ter que recarregar as partes gráficas por exemplo quando mudamos sua resolução.

LoadContent()

É o método onde carregaremos todos os gráficos do nosso jogo. Ele é chamado toda vez que o jogo tiver que carregar ou recarregar os gráficos como por exemplo o caso de mudança de resolução dado acima.

Update()

É o método onde adicionamos todos os cálculos do nosso jogo como leitura e processamento de entradas do usuário, movimentos , colisões, inteligência artificial entre outros. Ele é chamado diversas vezes durante um jogo pois faz parte do loop em que o jogo fica até seu fim.

Draw()

É o método onde inserimos todo o código responsável pela renderização dos objetos do nosso jogo, ou seja, é ele que desenha tudo na nossa tela.



obs: temos também o método
UnloadContent() que não estou comentando pois geralmente não inserimos nenhum código extra nele pois ele tem a função de liberar recursos do nosso jogo mas isso já é feito automáticamente quando aquele recurso deixa de ser necessário.

Agora que já entendemos um pouco das partes em que nossa classe Game1 é dividida podemos começar uma parte mais divertida. Iremos adicionar a nossa imagem ao projeto e iremos exibi-la na tela.

Adicionando Nossa Imagem

Antes de iniciarmos irei disponibilizar uma imagem de um aviãozinho que desenhei especialmente para ilustrar este tutorial.

Cliquem na imagem acima e quando ela abrir na janela do seu browser salve ela com o nome
"plane.png" em algum lugar do seu computador que você se lembre de onde ela estará.

Agora que já temos nossa imagem, iremos no
Solution Explorer que fica do lado direito da janela do Visual C#, caso não esteja aparecendo clique no menu View->Solution Explorer.

Clicaremos com o botão direito em
Content depois clicaremos em Add->Existing Item..., vamos até onde salvamos a imagem do nosso aviãozinho, caso esteja no lugar onde salvou o arquivo mas não esteja conseguindo ver o arquivo mude o Files of Type para Texture Files, clique no arquivo do nosso avião e clique Add.

Ao adicionarmos um arquivo gráfico ele é automáticamente adicionado ao
Content Pipeline do XNA Framework o que permite um carregamento rápido e fácil do gráfico em nosso jogo. Agora devemos conseguir visualizar o arquivo adicionado também no Solution Explorer.

Exibindo a Imagem na Tela

Para exibirmos nossa imagem na tela ao rodarmos o nosso "jogo" devemos fazer algumas adições ao código.

A primeira delas é declarar, na classe Game1, abaixo das declarações de graphics e
spriteBatch, uma variável que chamaremos de "myPlane" do tipo Texture2D. Essa variável irá armazenar a informação sobre a nossa imagem. Logo abaixo da declaração que acabamos de fazer, iremos declarar outra variável que chamaremos de "planePosition" do tipo Vector2. Essa outra variável armazenará a posição de nosso aviãozinho e iremos inicializá-la como um vetor zero como podemos ver abaixo.

Agora vamos ao método
LoadContent() onde iremos inicializar a nossa variável "myPlane" com a imagem do nosso aviãozinho. Abaixo da atribuição feita a spriteBatch iremos chamar o método Content.Load passando o nome do nosso arquivo com a imagem que iremos exibir, no caso o "plane". Este código irá carregar e preparar o nosso gráfico para ser desenhado, além de recarregar nosso gráfico caso haja necessidade. Acompanhe melhor abaixo.

Agora vamos ao método
Draw(). Nele iniciaremos o spriteBatch e através dele desenharemos nosso aviãozinho na posição zero da tela. Depois disso temos que terminar o spriteBatch. Esse código desenha nossa imagem a cada quadro.

Agora, se não tivermos feito nada de errado nem esquecido de implementar nenhuma etapa, ao rodarmos nosso programa, tanto
na setinha verde de Start Debugging, ou com o F5 ou no menu Debug->Start Debugging aparecerá uma tela como a mostrada abaixo.

Pronto!

Resumo

Nesta parte do nosso tutorial conseguimos desenhar nossa primeira imagem na tela usando o XNA Game Studio! Nosso proximo passo será dar alguma movimentação a essa imagem e faze-la colidir com os limites da nossa tela.

Salve seu projeto e aguarde a ultima parte do nosso tutorial.

quarta-feira, 24 de setembro de 2008

Tutorial - Nossa Primeira Aplicação - Parte 1/3

Antes de começarmos este tutorial estou partindo do suposto que todos conseguiram instalar e rodar o software com sucesso. Caso tenha havido alguma dificuldade na instalação deixe um comentário no respectivo post e lá abriremos um canal de discussão e dúvidas.

Iniciaremos aqui um tutorial que dividi em 3 partes para facilitar o acompanhamento de todos e, se necessário, eu conseguir dar algum feedback em casos de dúvida.

Observações: Não estarei ensinando programação em C#, apesar de que caso se tenha pouco ou nenhum conhecimento sobre a linguagem também é possivel acompanhar o tutorial sem nenhum problema mas para se aprofundar em desenvolvimento de jogos utilizando o XNA Game Studio é necessário se familiarizar com a linguagem. Para que tudo funcione corretamente é necessário que seu computador atenda aos pré-requisitos para rodar jogos usando o XNA Game Studio onde um deles é que a sua placa de vídeo tenha suporte para o Shader Model 1.1(2.0 recomendado) e directX 9.0c.

Neste tutorial desenvolveremos a nossa primeira aplicação no XNA Game Studio, desde a criação de um novo projeto e alguma familiarização com o Visual C# Express Edition(primeira parte do tutorial), passando por uma breve explicação sobre código e finalmente adicionando uma imagem ao projeto(segunda parte) e interagindo com ela, dando movimento a ela e aplicando algum princípio de colisão(terceira parte).

Criando um Novo Projeto

Vamos abrir o XNA Game Studio (provavelmente acessando no menu Iniciar->Todos os programas->Microsoft XNA Game Studio 2.0->Microsoft Visual C# 2005 Express Edition).

Podemos ver um menu muito parecido com o da maioria dos programas windows, uma barra de ferramentas também muito semelhante a de outros aplicativos windows, mas também vemos duas outras partes que devemos prestar bastante atenção. Á direita, temos o Solution Explorer, que é onde visualizaremos nosso projeto e tudo que estiver incluído nele. Á esquerda do Solution Explorer, ocupando uma grande parte central e esquerda temos uma abinha escrito Start Page e uma grande área exibindo a Start Page, nessa área póderemos visualizar e editar o código dos arquivos de nossos jogos. Na Start Page podemos ver nossos projetos mais recentes e abri-los diretamente dessa pagina.

Agora clicaremos em File->New Project ou apenas o atalho Ctrl+Shift+N. Aparecerá uma caixa de diálogo onde podemos selecionar o tipo do projeto que queremos criar, os templates que queremos usar nos nossos projetos, onde daremos o nome ao nosso projeto e diremos onde ele ficará lcalizado.

Selecionaremos como tipo de projeto XNA Game Studio 2.0 e como template Windows Game(2.0) . Mudaremos o nome do nosso projeto para MeuProjeto e selecionaremos o local onde queremos que nossos arquivos de projetos fiquem armazenados, eu costumo deixar selecionada a opção de Create directory for solution para que o Visual C# já crie um diretório para conter meus arquivos. O Solution Name deixaremos com o mesmo nome do projeto. Clique em OK.

O arquivo Game1.cs será aberto e exibido. No Solution Explorer aparecerá o conteúdo do nosso projeto.

E sem fazer nenhuma alteração no código vamos clicar em Start Debugging(a setinha verde que está circulada de vermelho na imagem), ou em Debug->Start Debugging ou simplesmente F5.

Deverá abrir uma nova janela com o título MeuProjeto e a cor do fundo azul como mostrado na figura abaixo.


Resumo

Nesta primeira parte do nosso tutorial conhecemos um pouquinho sobre o Visual C# 2005 Express Edition, criamos o projeto MeuProjeto em que trabalharemos tembém nas próximas duas partes e aprendemos a rodar um projeto.

Salve o projeto e aguarde a proxima parte do nosso tutorial.

quarta-feira, 17 de setembro de 2008

Novidade - XNA Game Studio 3.0 Beta

Já está disponivel para download a versão beta do XNA Game Studio 3.0.

- XNA Game Studio 3.0 Beta

A nova versão traz diversas novidades interessantes sendo algumas delas o desenvolvimento de jogos para o Zune (o player da Microsoft), templates de projetos e suporte para o botão central no XBOX360, e suporte para alguns recursos do .Net framework que ainda não estavam disponíveis como por exemplo o Linq.

XNA Game Studio - Passo a passo

Neste post veremos como instalar todas as ferramentas necessárias para iniciarmos nosso desenvolvimento de jogos com o XNA Game Studio.

XNA Creatos Club

O primeiro passo para iniciarmos nosso caminha a criação de jogos com XNA é nos inscrever no Creators Club. Aqui você se inscreve e cria seu perfil de desenvolvedor. Para se inscrever é necessário um Windows Live ID.



Após o registro você pode customizar seu perfil, escolher um nome, e postar mensagens para outros criadores em forums. Esse registro é a sua identidade no creators.xna.com .

Downloads

Agora começaremos a fazer os dowloads das ferramentas necessárias para começarmos o desenvolvimento.

O XNA Game Studio necessita que você tenha instalado ou o Visual Studio 2005 SP1 ou o Visual C# 2005 Express Edition SP1, como a maioria de nós não paga ou talvez não use um IDE como o Visual Studio optaremos aqui pela versão free que é o Express Edition do Visual C# 2005 e podemos encontra-los para dowload nos links abaixo.

- Visual C# 2005 Express Edition
- Service Pack 1 do Visual C# 2005 (selecione a opção de download VS80sp1-KB926749-X86-INTL.exe)

Após feito os dowloads e as instalações na ordem acima só faltará baixar o XNA Game Studio que pode ser encontrado no link abaixo.

- XNA Game Studio

Após instalado o XNA Game Studio, ao rodar, o acesso a documentação pode ser feita através da tecla F1 do teclado e lá você encontra artigos e tutoriais de como começar, algo que também abordaremos aqui em próximos posts.

Criar jogos para Windows é gratis. Caso queira criar jogos para XBOX360 é necessário fazer uma conta Premuim que custa $49 por quatro meses ou $99 ao ano.

terça-feira, 9 de setembro de 2008

XNA Game Studio - O que é?

Neste post farei uma breve introdução ao que é o XNA Game Studio.

O XNA Game Studio

É uma ferramenta de desenvolvimento de jogos poderosa e fácil de usar onde é possivel criar jogos para Windows, XBOX360 e Zune. No desenvolvimento para Windows, a publicação dos jogos desenvolvidos é gratuita, já para o XBOX360 é necessário ser Membro Premium do XNA Creators Club.

Permite criar jogos usando o XNA framework, que facilita o acesso a graficos, audio, entrada, armazenamento, e a linguagem gerenciada C#, que torna o desenvolvimento muito mais simples.
O XNA Game Studio inclui tutoriais e kits para iniciantes o que torna seu aprendizado mais rápido.

Atualmente encontra-se em sua versão 3.0 que pode ser usada com todas as versões do Visual Studio 2005, incluindo o Visual C# Express Edition que é grátis, e com a maioria das versões do Visual Studio 2008.

Bem Vindos ao Camello XNA

Olá Pessoal,

O surgimento deste espaço visa abrir um meio de comunicação e discussão a todos os interessados em desenvolvimento de jogos na plataforma XNA da Microsoft. Tenho o intuito de realizar atualizações semanais neste espaço sendo elas novidades, notícias, dicas de desenvolvimento e tutoriais.

Espero poder contar com o feedback de vocês para conseguirmos construir um espaço colaborativo em atualizações de conteúdo tornando este espaço cada vez mais interessante tanto para mim quanto para vocês.

Espero também poder dar uma atenção especial aqueles interessados em XNA mas que tenham alguma dificuldade na lingua inglesa onde são encontradas as principais informações sobre o assunto transformando o Camello XNA em uma referencia sobre XNA no Brasil.

Leo Camello