Do que trata o artigo

Neste artigo vou criar um jogo simples, porém completo em silverlight. O jogo será de nave controlada pelo jogador, vai atirar em seus inimigos, que ao serem atingidos, explodem e com isso a pontuação do jogador no jogo aumenta.


Para que serve

O artigo vai apresentar noções básicas para você iniciar no mundo dos jogos usando a plataforma silverlight. O leitor ao final do artigo poderá criar um novo game ou até mesmo continuar e aperfeiçoar o jogo do tutorial.


Em que situação o tema é útil

O desenvolvimento de jogos está em alta no momento, em constante crescimento, esse mercado pode proporcionar negócios na área de educação e entretenimento, além de divertido, o mundo dos games pode se tornar lucrativo.

Resumo do DevMan

O artigo apresenta como desenvolver um jogo completo utilizando a tecnologia silverlight da Microsoft. O game desenvolvido no artigo será um jogo de nave, onde o usuário através do teclado vai comandar uma nave e poderá atirar em seus inimigos. Cada inimigo atingido aumenta a pontuação do jogador no game, quando o jogador é atingido pelo inimigo, o game finaliza.

A tecnologia silverlight está evoluindo de forma muita rápida, em julho a versão final do silverlight 3 foi disponibilizada e já em novembro a versão 4, ainda beta, já está disponível para download somente para os desenvolvedores. Houve a inclusão de diversas melhorias nesta última versão, mas para que você possa desenvolver o game e publicar imediatamente na internet, utilizarei o silverlight 3 juntamente com o visual Studio 2008 e o Microsoft Expression Blend 3.

Com o mercado de games em alta, desenvolver jogos pode ser uma forma interessante de fazer negócios. Na área de jogos educativos, cada vez mais a tecnologia está auxiliando os professores a ensinar de uma forma diferente e criativa seus alunos, e para essa finalidade os games são uma alternativa interessante. Já na área de entretenimento os jogos sempre tiveram seu espaço, podendo ser somente para diversão ou até mesmo para promover uma marca.

O artigo não tem o objetivo de ensinar todas as técnicas de desenvolvimento de jogos, criar um jogo exige criatividade e não existe uma receita passo a passo onde você possa criar qualquer tipo de jogo. Neste exemplo vamos criar um jogo de nave simples com o básico para que o leitor possa continuá-lo e aperfeiçoar caso queira. Esse tipo de jogo é muito comum na internet, onde uma nave controlada pelo usuário trava uma batalha no espaço com centenas de inimigos.

Resumidamente o desenvolvimento do jogo é dividido em etapas, primeiro criamos um ambiente de looping, onde os objetos do game serão animados (movimentados), em seguida vamos adicionar o fundo do jogo com um movimento suave, adicionamos a nave controlada pelo jogador, inserimos os códigos que permitem movimentar a nave através do teclado, e na sequência vamos criar os métodos para que a nave atire através da tecla space do teclado, adicionamos os inimigos, incluímos um forma de identificar colisões entre a nave, os inimigos e os tiros e por fim, controlamos a pontuação do jogador no game.

Iniciando o projeto

Vamos iniciar o desenvolvimento do jogo, abra um novo projeto silverlight no visual Studio 2008, para isso clique em Create Project>Silverlight>Silverlight Application. Dê o nome de SilverlightGame, no arquivo criado MainPage.xaml, o Usercontrol e o layout Grid foram criados automaticamente pelo Visual Studio, nas propriedades do Usercontrol d:DesignWidth="640" e d:DesignHeight="480", modifique os valores para d:DesignWidth="1024" e d:DesignHeight="700", aumentando a tela do jogo em relação a tamanho e altura respectivamente.

Ambiente do jogo

Para que o jogo possa apresentar na tela todas as mudanças que ocorrem durante o game vamos criar um ambiente de looping, esse ambiente no silverlight pode ser feito através de um recurso chamado Storyboard. Storyboard é um classe em silverlight que permite controlar animações com uma linha do tempo e permite animar as propriedades de alguns elementos em silverlight.

Abra o arquivo MainPage.xaml.cs e vamos iniciar a codificação em C# .NET, adicione uma variável do tipo storyboard com o nome de _ambiente, conforme a Listagem 1.

Listagem 1. Storyboard


  1 public partial class MainPage : UserControl {
  2        Storyboard _ambiente;
  3        public MainPage() 
  4        {
  5            InitializeComponent();
  6        }
  7  }

Adicione um evento Loaded no arquivo MainPage.xaml.cs, para isso, logo abaixo do InitializeComponente(), digite, Loaded += e aperte a tecla tab duas vezes em seguida. Pronto, o código da Listagem 2 foi criado.

Listagem 2. Método MainPage_Loaded


          void MainPage_Loaded(object sender, RoutedEventArgs e)
          {
              throw new NotImplementedException();
          }

Esse método será chamado assim que a aplicação for executada, remova a linha throw new NotImplementedException().

Agora vamos criar um método chamado CriarAmbiente, o objetivo é criar um ambiente de looping, onde a tela é atualizada constantemente, gerando um ambiente ideal para as movimentações de um game, o código do método pode ser visto na Listagem 3.

Listagem 3. Criando o ambiente do jogo


  1        public void CriaAmbiente()
  2        {
  3            //Cria uma instância de uma Storyboard
  4            _ambiente = new Storyboard();
   
  5            //Seta um nome para o elemento
  6            _ambiente.SetValue(FrameworkElement.NameProperty, "ambiente");
  7            
  8            //adiciona o storybord ao resources do MainPage
  9            this.Resources.Add("ambiente", _ambiente);
  10            
  11           // Evento que é executado após o storyboad finalizar
  12            // para criar basta digitar _ambiente.Completed += {tab} 2x
  13            _ambiente.Completed += new EventHandler(_ambiente_Completed);
  14
  15            //Inicia o storyboard
  16            _ambiente.Begin();
  17
  18        }
  19
  20        void _ambiente_Completed(object sender, EventArgs e)
  21        {
  22            //Após a conclusão do storyboard ele 
  23            //automaticamente reinicia criando
  24            //um loop infinito
  25            _ambiente.Begin();
  26
  27        } ... 

Quer ler esse conteúdo completo? Tenha acesso completo