O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Velocidade nas Escadas com Terrenos

Iniciado por Dr.XGB, 07/06/2013 às 16:08

Nome: Velocidade nas Escadas com Terrenos
Autor: Dr.XGB
Plataforma usada: RPG Maker 2000
Compatibilidade:
  • RPG Maker 2000
  • RPG Maker 2003
Nível: Fácil

[box class=catbg3]E aí, pessoal do CRM?
Estou de volta com mais tutoriais e sistemas para que possam aprimorar os seus estudos em desenvolver jogos através do RPG Maker, não importa qual, pode ser do 2000 ou até o RPG Maker VX Ace; embora o fato de eu apenas usar o RPG Maker 2000, vocês podem aplicar as minhas técnicas e meus sistema em qualquer programa desenvolvedor de jogos, até mesmo um outro que não seja apenas RPG Maker.

Trata-se de um tutorial bem simples onde você vai aprender a controlar a velocidade do Herói de acordo com o piso do Chipset. Neste caso, o herói caminha mais devagar quando está subindo ou descendo uma escada (não como objeto, e sim como piso), com a mesa intenção de alguém estar subindo/descendo uma ladeira; e quando ele não está na escada, o herói retorna à velocidade normal.
O objetivo deste tutorial é ajudar a enriquecer a jogabilidade de seu projeto. Um pequeno detalhe que pode tornar o seu jogo mais interessante.
Lembre-se que sempre que você for desenvolver um sistema, é sempre importante ter em mente as ferramentas que você vai utilizar para montá-lo, se você não planeja nada e sai programando o que vem na cabeça, o seu sistema acaba virando uma festa. Procure sempre organizar suas ideias antes de desenvolvê-las.

O segredo para ter um bom sistema é, nada mais do que, organização! :ok:

Vamos ao tutorial![/box]

Lista de Variáveis:





0001Velocidade*
0002Coord X*
0003Coord Y*
0004Terreno ID
0005Tecla
(* variável desnecessária se estiver usando Destiny Script)
[box class=catbg2]Etapa 1: Criando terrenos[/box]

Antes de tudo é preciso lembrarmos que, na Database do jogo, temos as configurações dos chipsets. Lá você pode determinar cada tipo de terreno, se um tile ficará acima do herói, embaixo, aquele que não vai permitir com que o herói passe por ele, enfim... Os tipos de terreno eles são utilizados para determinar qual será o fundo de batalha quando é chamada (isso quando o mapa está configurado para escolher desta forma). Agora vamos dar à eles mais uma utilidade: vamos fazer com que um determinado tipo de terreno altere a velocidade do herói quando ele estiver pisando no mesmo. Depois de ter planejado isso, siga os passos:

  • Abra o menu Database (F8);
  • Selecione a aba Terrain;
  • Lá você verá vários tipos de terrenos e seus fundos de batalha (Backdrops). Selecione a caixa Max Field Number... que fica logo abaixo desta lista e aumente o valor máximo;
  • Selecione o novo terreno e coloque um nome que te faça lembrar que ele servirá apenas para as escadas.
[box class=catbg2]Etapa 2: Colocando seu novo terreno ao Chipset
[/box]
Beleza, criamos um novo terreno que servirá para os tilesets de escadas (Lower Chips). Agora vamos à segunda etapa deste tutorial, onde você deteminará no chipset quais serão os tiles em que você determinará este novo terreno:

  • Vá para a aba Chipsets;
  • Selecione o "Edit Mode" para Terrain Type, você verá que os tiles ficarão com vários números em cima deles. São estes que deteminam o terreno de cada um deles;
  • Á extrema direita temos outra lista com o número e nome de todos os terrenos, inclusive o que você acabou de criar. Selecione o novo terreno criado na etapa anterior;
  • Procure no chipset os tiles de escadas e clique em todos eles para detrminar o novo terreno. Faça isso em todos os chipsets que você tem no banco de dados do seu jogo.
[box class=catbg2]Etapa 3: Criando um sistema para determinar a velocidade do herói
[/box]
Agora é o momento em que vamos fazer esse terreno funcionar da maneira que a gente planejou lá no início deste tutorial. Você vai lembrar que a gente terá que determinar a velocidade do herói sempre que ele estiver sobre este terreno, mas como determinar a velocidade de um herói? Há um outro método que previne bugs do herói ficar lento demais ou rápido demais, a gente cria uma variável, escolha o número e criaremos uma definição com "Move Event" para cada um dos valores; antes de tudo, colocaremos a velocidade do herói no máximo 5 "Move Speed Up" e depois "Move Speed Down" de acordo com o valor da tal variável. Veja um exemplo para determinar a velocidade do herói caso essa variável tenha o valor de 3:

[AVISO: se você está usando o Destiny Patcher, pule esta caixa abaixo e siga para a próxima etapa!]
[box title=Move Character (Hero)][box class=catbg3]<> Move Speed Up       // Speed 2
<> Move Speed Up      // Speed 3
<> Move Speed Up       // Speed 4
<> Move Speed Up      // Speed 5
<> Move Speed Up       // Speed 6

<> Move Speed Down // Speed 5
<> Move Speed Down // Speed 4
<> Move Speed Down // Speed 3[/box]
Vamos aplicar estes conceitos com todos os valores:
  • Vá para a aba Common Events;
  • Crie um nome de uma forma que vá te lembrar que aquele evento vai alterar a velocidade do herói;
  • Deixe a condição de início para Call;
  • Faça estes comandos abaixo:
    <> FORK Optn: Varbl[0001: Velocidade] - 1
     <> Move Event...:     Hero,  Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Down, Move Speed Down, Move Speed Down, Move Speed Down, Move Speed Down
     <>
     :END Case
    <> FORK Optn: Varbl[0001: Velocidade] - 2
     <> Move Event...:     Hero,  Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Down, Move Speed Down, Move Speed Down, Move Speed Down
     <>
     :END Case
    <> FORK Optn: Varbl[0001: Velocidade] - 3
     <> Move Event...:     Hero,  Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Down, Move Speed Down, Move Speed Down
     <>
     :END Case
    <> FORK Optn: Varbl[0001: Velocidade] - 4
     <> Move Event...:     Hero,  Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Down, Move Speed Down
     <>
     :END Case
    <> FORK Optn: Varbl[0001: Velocidade] - 5
     <> Move Event...:     Hero,  Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Down
     <>
     :END Case
    <> FORK Optn: Varbl[0001: Velocidade] - 6
     <> Move Event...:     Hero,  Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up, Move Speed Up,
     <>
     :END Case
    <>
    
Obs.: Uma outra forma de você determinar a velocidade do herói para 1 é você colocar apenas 5x "Move Speed Down" ao invés de aumentar ao máximo e mandar para o mínimo, já os demais devem seguir o padrão. Você também pode inverter esse raciocínio, pode abaixar tudo e aumentar até a valor determinado para todas as condições.[/box]

[box class=catbg2]Etapa 4: Fazendo o terreno funcionar
[/box]
Nesta próxima e última etapa, finalmente, vamos programar a velocidade do herói de acordo com o terreno em que ele se encontra. Existe um comando no RPG Maker que ele detecta o terreno do tileset em uma determinada coordenada do mapa, retornando o valor para uma variável de sua escolha que seria a ID do terreno (os números que aparecem na lista em Database). Este comando se chama Set Terrain ID... e se encontra na segunda página da lista de comandos do evento. Para deixar a jogabilidade mais interessante, vamos fazer que o evento funcione apenas quando você estiver pressionando as teclas Cima ou Baixo:
Com este comando podemos detectar a coordenada do herói, verificar em qual terreno ele está sobre neste momento e retornar a Id em uma variável. Siga os passos abaixo:
  • Crie outro evento comum;
  • Dê um nome de uma forma que te lembre que este evento fará as definições do terreno;
  • Condição de início: Processo Paralelo;
  • Deixe a caixa de condição com switch desmarcada.
Para prosseguir, selecione o spoiler de acordo com o método desejado. Se você quer seguir o método com eventos ou o programa na linguagem Destiny Script (apenas para quem usa Destiny Patcher). Se você for iniciante, aconselho que escolha o método com eventos, mas nada te impede em ler o código do Destiny Script. Agora se você tem domínio no RPG Maker e já usa Destiny Patcher, com certeza o Método B será indispensável:

Método A: Eventos
Método A: Eventos


Antes de tudo, teremos que criar 4 variáveis: uma para coordenada X, uma para Y, Id do terreno e a tecla que será pressionada (ver a lista de variáveis no topo do tópico). Então colocaremos para funcionar e continuar a programação deste sistema:
  • Determine a primeira variável para Set e deixe o valor para X coordinate;
  • A mesma coisa para a segunda variável, porém com o valor para Y coordinate;
  • Em Set Terrain ID..., selecione By Variable. Coloque a primeira variável na coordenada X, a segunda na Y e a terceira variável para determinar a Id do terreno;
  • Crie uma condição (Fork Conditions...), verificando se a variável que você determinou para retornar a Id do terreno está com o valor do mesmo número seja da Id do terreno que você criou para os tiles de escadas que se encontra na lista de terrenos. Deixe a opção ELSE marcada;
  • Dentro desta condição, use o comando Enter Password... detectando o valor da tecla retornando para a quarta variável que você fez nesta etapa. Deixe apenas a caixa dos direcionais marcada, desmarcando inclusive a opção Wait Until Key Hit;
  • Crie outra condição para determinar se a variável que detectou a tecla tem o valor de 1 (baixo). Deixe a opção ELSE marcada;
  • Altere o valor da variável da velocidade para um número inferior que a velocidade padrão. Eu, particularmente prefiro deixar o herói na 3ª velocidade, portanto eu colocaria este valor para 2. Se você não alterou a velocidade do seu herói no início do jogo, a velocidade normal está como 4, então o valor que você vai colocar nesta variável será 3;
  • Em ELSE faça a mesma coisa só que com a condição da variável da tecla com o valor 4(cima). Deixe o ELSE marcado também;
  • Coloque a variável da velocidade com o mesmo valor que você determinou na condição anterior;
  • Nos outros ELSE's que sobraram, coloque a variável da velocidade no valor padrão do seu herói. Se você não alterou no início do jogo, o valor será 4;
  • No final do evento, faça o comando Call Event... e selecione o evento comum que determinará a velocidade do herói.
Veja como ficou o seu código:
<> Variable Ch:[0002:Coord X]Set,  Hero   X Pos
<> Variable Ch:[0003:Coord Y]Set,  Hero    Y Pos
<> Set Terrain's ID:(V[0002],V[0003]), [0004:Terreno]
<> FORK Optn: Varbl[0004: Terreno] - (ID do novo terreno)
 <> Enter Password: [0005:Tecla]
 <> FORK Optn: Varbl[0005:Tecla] - 1
  <> Variable Ch:[0001:Velocidade]Set, 3
  <>
 :ELSE Case
  <> FORK Optn: Varbl[0005:Tecla] - 4
   <> Variable Ch:[0001:Velocidade]Set, 3
   <>
    :ELSE Case
   <> Variable Ch:[0001:Velocidade]Set, 4
   <>
  :END Case
  <>
 :END Case
 <>
:ELSE Case
 <> Variable Ch:[0001:Velocidade]Set, 4
 <>
:END Case
<> Call Event: Velocidade
<>
[close]

Método B: Destiny Script

Método B: Destiny Script


Com o uso do Destiny Script, não precisaremos criar uma variável para as coordenadas e nem para a velocidade, pois na livraria do Destiny, existem objetos que substituem sua função. Veja esta tabela abaixo:
  • Event[HERO].X: Coordenada X do herói
  • Event[HERO].Y: Coordenada Y do Herói
  • Event[HERO].Speed: Velocidade do Herói (de 1 a 6)
Tomando conhecimento destes objetos, abra o comando Comment.. e cole este código abaixo:
$
// Set Terrain ID (ID da variável que retornará o valor do terreno,X,Y)
Command.GetTerrainID(4,Event[HERO].X,Event[HERO].Y);

// Detectar se o herói está sobre o Terreno
if(v[4] == /*apague este texto verde e digite o valor do novo terreno aqui*/)
v[5] = Keyboard.GetKey();
if(v[5] == VK_DOWN || v[5] == VK_UP) // Se estiver pressionando baixo ou cima
  Event[HERO].Speed = 3; // Diminuir a velocidade
else // Se não estiver pressionando baixo ou cima
  Event[HERO].Speed = 4; // Velociade Normal
endif;
else
  Event[HERO].Speed = 4;
endif;
Perceba também que não haverá necessidade chamar e nem criar o evento comum que retornará a velocidade do herói, graças ao objeto Event[HERO].Speed que define a velocidade do herói descartando o uso do Move Event....
[close]


Muito bem... Aqui encerra o tutorial. Teste o seu jogo e veja como ficou o seu sistema, explore de todas as formas possíveis procurando por bugs para consertá-los posteriormente.

Baixe também uma pequena demonstração que foi feita para desenvolver este tutorial. Procure ver como funciona, mexam neste projeto à vontade para seu aprendizado. Lembrando que esta demo foi feita através do Método A, que é o método feito somente por eventos, sem o Destiny.
[box class=catbg2][/box]

[box class=catbg3]Espero que tenha gostado deste tutorial!
Caso tenha dúvidas, encontre um bug ou tenha algo a acrescentar, fique à vontade para postar aqui.

Até mais!  :XD:[/box]