🤔 Para Refletir :
""Até os devs têm contas a pagar. E, no fim das contas, as contas não tem fim.""
- InterPlay

RPG Maker 2003 Transição estilo Zelda no mesmo mapa

DevWithCoffee

Cidadão
Membro
Membro
Juntou-se
02 de Abril de 2019
Postagens
165
Bravecoins
283
Área
Programação
Motor de jogo
RPG Maker 2000
Este tutorial ajudará você a entender facilmente como usar um único mapa com várias seções do mesmo tamanho para jogos como Zelda 2D ou alguns jogos no estilo Metroidvania.

Para melhor explicação, usarei o mapa padrão do Rm2k/2k3 sem modificações, o que significa que a tela terá 320x240 pixels, portanto cada parte do mapa será composta por 20x15 blocos:
Map0001.png


Após essa etapa, precisamos identificar o centro exato da área onde o jogador começa. Se for a primeira área, onde está o trono, será 9x7.
Se for a segunda área à direita, onde há ladrilhos de pedra, terá 29x7... e se for abaixo de onde temos os rios e a grama, terá 9x22. Então, basta adicionar 20 nas laterais de cada área do mapa e 15 na parte inferior.

Agora vamos para a parte que fixa a tela no jogador. Vou criar um evento de mapa em " Processo Paralelo " e usar um " Interruptor " para que ele ocorra apenas uma vez:
Coffeescript:
@> Scroll Map: Fixed ON
@> Control Switches: [0001] = ON

Agora vamos abordar a lógica relativa à posição na tela. Crie também uma nova página em "Processo Paralelo", mas uma que seja ativada pelo interruptor que foi ativado na página anterior.

Nesta página, crie duas variáveis que rastreiem a posição do jogador na tela; isso funciona de forma diferente das coordenadas:
Coffeescript:
@> Control Variables: [0001:Player-X-Pic] = Player's Screen X
@> Control Variables: [0002:Player-Y-Pic] = Player's Screen Y

Em outras palavras, se o jogador estiver fora da tela, independentemente de sua posição no mapa, o valor será o mesmo como se ele tivesse começado em outro local.

Os valores exatos para quando o jogador está fora da tela são os seguintes:
  • -8 se estiver no lado esquerdo da tela.
  • 328 se você for para a direita da tela.
  • 0 se estiver acima da tela
  • 256 se estiver abaixo da tela
Considerando esses valores para cada possível posição do jogador fora da tela, este seria um exemplo prático para entender como funciona:
Screen320x240-Offset.png


Com isso, podemos criar uma condição para cada possibilidade de ocorrência. O problema é que os eventos em "Processo Paralelo" ainda permitem que o jogador se mova, então, em vez disso, adicionaremos outro Switch:
Coffeescript:
@> Conditional Branch: Variable [0002:Player-Y-Pic] <= 0@> Control Switches: [0002] = ON
@>
: Branch End
@> Conditional Branch: Variable [0001:Player-X-Pic] >= 328
@> Control Switches: [0002] = ON
@>
: Branch End
@> Conditional Branch: Variable [0002:Player-Y-Pic] >= 256
@> Control Switches: [0002] = ON
@>
: Branch End
@> Conditional Branch: Variable [0001:Player-X-Pic] <= -8
@> Control Switches: [0002] = ON
@>
: Branch End

Agora vamos criar uma terceira página ativada por este novo Switch, mas em vez de "Processo Paralelo ", deve ser configurado para "Execução Automática", que acionará o evento automaticamente. Isso impedirá o jogador de se mover até a conclusão. No final desta página, desative o Switch.
Coffeescript:
@> Conditional Branch: Variable [0002:Player-Y-Pic] <= 0
@>
: Branch End
@> Conditional Branch: Variable [0001:Player-X-Pic] >= 328
@>
: Branch End
@> Conditional Branch: Variable [0002:Player-Y-Pic] >= 256
@>
: Branch End
@> Conditional Branch: Variable [0001:Player-X-Pic] <= -8
@>
: Branch End
@> Control Switches: [0002] = OFF

Com isso, você já tem a base para criar um jogo ou mini-game que depende de um único mapa.
 
Voltar
Topo Inferior