Tutorial - Criando um editor de níveis

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade Tutorial - Criando um editor de níveis

Mensagem por Mr.Rafael em Seg 15 Nov 2010, 16:13

•- Nome: Criando um editor de níveis. (o nome do tópico é auto-explicativo);
•-- Descrição: Ver "Introdução", abaixo;
•--- Nível: Médio/Avançado;
•---- Requer: GM8 Pro/Lite (a versão Lite pode não ser tão favorável);

•- Introdução:

Você já deve ter jogado muitos jogos de plataforma (criados no GM ou não), todos com um estilo único, tudo bem detalhado, níveis bem elaborados... e quando você vê este último fator, você diz "Eu posso criar um nível tão bom quanto esse". Mas como você vai criar?

Um editor de níveis é bom para que seu jogo expanda o Gameplay. Assim, se eu estiver cansado de repetir os mesmos níveis, eu simplismente crio o meu e me divirto com a física do jogo.

•- Primeiro passo:

Irei explicar com um jogo simples, porque, como está no título do tópico, não será usada uma linha de código sequer. E como vocês sabem (ou não), o Drag n' Drop do Game Maker consegue criar o mesmo que o GML. Porém, são necessárias muitas ações. Então, para que não fique cheio para mim (nem para vocês), vamos utilizar um jogo simples de labirinto, com apenas 3 objetos (desprezando inimigos/pontos/vidas):

Imagem: http://img132.imageshack.us/i/editor1.jpg

Veja que existem apenas 3 objetos: Um bloco preto (para limitar o jogador de avançar), um bloco vermelho (o jogador), e um bloco-xadrez (que é onde termina o nível). E note também que há quatro "buracos" no jogo. Você verá a utilidade deles mais abaixo.
É necessário que você cubra as bordas da room com o bloco preto, pois senão, o jogador poderá sair do nível.

•- É agora que o negócio começa:

Já temos nosso joguinho lindo (Razz), feliz e saltitante funcionando. Mas onde está a porcaria do editor?
Agora é que a parte boa vai chegar. Crie um objeto estilo "botão", com o tamanho padrão das outras figuras. (no caso aqui, todas estão em 16x16, então todas tem que ser 16x16). Ele será a grade (onde vamos clicar e aparecer os objetos), não coloque transparência nele. Agora crie outro/aproveite-o e crie 3 botões (já que, no caso, estamos usando 3 objetos):

Imagem: http://img227.imageshack.us/i/editor2c.jpg

Notou o porquê daqueles buracos? Mas ainda falta um... aquele vamos ver beeem adiante.
Se você quiser, pode criar os botões com 2 frames (sendo um quando não clicado e o outro quando clicado). No meu caso, eu criei com 2 frames.

Feito isso, você irá criar 3 "sósias" dos 3 objetos do jogo. Utilize as mesmas Sprites dos demais, eles vão mostrar o que você adicionou:

Imagem: http://img99.imageshack.us/i/editor3.jpg

Feito isso, você já tem os objetos prontos. Até agora não executamos nenhuma ação nele, não é? Pois é agora que iremos fazê-los funcionar.

•- Criando as ações dos botões:

Vamos começar pelos botões. Para isso, vá no botão que representa o bloco limite (não vamos bagunçar tanto, por isso vamos começar por esse).
Caso você tenha criado o Sprite com 2 frames, adicione o evento "Create", e nele, use a função "Change Sprite". Selecione a mesma figura dele, e no Speed coloque 0.
Agora, adicione o evento "Left Button", e coloque o valor do Health para 1:

Imagem: http://img89.imageshack.us/i/editor4.jpg

Uma observação importante sobre o uso do Health é que, como eu disse na descrição do tópico, não estaremos usando nenhuma linha de código. No entanto, se o seu jogo estiver usando a função Health, substitua a saúde citada aqui por uma variável.

Caso você tenha criado o Sprite com 2 frames, coloque 3 funções "Change Sprite", em todas o Speed deverá ser 0 e as imagens devem corresponder seus objetos. Na primeira, deixe "Self" e coloque Sublimage 1. Nas outras 2, troque o "Self" pelos objetos dos outros 2 botões, e coloque Sublimage 0. (Faça isso com os outros).

Com os outros 2, faça as mesmas ações, porém colocando a saúde/variável com valor 2 e 3 (respectivamente). Se você até agora fez tudo direitinho, o resultado estará assim:

Imagem: http://img576.imageshack.us/i/editor5.jpg

•- Criando as ações dos objetos "Edit":

