Como criar um fã-game - Multimedia fusion 2 - part 2 – um pouco mais do básico em eventos e como aplicar sons


Nesse tutorial de MMF2 irei mostrar mais alguns básicos de eventos do MMF2 e irei mostrar como criar um jogo rápido e básico como um jogo de nave e irei utilizar como exemplo um jogo de nave mesmo. Após ter percebido que um jogo é movimentado através da lógica irei mostrar como mexer um pouco com o som no programa. É isso e vamos nessa!

Como criar um fã-game - Multimedia fusion 2 - part 2 – mais básico em eventos e como aplicar sons.
  
No tutorial de antes eu ensinei o "início" do programa e ensinei como iniciar um projeto rápido com as opções que o MMF2 já programadas te oferecem. 

Pois bem... vou agora criar um novo projeto que irá seguir como exemplo. Dou um Ctrl+N para criar um projeto rápido e nele vamos construir um jogo de nave simples. Com isso irá entender como usar outros eventos do MMF2. Clique com o botão direito em uma área e clique em Insert Object procure e clique duas vezes em –Active System Box. Após isso escolha o local onde colocar a caixa e por enquanto deixe-a em qualquer lugar:


Antes de mais nada essa caixa serve mais para criar um diálogo. Também pode ser usada para outros. Normalmente usado em RPGs mas irei utilizar aqui para que o projeto rápido começe. Na janela do Active System Box (imagem abaixo) você pode conhecer cada item que a ela corresponde:

1: alterar o estilo em geral da caixa de diálogo.
2: cores para as bordas da caixa de diálogo.
3: em edit para editar uma imagem e colocar no fundo da caixa de diálogo, clear para deixar sem imagem e o botão acima é o posicionamento da imagem no fundo da caixa de diálogo.
4: alinhamento do texto em que vai sendo reproduzido na caixa.
5: texto inicial do diálogo.
6: códigos ferramenta.
7: cores para o texto da caixa de diálogo.
8: tamanhos e expessura das Margens.
9: usado para re-colocar a mesma caixa várias vezes em sua posição inicial. Usado para criar fundos para os Jogos e isso será bastante usado futulramente. Mais explicações detalhadas nos próximos tutoriais.
10: um preview (prévia em Português) da caixa de diálogo.
Entre outras caixas que podem ser ativadas são:
*Multi-Line (multiplas linhas): recomendo ativá-la, sempre ativada quando é um texto grande.
*No prefix (sem prefixo): ative caso ser um diálogo alterável durante o aplicativo.
Monte a sua caixa e dê um ok.
Bem... nessa caixa durante o game irei utilizá-la como dicas. Você vai jogando e dicas para o jogo vão aparecendo.

Agora vou criar o separador da caixa de diálogo entre o jogo em si. Crio um active e coloco acima da caixa para separar. Logo já crio uma nave simples e peguei do site spriters resource do jogo space invaders os sprites. No jogo crio um active com o nome de “Player”:

Logo após crio um active que seria o tiro do Player 1. Vamos então programar que ao pressionar o botão n° 1 o tiro irá sair apenas reto inicialmente do player 1 para atingir um alvo. Nos properties do tiro eu deixo desativado a opção “create at start”. Na barra movement do tiro coloque como tipo (type) do movimento “Bouncing Ball” e abaixo em “initial direction” coloque a direção apenas para cima, assim, após o tiro ser criado no Player ele indo diretamente para cima. Agora no editor de eventos coloque para que quando algum botão for acionado (exemplo: Fire button 1) o tiro a de sair do player. Foi utilizado o esquema: Condition: Player 1 Pressed fire 1, Action: Create “Tiro – player” at (9,0) from “Player”  agora veja melhor na imagem abaixo:



Agora vamos criar um movimento rápido para o Player. Clico no active do Player e na janela Properties vou em moviment e escolho o Eight Directions. No Eight directions deixo só os movimentos de direita e esquerda sendo assim o Player só vai para a direita e esquerda. A parte do Jogador já está pronta e agora vamos criar os inimigos. Terão 3 inimigos e cada um terá uma cor diferente. Sendo assim cada um com um tiro diferente. Pois bem crio um Active chamado “Inimigo 1” e o tiro dele é o mais simples que vai apenas reto. Pois bem agora crio também um Active chamado “Tiro – Inimigo 1” que logo já crio o "Tiro – Inimigo 2" e 3 e também o Inimigo 2 e 3. Agora vamos programá-los. Ah! Antes de mais nada irei criar o local onde irão sair esses inimigos. Irei criar um local aleatório onde eles irão ser criados e esse local é nada mais que a área que está dentro desse quadro azul:
A parte branca é o que aparece na tela durante o jogo e acima dessa tela serão criados os inimigos indo para baixo para a parte branca. Vamos programar que em 1 em 1 segundo cria um inimigo 1 ali na bola vermelha e que em 3 em 3 segundos cria um inimigo 2 ali na bola vermelha e que em 6 em 6 segundos cria um inimigo 3 ali na bola vermelha. A programação ficaria assim:


Se notar a cada aqueles segundos irá ser criado um inimigo na bola vermelha que se move para baixo e essa bola vermelha fica rebatendo e se movendo no quadro azul que sendo assim criando inimigos em lugares diferentes. Irá entender melhor baixando a engine.
Agora vamos programar o movimento dos inimigos. Deixe a opção “Create at start” dos inimigos (nota: dos tiros também...) desativada e coloque o movimento “Bouncing Ball” apenas para a direção de baixo nos inimigos. Também coloque o contador de Speed do inimigo um número qualquer entre 5 e 10.

Agora um movimento para os inimigos já foi criado e agora você vai qualificar esses inimigos como um Grupo que na qual se for programar para esse grupo vai programar para todos os objetos que estão no grupo. Então, você vai levar os Inimigos 1,2 e 3 para o grupo Enemies e para isso no Properties dos inimigos procure pelo botão “Events” e clique do lado de Qualifiers e clique no botão edit (imagem) e faça como aqui:


Dê um ok em tudo verás que o grupo “Enemies” foi adicionado ao Active. Faça isso com os outros inimigos. Pois então agora no editor de eventos programe para que quando o tiro do Player encostar em um inimigo (na qual você tem que selecionar o grupo Enemies-) o inimigo ser destruído. Lembre-se de criar uma animação do inimigo sendo destruído. A programação dos eventos ficaria assim: Condition: Collision between “Tiro – Player” and “Group – Enemies”, Action: “Group – Enemies” Destroy & “Tiro – Player” destroy faço com que o tiro e o inimigo se chocam e sejam detruídos. E voltando um pouco para dar um toque rápido na programação da caixa de diálogo é que no editor de eventos crie uma condition qualquer (exemplo: Number of Group Enemies >= 10 (condição que se tenha 10 ou mais Inimigos na área)) e como ação para o Active System box coloque “Set Text” e aí coloque o texto atual que seria.

Enfim voltando a programação dos inimigos. Agora vamos criar um tipo de tiro para cada um. Para o tiro do inimigo 1 vou fazer que ele vai sempre reto para baixo que é nada de mais (colocando movimento para “Bouncing Ball” para baixo). Para o tiro do inimigo 2 irei fazer a mesma coisa só que ele é mais rápido e nada de mais também. E Para o tiro do inimigo 3 irei fazer que ele segue o Player que para o tiro parar de te seguir tem que destrui-lo com o tiro do Player. Para programar o tiro do inimigo 3 deixe Bouncing ball como nos outros e vá no editor de eventos e crie uma condição “Always” (Always= sempre em Português) ou seja aquilo vai estar sempre acontecendo. Para o Tiro do inimigo 3 procure e coloque como ação em Direction “Look in the direction of...”. Aí você vai escolher no que ele sempre estar seguindo que é o Player (o tiro do inimigo seguir o Player) e então coloque Relative to Player e de preferencia x0,y0. Agora que os tiros estão programados irá fazer eles sairem dos inimigos para tentar acertar o Player. Utilize a condição Every (condição usada para quando repetiu um tempo exemplo: em 3 em 3 segundos...). Utilizei 5 segundos para que um tiro saia do inimigo 1, 7 segundos para que o tiro saia do inimigo 2 e 11 para o inimigo 3. Utilizei a ferramenta Create New objects que já usada algumas vezes antes. Agora que os tiros estão programados para algum movimento programe-os para colisões. Coloque uma Condição de que quando tiro dos inimigos encostar no Player os tiros serem destruídos (nos próximos tutoriais vou ensinar a criar uma HUD que são as barras de vida, pontos...). Também não se esqueça de criar uma condição de que se o Tiro do Player encostar no Tiro do Inimigo 3 os dois tiros destruírem. Agora o jogo em sí já deve estar programado e agora você vai ter um conhecimento rápido e básico dos efeitos sonoros aplicados em Jogo. Usarei efeitos sonoros da série Sonic the hedgehog apenas como exemplo e irei utilizá-las para um som do tiro do Player e um de destruição. Então vou no editor de eventos e clico em new condition. Clique no Player 1/Read Joystick State e logo escolha o botão usado para atirar. A ação está no ícone de Sound clique com o botão direito e em samples nessas opções cada uma corresponde a um item para aplicar no efeito sonoro que são como nos players de músicas, play, pause e o loop é ciclo que reproduz um som ou outra coisa repetidamente.
Pois bem cliquei em Play sample para utilizar um efeito sonoro do computador no jogo e programei para o efeito de tiro acontecer quando pressionar o botão 1 (que é quando atira) e um quando um inimigo for destruído que o exemplo utilizado é um efeito de som de explosão!

Bem simples não? Esses são os mais básicos do Multimedia Fusion 2 e nesse tutorial ensinei um pouco mais do básico de eventos. Uma boa observação que deve ser feita é que a programação em geral vem de lógica e então você tem que ter um bom raciocínio lógico para melhor desenvolvimento!
Utilize o link abaixo para baixar o arquivo/engine que foi utilizado como exemplo no MMF2:
http://www.megaupload.com/?d=ZASM0ICU

Próximo tutorial:
No próximo tutorial eu irei passar uma lista do que cada objeto tem como função e os objetos que digo são esses mostrados aqui. Também irei ensinar outras coisas rápidas do sistema do Multimedia Fusion 2.

É isso e até a próxima!

Um comentário: