🤔 Para Refletir :
"Saber a hora de parar é quase tão importante quanto saber a hora de começar"
- Ricky O Bardo

RPG Maker 2003 Video tutorial - Reflexo de espelho que funciona com jogadores e NPCs

DevWithCoffee

Cidadão
Membro
Membro
Juntou-se
02 de Abril de 2019
Postagens
140
Bravecoins
218
Download: https://www.mediafire.com/file/u9hbnn2njlsfe7u/RPG_Maker_-_Mirror_system.zip/file
Senha: rpgmaker
Clique aqui!
(Se você gostou do conteúdo, marque cada vídeo com um like e inscreva-se no canal)

2k3-Mirror.png

Parte 1: Preparando o cálculo
Nesta primeira parte mostrarei como fazer o evento do mapa ir para a mesma posição X do jogador, mas a posição Y será o inverso da posição Y do jogador usando a primeira posição do próprio reflexo como referência.
Se a coordenada Y inicial do reflexo for 6, esta será a base do próprio espelho e o valor será subtraído da coordenada Y do jogador para que ele se afaste da base.
(Na demo tem um mapa chamado "Mirror_OLD", nele você pode ver esse estágio pronto)

Parte 2: Movimento reflexo suave
Apesar de pouco conhecido, antigamente era comum usuários do Rm2k(3) utilizarem um sistema de lagarta feito por eventos, a lógica que utilizei foi a mesma, a reflexão ao invés de ser transferida para a coordenada seguirá como "Move event" até atingir a coordenada calculada com base na posição do jogador.
Info: a velocidade deve ser definida manualmente, para trabalhar com sistema de dash, que é o sistema de correr segurando uma tecla, serão necessários ajustes, provavelmente a criação de uma nova página com a velocidade maior
(Na demo o mapa "Mirror (Only Player)" tem o sistema completo funcionando)

Parte 3: Corrigindo o gráfico refletido
Neste ponto o sistema já está funcionando, mas fica a dúvida de como desenhar o gráfico espelhado, pois nem sempre os sprites terão os dois lados do corpo iguais, isso pode ser devido ao penteado, acessório no braço ou roupa, então é necessário redesenhar o gráfico invertido, não é necessário nenhum programa avançado para isso, utilizei o próprio MSPaint do Windows para isso, veja a lógica nesta imagem:
2k3-FixingGraphic.png


Parte 4: Últimos testes
Enquanto o sistema está funcionando neste ponto, é preciso ter cuidado com o limite de altura do espelho em termos de quão perto o jogador pode chegar da coordenada Y do topo do mapa. Se o reflexo não tiver para onde ir, o efeito no jogo será estranho. Os números no lado esquerdo da tela são usados para testar quaisquer melhores posições iniciais para a base do espelho, para que você possa entender melhor como todo o sistema funciona.

Parte 5: NPCs com reflexão (somente Rm2k3)
Para deixar o sistema mais prático fiz parte dele com Eventos Comuns , então para afetar os eventos do mapa que representam os reflexos dos NPCs usei o parâmetro "This Event" nos comandos que precisavam, mas isso não funciona no RPG Maker 2000, então para funcionar veja a próxima parte onde desfaço a parte dos eventos comuns e refaço diretamente em cada evento de reflexo .
Info: Embora intuitivo, isso não deve ser aplicado a objetos estáticos, como colunas, baús, etc. Para fazer isso, basta criar um evento reflexo na posição correspondente e o movimento de abertura é simplesmente sincronizado com o movimento do objeto real. Claro, é necessário criar um gráfico do mesmo ao contrário se o próprio objeto não puder representar isso.
(Veja o mapa "Mirror (NPCs)", com esse método é fácil criar mais NPCs com reflexos)

Parte 6: Convertendo para RPG Maker 2000
O parâmetro "This Event" funciona em Eventos Comuns quando chamado por um evento de mapa na versão 1.12a do Rm2k3, essa foi uma correção ou melhoria incluída que ajudou muito no desenvolvimento de sistemas baseados em eventos, possibilitando utilizar um Common Event como função em linguagens de programação, porém isso não funciona em versões anteriores e nem na versão mais recente do Rm2k, então para isso é necessário recriar cada um dos três Common Events nos eventos que representam os reflexos, separando-os por páginas para que possam ser chamados pelo próprio evento reflexo sem gerar conflitos, e assim podendo apagar os Common Events.

Parte 7: Controlando objetos estáticos
Este próximo passo é importante para deixar as animações do jogo mais realistas, mas neste caso não utilizaremos o sistema de reflexão espelhada, pois são objetos que permanecem parados na mesma coordenada do mapa.
Este é um método básico para sincronizar o reflexo com as animações de baús abrindo ou alavancas mudando de posição. O mesmo efeito pode ser aplicado a eventos de NPC que têm uma animação personalizada ao interagir com o jogador.
Um exemplo seria com monstros no mapa onde eles deveriam ter uma animação após serem derrotados.
 
Cara, isso é sensacional! Uma excelente forma de tornar o jogo mais imersivo sem ter muito impacto na performance.
Talvez eu apenas esteja 'velho', mas fico abismado como técnicas criativas como essa eram usadas para tornar os jogos mais imersivos, numa era em que recursos gráficos eram limitados, e hoje em dia parece que todo jogo desenvolvido por grandes empresas foca apenas em usar motores gráficos como o unreal engine, com recursos 'pesados' como raytracing, para dar um retorno visual que, sinceramente, em raros casos vejo como melhores que os demonstrados na oitava geração de jogos.

Eu lembro que o Crash Bandicoot 2 do PS1 usava a mesma técnica para refletir o personagem no nível "Snow Go". Em alguns casos era até possível bugar contra a parede e fazer o seu "clone" refletido sair parcialmente do "espelho" :ROFLMAO:

1744007722873.png


Muito legal esse recurso, parabéns por levar em consideração até mesmo o detalhe de inverter a sprite no eixo 'X' para que o reflexo fique corretamente posicionado.
 
Obrigado por comentar Doug, eu nunca te vi no Discord da Condado, lá tem bem mais ativada, os fóruns estão praticamente desertos hoje em dia
Um dia desses ainda vou passar por lá... É que como meu emprego envolve usar o Discord, eu passei a ver a plataforma menos como algo para usar por laser, e mais como meu "ambiente de trabalho" ^^"
 
Voltar
Topo Inferior