Já temos as ações dos botões criadas, agora vamos criar as ações daqueles "sósias": Os objetos "Edit".
Uma coisa a ser observada é que, quanto mais objetos o seu jogo tiver, mais cansativo fica para criar um editor (pelo menos desse meu jeito). Primeiro vamos ao Edit da grade. Nela, crie o evento "Right Button", e coloque a função "Change Instance". No Change Into selecione a própria grade e em Perform Events, coloque Yes.
Agora, crie o evento "Left Button". Para não encher tanta linguiça, segue abaixo uma imagem mostrando suas funções (todas devem ter o Perform Events em Yes):

Imagem: http://img403.imageshack.us/i/editor6.jpg

Explicando rapidamente: Se a saúde for 1, trocar a instância pelo Edit do bloco limite. Se a saúde for 2, trocar a instância pelo Edit do jogador. Se a saúde for 3, trocar a instância pelo Edit da saída.
Lembrando que, se o seu jogo já estiver usando a saúde, apenas troque as ações mostradas por alguma variável.

Agora copie essas mesmas ações e passe-as para o Edit do bloco limite. E... não, você NÃO pode usar a função Parent (já explico no fim). Você vai colocar as mesmas ações nos dois objetos.
Repare que os "IFs" do jogador e da saída estão com 2 "Change Instance". Para criá-la, apenas troque o "Self" da de cima pelo "Jogador/Saída" e colocar a grade no "Change Into". Isso é porque eles devem ter apenas uma instância no jogo. Quando você for colocar algum outro objeto deles no jogo, o que estiver presente é retirado.

•- O fim!

Se você fez tudo certinho, estará desfrutando e criando seu editor de niveis. E aí você cria um nível bem legal como esse:

Imagem: http://img140.imageshack.us/i/editor7.jpg

E agora... vamos jogar. EPA! Espera um pouco? Agora só podemos ficar criando, como vamos testar o nível?!
Primeiro, crie um objeto em branco (sem Sprite e ações). Agora vamos criar agora outro botão, ele irá transformar o projeto em um nível jogável. Após criá-lo, vamos colocá-lo naquele buraco que sobrou (viu para que ele servia?):

Imagem: http://img577.imageshack.us/i/63484101.jpg

Seja sincero: Você se lembrou de tudo e se esqueceu desse botão. Laughing
A ação dele será a mesma dos outros botões. Mas com algumas funções a mais. Colocarei a imagem porque tem muita função para descrever assim:

Imagem: http://img530.imageshack.us/i/18495458.jpg

Mas afinal, se esse botão irá transformar o projeto em um nível, por que ele está com Health/Varíavel colocando valor 4? Vamos ver agora. Bem, a função do botão é, literalmente, transformar os objetos "Edit" nos objetos do jogo. Então, vamos usar e abusar da função "Change Instance".
Assim, todos os Edits do bloco limite serão transformados no bloco original, o Edit do jogador será transformado no jogador original, o Edit da saída será transformada na saída original, e a grade... ops! E a grade? Ora, a grade será transformada naquele objeto em branco.
E quanto ao fato de você não usar Parent no bloco limite? Por isso. Se você usar Parent nele, ele também vai ser transformado nesse objeto em branco.

Você jogou, o nível está perfeitamente perfeito, passei o meu labirinto e... , esqueci de colocar a saída.
Nesse caso, vamos voltar ao modo edição. Para isso vamos voltar ao botão "Test Level", e adicionar esta ação nele:

Imagem: http://img261.imageshack.us/i/43025522.jpg

O "IF" estará sendo utilizado, porque senão, ele fará aquela ação em qualquer momento. Como ao clicar no botão o Health/a sua variável recebe valor 4, ele só fará essa ação se você já estiver no modo jogável.

E pronto! Divirtam-se no Editor de níveis:

Imagem: http://img809.imageshack.us/i/42944597.jpg

•- Download da engine:

Aqui: http://www.megaupload.com/?d=6K2Y1YE2

o/

Mr.Rafael

Ranking : Nota A
Número de Mensagens : 383
Data de inscrição : 05/10/2010
Notas recebidas : A-C-B-A
Reputação : 57
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 2

Voltar ao Topo Ir em baixo

Qualidade Re: Tutorial - Criando um editor de níveis

Mensagem por peixoto em Seg 15 Nov 2010, 16:15

kra depois desse tuto sou teu fan para sempre, gostei muito, esta de parabens!

peixoto

Ranking : Nota D
Número de Mensagens : 911
Idade : 21
Data de inscrição : 14/02/2010
Notas recebidas : D
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum