Autor Tópico: RPG Maker MV Sistema simples de pulo  (Lida 133 vezes)

Offline HermesPasser

  • programador de quintal
  • Morador
  • *
  • 6/14
  • Participante do evento Natal II.
    • Ver perfil
    • Gládio Cítrico
    • Inventário
Sistema simples de pulo
Online: 04 de Dezembro de 2017, 16:35:28
Introdução
Primeiramente fiz esse sistema para a "Gincana: Fábrica do Noel", ele basicamente pula um obstáculo a sua frente ou seja, a partir de sua direção, ele irá pular para a posição após a que está em sua frente. Se essa posição tiver um obstáculo então ele não irá pular.

Comandos
Código: [Selecionar]
Key Code
Tecla a ser apertada para pular, a padrão é tab.

Código: [Selecionar]
SE Jump
Som ao pular, ele tem que ser um SE e o padrão é o Jump1; Não deve-se colocar a extensão.

Código: [Selecionar]
SE Cannot Jump
Som quando não se pode pular, ele tem que ser um SE e o padrão é o Jump2; Não deve-se colocar a extensão.

Demonstração
Esqueci de gravar o audio, mas tem efeitos sonoros.

Código
Em anexo.

É recomendável que o nome do arquivo não seja alterado.
« Última modificação: 09 de Dezembro de 2017, 09:30:50 por HermesPasser »
 
   Esses usuários gostaram disto: Resque

Offline Resque

  • Administração
  • *
  • 5/14
  • Tenha 1 ano na comunidade. Participante do evento: Lua Infectada Participante do evento: Baile das Máscaras 2017
    • Ver perfil
    • Inventário
Re:Sistema simples de pulo
Resposta #1 Online: 05 de Dezembro de 2017, 03:24:50
O seu script ficou muito bom, pequeno e simples, mas existem algumas melhorias que eu gostaria de sugerir e que poderiam ter feito você ganhar mais pontos no evento.

Nomenclatura e definição de variáveis

Código: [Selecionar]
var posx = $gamePlayer.x, posy = $gamePlayer.y, d = $gamePlayer.direction(),
      movex = 0, movey = 0;

O código acima está difícil de ler, pessoalmente, eu dou preferência na facilidade de leitura do código, do que poupar linhas. O computador irá ler e executar tudo na mesma linha, devemos achar uma forma melhor do cérebro humano fazer o "parse".

O código acima poderia ficar assim:

Código: [Selecionar]
var posx  = $gamePlayer.x;
var posy  = $gamePlayer.y;
var d     = $gamePlayer.direction();
var movex = 0;
var movey = 0;

Creio que dessa forma a leitura ficaria melhor, e por falar em leitura, a variável "d" ficaria bem mais fácil de ler se tivesse o nome trocado por "direction", pois 'd' pode ser qualquer coisa para quem está lendo o script pela primeira vez.


Números mágicos

Código: [Selecionar]
switch(d){
  case 2:
    posx += 0, posy += 2;
    movex += 0, movey += 2;
    break;
  case 4:
    posx += -2, posy += 0;
    movex += -2, movey += 0;
    break;
  case 6:
    posx += 2, posy += 0;
    movex += 2, movey += 0;
    break;
  case 8:
    posx += 0, posy -= 2;
    movex += 0, movey -= 2;
}

Seguindo a mesma linha de raciocínio de nomenclatura de variáveis, fica bastante difícil de ler o código e descobrir o que são 2, 4, 6 e 8 em cada case.

Apenas alguém que já saiba que essas são as direções do personagem irá bater o olho e entender o que está acontecendo, e fica ainda pior quando o switch é feito na variável "d".

Minha sugestão seria a criação de um mapa de direções:

Código: [Selecionar]
var direction  = $gamePlayer.direction();
var directions = { 2: 'down', 4: 'left', 6: 'right', 8: 'up' }

switch(directions[direction]){
  case 'down':
    posx += 0, posy += 2;
    movex += 0, movey += 2;
    break;
  case 'left':
    posx += -2, posy += 0;
    movex += -2, movey += 0;
    break;
  case 'right':
    posx += 2, posy += 0;
    movex += 2, movey += 0;
    break;
  case 'up':
    posx += 0, posy -= 2;
    movex += 0, movey -= 2;
}


Duplicações duplicadas

Código: [Selecionar]
if ($gameMap.isPassable(posx, posy, d)){
      $gamePlayer.jump(movex, movey, d);
      AudioManager.playSe({name: jumpSound, volume: 90, pitch: 100, pan: 0});
    } else
      AudioManager.playSe({name: jumpError, volume: 90, pitch: 100, pan: 0});


O problema do código acima, é que temos duas linhas quase idênticas:

Código: [Selecionar]
AudioManager.playSe({name: jumpSound, volume: 90, pitch: 100, pan: 0});
AudioManager.playSe({name: jumpError, volume: 90, pitch: 100, pan: 0});

Vamos supor que em alguma alteração futura, o volume precisará ser reduzido para 50,
teremos que alterar em dois locais:

Código: [Selecionar]
AudioManager.playSe({name: jumpSound, volume: 50, pitch: 100, pan: 0});
AudioManager.playSe({name: jumpError, volume: 50, pitch: 100, pan: 0});

Isso é muito ruim, nesse momento, as duas linhas estão bem perto, mas poderiam estar separadas em um arquivo de 600 linhas de código.

Duplicação de código é uma das maiores causas de bug, podemos evitar isso criando uma nova função e passando o name por parâmetro:

Código: [Selecionar]
  function playSe(name)
  {
    AudioManager.playSe({name: name, volume: 90, pitch: 100, pan: 0});
  }


Código: [Selecionar]
...
  if ($gameMap.isPassable(posx, posy, d)){
    $gamePlayer.jump(movex, movey, d);
    playSe(jumpSound);
  } else
    playSe(jumpError);
...

São alterações simples que podem fazer diferença no nosso dia, ficarei muito feliz caso absorva algo dessa análise.

Estarei aberto para debates sobre as sugestões apresentadas.
« Última modificação: 05 de Dezembro de 2017, 15:23:19 por Resque »
#TeamHero

 
   Esses usuários gostaram disto: Mayleone Zaggojhon Kawthar HermesPasser

Offline HermesPasser

  • programador de quintal
  • Morador
  • *
  • 6/14
  • Participante do evento Natal II.
    • Ver perfil
    • Gládio Cítrico
    • Inventário
Re:Sistema simples de pulo
Resposta #2 Online: 05 de Dezembro de 2017, 10:38:48
@Resque Considerando que é um plugin não pensei na legibilidade dele para os outros, estou acostumado a ler linhas grandes, erro meu. Segui algumas de suas sugestões e reenviei o anexo.
 
   Esses usuários gostaram disto: Resque

Bruce Azkan

  • Visitante
Re:Sistema simples de pulo
Resposta #3 Online: 06 de Dezembro de 2017, 04:45:10
Muito lega, cara! Valeu os pontos ganhos! Vocês estão empenhados esse natal!
 
   Esses usuários gostaram disto: Resque

Offline HermesPasser

  • programador de quintal
  • Morador
  • *
  • 6/14
  • Participante do evento Natal II.
    • Ver perfil
    • Gládio Cítrico
    • Inventário
Re:Sistema simples de pulo
Resposta #4 Online: 09 de Dezembro de 2017, 09:30:10
@Bruce Azkan, é o que eu diga. Essa é minha segunda experiência mexendo com o "RGGS" e fico feliz de um dos sistemas poder ser útil para alguém.
 

Estes usuários estão vendo este tópico:
0 Membros e 1 Visitante