Desenvolvimento Games Xna
xna_logo_bugged_.png

Desenvolvimento Games Xna

Alunos João Vitor,Renan Sales e Thiago Lopes

Objetivo

Este trabalho tem como principal finalidade o estudo de Desenvolvimento de Jogos na Plataforma XNA,mostrando de uma forma clara e objetiva,o que é e como se dá o seu funcionamento.

1. Introdução

Concentração de códigos comuns entre vários projetos de software que roda em torno de uma funcionalidade genérica, o Microsoft XNA é uma plataforma criada para desenvolvimento de jogos para PCs com Windows, Xbox 360 e Windows Phone 7.Essa plataforma vêem com o intuito de trazer uma revolução ao mundo dos games com gráficos e movimentos mais realistas junto á trilhas de áudio de alto padrão.

2.Plataforma XNA

Com a necessidade de demonstrações gráficas e músicas, desenvolver jogos no DOS,requeria um grande conhecimento em linguagens de programação de baixo nível,pois era necessário fazer uma ligação com a placa de som,placas gráficas e os dispositivos de entrada.Naquela época,isso era extremamente difícil de se realizar devido ao fato de que as fabricantes de hardware eram de modelos diferentes assim os códigos desenvolvidos poderia funcionar em um sistema e em outro não.
Pouco tempo depois,com o surgimento do Windows 95, houve uma melhora para o desenvolvimento desses projetos,graças a uma nova tecnologia criada pela Microsoft chamada DirectX, uma coleção de aplicativos,destinados a programação de jogos com o sistema operacional Windows.Graças á essa nova tecnologia, os desenvolvedores tinham uma forma de escrever jogos com um código fonte que funcionaria em todos os PCs independentemente de seus hardwares.
E então depois de alguns anos essa tecnologia ganhou atualizações com características e funcionalidades diferentes, inovando e implementando ainda mais os recursos utilizados nas criações dos jogos. E em novembro de 2006 a Microsoft lança uma nova plataforma chamada Microsoft XNA Studio Game essa nova plataforma funciona como um meio de conexão entre as APls do DirectX e o Programador possuindo uma série de novas funcionalidades facilitando ainda mais a vida dos programadores.

3. Microsoft XNA Studio Game

Desenvolvida pela Microsoft que se torna uma biblioteca de programação baseada na linguagem C# que também contem um framework próprio para criação de jogos.

Algumas abstrações o programado que utiliza o XNA pode ter, ao exemplo ele não precisa criar métodos específicos para ligar, testar e usar a sua placa gráfica o XNA já vem com um framework que contem todos esses métodos relacionados à placa gráfica, sendo assim o programador só terá que chamar esses métodos do framework.

Tecnologias Custos Nível Dificuldade Capacidade Comunidade
Game Maker Pro Razoável Fácil Baixa Sim
Unreal Engine Caro Complexo Alta Sim
XNA GameStudio Livre Médio Media/Alta Sim
Scratch Livre Fácil Baixa Sim

4. Inicializar um Projeto XNA

Quando criar um projeto em XNA, Criar todo um moto do jogo, basta executar o programa que já vai funcionar. Apesar de não tem praticamente nada haverá uma tela toda azul, e logo por trás dessa tela terá o ciclo a correr e todas as classes do XNA pronto para usar.

Tela%281%29.png

O motor de partida conte seis funções que representam os passos necessários do jogo

• Public Game1()

• Protected override void Initialize()

• Protected override void LoadContent()

• Protected override void UnloadContent ()

• Protected override void Update(GameTime gameTime)

• Protected override void Draw(GameTime gameTime)

Essas são as funções criadas juntamente com o novo projeto de XNA. A função Public Game1() é apenas o construtor, onde quando o jogo é iniciado e o primeiro a ser chamado. Esta inicializa automaticamente o Sistema gráfico para o jogo.

A função Initialize() é utilizada para a inicialização de conteúdos não gráficos e alguns serviços que o utilizador possa usar, à exemplo seria a inicialização das bibliotecas que o jogo usara, biblioteca de som e outras.

A próxima função, LoadContent() é usada para introduzir o conteúdo gráfico necessário ao jogo; a exemplo de algumas texturas que o jogo pode usar e logo são inicializadas nessa classe.

A função UnloadContent(), utiliza ao contrario da função anterior, ou seja, se o jogo não necessita de textura são retiradas de memória através desse método.

A função Update(GameTime gameTime), destina-se literalmente à modificações do estado de cada frame que esta contido no seu game, nela será introduzida todo o gameplay do jogo, estado do objeto e suas interações. No caso da XNA tenta sempre manter uma velocidade relacionada aos frames de 60 frames por segundos, isso demonstra que a cada segundo que se passa o método Update é chamado 60 vezes.

A função Draw(GameTime gameTime), destina-se ao desenho dos estados, ou seja desenha 60 vezes por segundo todo o tela e os objetos do jogo, isso demonstra que a cada segundo que se passa o método Draw é chamado 60 vezes igualmente a função Update.

Essa noção de FPS (frames por segundos) representa o movimento do jogo, que faz com que a movimentação dos frames faça com que se parece que os objetos estáticos se movimentem parecendo que eles estão em locais diferentes.

5. Inicializar Componentes

Antes de iniciar o desenvolvimento do gameplay do seu jogo é necessário inserir todos os objetos a serem utilizados no seu jogo, a exemplo de texturas, fundo (Background) do seu jogo e todos os seus outros objetos a serem utilizados.

InserirComponente%282%29.png

Logo após a inserção de todos os seus objetos utilizando o processo demonstrado na figura acima todos esses objetos inseridos terá de ser inicializados, primeiramente será necessário criar uma variável do tipo texture2D e três vetores para ser gravada sua posição.

• Texture2D Nome;
• Vector2 posicao;
• Vector2 direcao;
• Vector2 velocidade;

Ao criar essas variáveis para armazenar os dados sobre a sua textura, nesse momento já vamos ter os objetos para ser usado no seu jogo, agora só falta utilizar a função LoadContent(), descrita acima para gravar a posição na memória dos seus objetos no seu jogo. A velocidade, direção e posição serão utilizadas depois para pode movimenta o seu objeto.

O XNA contem um sistema de coordenadas X e Y que a principio tem como o seu ponto de largada em zero no ponto superior da tela do lado esquerdo

Agora vamos posicionar o nosso objeto em um determinado ponto na tela, para isso iremos utilizar algumas constantes para nos auxiliar:

• Const int POSICAO_INICIAL_X = 125;
• Const int POSICAO_INICIAL _Y = 150;
• Const int VELOCIDADE = 160;
• Const int MOVER_CIMA = -1;
• Const int MOVER_BAIXO = 1;
• Const int MOVER_ESQUERDA = -1;
• Const int MOVER_DIREITA = 1;
• Const int MAXIMO_BAIXO = 550;
• Const int MAXIMO_DIREITA = 750;

A principio o seu objeto ficara na posição 125 em relação ao eixo X e 150 em relação ao eixo Y, e a sua velocidade será de 160 como descrito nas constantes acima, as quatro variáveis declaradas abaixo de VELOCIDADE é utilizada para movimenta o seu objeto na sua tela, as duas ultimas variáveis será utilizada para delimitar a sua tela colocando um fim na sua tela não deixando com que o seu objeto não sai do campo de visão não deixando com que ele vá muito para frente ou pra baixo a delimitação em relação acima e ao lado direito já e imposta pela o XNA. Vale ressaltar que esses valores a serem utilizados por sua constante é definida por cada desenvolvedor você que devera delimitar o seu espaço.

coordenadas%281%29.png

6. Desenhar Componentes

Logo após a inicialização dos seus componentes devemos ter que desenhá-los, para que nós possamos desenhar esses componentes voltaremos para a nossa função Draw() que foi definida mais acima e na lá deveremos usar o SpriteBatch com o Objetivo. SpriteBatch é uma classe do XNA que quando é usado ela garante com que todas as suas imagens que serão utilizadas tenham a mesma características em relação ao jogo.

Criar-se uma variável:
SpriteBacth spriteBatch;

Logo após a criação dessa variável a usaremos para desenhar o nosso jogo. Na função draw devemos que utilizar os nossos três primeiros passa para desenhar o nosso componente. Iniciar o SpriteBatch, desenhar nosso componente e fechar o SpriteBatch.Exemplo do código para realizar os nossos três primeiros passos:

spriteBatch.Begin();
spriteBatch.Draw(NOME, new vector2(STAR_POSITION_X, STAR_POSITION_Y),Color.White);
spriteBatch.End();

As funções spriteBatch.Begin() e spriteBatch.End() já são bem sugestivas e logo nos entendemos que é utilizada para abrir e fechar o nosso spriteBatch, já a função spriteBatch.Draw() vamos da uma maior detalhada. A função spriteBatch.Draw(), o primeiro parâmetro a ser passado é o nome do seu componente, logo após o new Vector2 vai ser a posição inicial do nosso componente temos as nossas constantes como parâmetro que já foram definida logo acima, e a color.White é utilizada para manter a cor original do nosso componente. Nesse momento se o jogo for executado será mostrado o nosso componente na tela, mas ela estaria do seu tamanho original.

Para redimensionar o tamanho do nosso componente vamos utilizar o seguinte código:

spriteBatch.Draw(NOME, Position,new Rectangle(0,0,NOME.Width,NOME.height),color.white, 0.0f, vector2.Zero, 0.3f,SpriteEffects.Nome,0);

Apos a inserção dessa nova linha de código no nosso projeto de desenhar o componente a escala do será de 0.3, que significa que nosso objeto será 1/3 menor que o tamanho original da nossa figura, como pode notar a posição que antes era denominada pelas constantes também foram modificada.

7. Relação Com Compiladores

Após a pesquisa para o trabalho foi possível concluir que o Microsoft xna é uma ferramenta que permite a construção de jogos e a partir destes criar e evoluir o mundo tecnológico.E que essa nova plataforma também se utiliza de bibliotecas e códigos-fonte.

8. Referencias

http://www.sirmacstronger.eti.br/jogos2d/introdXNA.html

http://pt.wikipedia.org/wiki/Microsoft_XNA

http://www.4shared.com/minifolder/9906649/92dc6056/XNA.html?woHeader=1

http://msdn.microsoft.com/pt-BR/xna/default.aspx?ocid=src-c-br-dca--google_xna

http://www.slideshare.net/ellisonleao/desenvolvimento-de-jogos-na-plataforma-xna

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License