quarta-feira, 18 de maio de 2016

Criação de Games - PARTE 06

O nosso primeiro jogo a fabricar é aquele que ao clicar sobre o personagem ele será "esmagada", morre e some da tela.
Primeiro vamos ao conceito do jogo:
  • Game loop - seria como os frames, uma imagem varias vezes por segundo sendo que no jogo vamos optar por 10vezes (10 frames);
  • Game Engine - motor do jogo -  O game engine é o responsável por faz o update do jogo, atualizando a tela e os frames e o Draw - desenho de cada elemento na tela. Também é no Engine que vamos definir a física do jogo, o momento de inércia de inatividade e de atividade e e através dele que vamos fazer o game"ser jogável" ou fazer alguma coisa, basicamente é isso;
  • Spirtes - são as imagens, os personagens, o backgroud a interface por assim dizer;
  • Colition detections - detecção de colisão - é a forma com que fazemos o "personagem" por exemplo identificar uma colisão, por exemplo na borda da tela ou em um objeto, porta, parede, etc. A detecção de colisão é responsável por isso. Também, quando atingimos um "personagem" seja ele o Bonzinho ou o Mau, é no colition detections que identificamos esta ação;
  • Game Resources - Imagens e Sons. Agora é que esta um dos maiores bloqueadores de desenvolvimento de jogos. As imagens, que são os personagens, o fundo, as imagens das cenas, os filminhos de introdução do game e a música o som dos personagens vibrando, gritando ou morrendo, por exemplo tem que ser desenvolvidos e criados. Neste ponto temos que ser artistas ou contratar um, ou ainda optar por pagar Copyrights ou royalties pelo uso de imagem de algum pré-existente. Não podemos pegar o Miquei Mouse ou o Cebolinha e sair usando ele sem pagar os devidos diretos autorais aos seus proprietários. Também não podemos usar uma musica tema de Crepúsculo, só porque estamos fazendo um joguinho de vampiros. Mas tenha calma, há muitos sites com personagens, backgrounds e sons gratuitos que pedem somente que você coloque como crédito o nome do criador em seu jogo ou onde for utilizar, um deles é: http://opengameart.org/
Mr. Roll, personagem que criei a muito tempo
Em nosso joguinho vamos pegar algumas imagens diretamente da internet sem o intuito é claro de comercialização ou venda de nosso aplicativo somente para efeitos didáticos ok, não esqueçam de ter as devidas autorizações de uso de imagens e sons antes de publicar seu jogo ou distribuí-los pela internet ou no Play Google. Respeite os direitos autorais, você vai querer que respeitem os seus quando seu jogo for um sucesso ;-)
Caso queira criar seus próprios personagens, no tutorial Criação de Games - PARTE 05 nos demos os endereços de programas Freeware que permitem a criação de personagens e backgrounds de forma profissional e a custo "zero", mas ai depende também de sua criatividade e habilidade de desenho. Os meus são horríveis, pode crer.
Opss! - eu esqueci de um detalhe que é a criação do emulador, no próximo tutorial vou ensinar como criar um para você testar seus aplicativos.

Primeiro código:
Vamos lá, você deve estar aguardando para digitar suas primeiras linhas de código no Android Studio e "fabricar" seu primeiro joguinho.
Seu Android Studio deve estar mais ou menos assim se segui as orientações dos tutorias anteriores (para ser mais exato o tutorial Criação de Games Parte -02) .
Como a gente quer o controle total de nossa Activity não vamos usar o arquivo activity_main.xml, mas não precisa deletá-lo agora não, deixe-o ai onde esta.
Vamos criar uma nova classe java, que permitirá "ver" o jogo. Vamos chamar esta nova classe de GameView.java ( a extensão .java ele vai colocar sozinho, não se preocupe), para isso realize as seguintes etapas da imagem, é bem autoexplicativa, basta seguir a sequência e criar uma -> New -> Java Class:


 Agora vamos dar  o nome para a nova classe de GameView.java (não se preocupe com a extensão, o programa cria ela sozinho).
A classe criada ficará a disposição e será o default na tela como você pode ver na próxima imagem:
Bom, agora vamos programar um pouco, escrever em Java ok?! Não se preocupe vai ser bem fácil (ainda...kkkkk).
Vamos voltar ao código MainActivity.java (foi criado quando geramos o projeto ok, basta clicar na aba com o nome MainActivity.java ou se não estiver aberto clique duas vezes no menu treeview sobre a classe MainActivity.java.
Vamos lá o código original é assim:
package com.br.robsonyuri.gamelucky;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
 @Override 
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
    }
}

Nos vamos mudar a seguinte linha:
...
setContentView(R.layout.activity_main);
...
para o seguinte:
...
setContentView(new GameView(this));
...
Bacana, já esta programando garoto...rsrs
Agora vamos para a classe GameView.java, ela deve estar parecendo com isso:
package com.br.robsonyuri.gamelucky;

/** * Created by Flexonews on 18/05/2016. */public class GameView {
}

Lembram do tutorial Criação de Games - Parte 04, onde a gente falava de Comentários e funções, já começamos a ver nas classes comentários, classes e funções que são criadas automaticamente, facilitando o processo de programação para gente.
Agora vamos alterar a classe GameView.java para apresentar uma imagem estática.
Vamos lá deixe sua classe assim, como a minha:
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.View;

/** * Created by Flexonews on 18/05/2016. */ 
public class GameView extends View {
    /*    Quando digitar Extends View e Bitmap ficaram vermelhos,
        indicando que    algo esta errado ou faltando,
       basta colocar o cursor sobre a palavra vermelha 
       View e clicar Alt + Enter e importar a classe, o
      mesmo para Bitmap 
    */     
     private Bitmap bmp
// declaramos uma variável privada chamada bmp que é um bitmap
// vamos escrever a função que é chamada do MainActivity  
public GameView(Context context){
super(context);
 /* 
agora vamos achar um icone para apresentar na tela 
existem os ícones defaults que foram carregadas com
aplicação vamos usar estes
*/ 
 //veja que termino com ; nao esqueça 
  bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher );
}
 @Override 
 /* 
 // vamos criar agora um função para desenhar na tela 
 // esta chamada, não sei porque é obsoleta na compilação, 
 por isso vamos 
 // usar uma função interna para não apresentar erro, 
 mas não agora 
 // @SuppressLint("WrongCall") 
 */ 
  protected void onDraw(Canvas canvas){
        /* 
        Canvas e o método pelo qual sera possivel 
        desenhar na tela 
        no primeiro canvas definimos a cor do fundo 
        no segundo carregamos o desenho (ícone) 
       */         
       canvas.drawColor(Color.rgb(0,100,0)); // defini uma cor rgb que é um verde         
       canvas.drawBitmap(bmp,25,25,null); //bmp é a imagem, 25 (x), 25 (y) 
 }
}

Clique agora em RUN 'app' ou Shift +F10 (eu esqueci de mostrar como configurar um emulador, no próximo tutorial eu ensino como) e o resultado será algo assim:

Bem, acho que por hoje chega não é? Até o próximo tutorial onde vou ensinar como criar o emulador.




Nenhum comentário:

Postar um comentário