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

Criando um jogo de plataforma (5/5)

Iniciado por MayLeone, 01/12/2012 às 11:25

[box class=titlebg]Criando um jogo de plataforma p5 (configurações finais)[/box]
[box class=catbg3]Estamos nos aproximando do final desse tutorial, agora que você já tem os recursos certos, sabe mapear pelo menos o básico para um jogo de plataforma, sabe criar sprites, e tem uma noção básica dos comandos envolvidos no decorrer desse tutorial, e muitos mais, já está na hora das configurações finais, onde como prometido, irei ensinar a criar plataformas em movimento, ajustar sua barra de vidas, e demais outras coisas...
Vamos por partes, como de costume:[/box]

[box class=titlebg]Plataforma em movimento:[/box]
Spoiler
[box class=catbg3]• Criando plataformas em movimento: Como muitos sabem, quase todo jogo de plataforma, temos um sistema desses, onde o player fica sobre uma plataforma, e a mesma o movimenta conforme sua rota.
Temos o prazer de ter um script que permite criar uma plataforma que se movimenta, graças ao meu amigo scripter, Gab, que desenvolveu esse script para ser adaptado com o script de simulador de plataforma do Sweet Liar.
Vamos começar a configuração dela por ser a mais simples:

Crie a plataforma no mapa (criando um novo evento, ponha o gráfico da plataforma, e deixe em direção fixa e processo paralelo)
Agora em comandos de eventos coloque o comando de gravidade zero (se a plataforma estiver no ar, do contrário, não será necessário) e logo abaixo, crie uma nova switch ponha o nome de ''plataformamove'' ou o nome que desejar.
Crie uma nova página nesse mesmo evento, ligue a swtich ''plataformamove'' nesta página.
Coloque o mesmo gráfico da plataforma, deixe em direção fixa; atravessar; e alta prioridade (essas informações são muito importantes, para que a plataforma funcione corretamente!) deixe a freq em 4.
Deixe iniciar quando em ''pressionar tecla'' e dentro dos comandos de eventos, coloque um comentário assim: PLATAFORMA
Tudo em letras maiúsculas.
Pronto, seu evento agora é uma plataforma em movimento, agora para fazer com que ela se movimente, basta ir na opção ''tipo'' e colocar sua rota (ex: esquerda para direita)
Agora quando o player ficar sobre essa plataforma ela vai levar o herói junto com ela sobre sua rota, e irá solta-lo quando sua rota terminar:


Pronto, criamos nossa plataforma em movimento, agora iremos criar um siteminha de ''mola'' desenvolvido por mim, para esse tutorial.[/box]
[close]


[box class=titlebg]Sistema de mola:[/box]
Spoiler
[box class=catbg3]Sistema de mola: Esse sistema de mola é muito útil e divertido para quem está jogando seu jogo.
O personagem pula nessa mola e vai para cima com toda a velocidade e depois, se não estiver numa superfície sólida, ele cai com o mesmo impulso que subiu.
Sua configuração é simples:

Crie um novo evento no mapa (ele será a mola) e coloque o gráfico que desejar.
Ponha em inciar quando em processo paralelo.
Agora é hora de configurar os comandos de eventos.
Crie 4 vars (isso você já está cansado de fazer) duas com as coordenadas X e Y do herói e duas com as coordenadas desse evento, que será nossa mola.
Crie aquele esquema de condições, que se a var da coordenada X do heroi estiver na var da coordenada X do evento da mola, e a var da coord Y do heroi e coord Y da mola estivem juntas, os comandos aconteçam:


Agora a baixo dessas condições, coloque os efeitos da mola:
Colocarei para que uma SE de som de mola seja reproduzido, e logo em seguida o heroi seja jogado para cima com força e velocidade, para isso chamei o comando mover evento.
Mas antes de jogar o herói para cima, precisamos fazer com que, o comando saiba quando o player está virado para a esquerda ou direita.
Chame o comando condições e em sua aba 3, ponha> personagem>> personagem>> direção esquerda.
Agora dentro destas condições, coloque o comando mover evento (este evento) olhar à esquerda.
Depois te ter feito isso, chame o comando de mover evento novamente, agora sim podemos fazer com que o personagem seja arremessado, para isso coloque dentro do comando mover evento assim:
Mover evento>> personagem;
Olhar à esquerda;
Mudar Gráfico do personagem (escolha o dele pulando);
Mudar velocidade: 6 - Mudar frequencia: 6;
Coloque mover acima, quantas vezes você achar necessário;
Agora em mudar gráfico do personagem, escolha o dele caindo;
E coloque a mesma quantidade de ''mover abaixo'' que você colocou no ''mover acima''
Agora mude a freq e vel para 4, e coloque o gráfico do personagem correndo.
Desmarque as opções ''ignorar se bloqueado'' e ''repetir operação''
Depois dê ok, e coloque o comando de evento: esperar fim de movimento.
Seu evento deve estar mais ou menos assim:
Spoiler

[close]
Faça o mesmo processo outra vez, só que dessa vez com a direção direita.
Acabou! seu evento de mola está pronto! Rode seu jogo e veja como ficou!
Bem realista, não? não fica com a aparência de que o heroi está flutuando, ao invés de ter ser sido jogado para cima, pelo contrário...
Duas dicas sobre esse sistema:
1º Não use esse sistema quando o comando de enterrada estiver ativo (ou seja, não use o comando de enterrada no mesmo mapa aonde está o sistema de mola) pois o mesmo pode dar um bug na hora do personagem pular na mola e ser arremessado.
2º Não coloque a mola logo abaixo de plataformas, deixe sempre esse sistema, aonde acima dele estará livre.[/box]

[close]


[box class=titlebg]Ajustando a HUD:[/box]
Spoiler
[box class=catbg3]Lembra-se de que postei no início desse tutorial o script de barra de vidas? então, hora de usa-lo.
No meu jogo teremos a barra de energia que será representada pelo Hp do herói e a barra de vidas que será representada pelo Mp do herói (você pode fazer o inverso também)
O que acontece é o seguinte: No meu jogo o player começa com a barra de energia em 300, que será representada pela figura de um coração, já que são 300 de hp e o script da HUD lê cada imagem valendo 100, o personagem então começa com três corações (pura matemática) acho que isso seria meio óbvio.
O Hp máximo no database do meu personagem é 600, ou seja, o player começa com 300 de Hp, porém, ele pode pegar no decorrer do jogo, algum item que lhe dê energia e aumente sua vida, e seu máximo será 600 de Hp (representado na HUD por seis corações)
No script da Hud, você pode alterar o nome das imagens que serão a sua barra de vida e energia, basta editar as linhas 17 e 18, e colocar o nome que quiser, para que o script reconheça as imagens (as imagens devem estar na pasta pictures do seu projeto!)
Spoiler
[close]

Para criar sua barra de vidas com a imagem que quiser, basta criar um novo documento no seu editor de imagens com essas medidas: 173x26 e fundo transparente.
Agora dentro desse documento que você acabou de criar, desenhe ou coloque a imagem do que você desejar, que represente sua barra de energia do personagem:

Obs: Coloque a quantidade de figuras que representam a energia do seu personagem, de acordo com o número máximo de Hp dele.
Ex: Meu personagem tem o máximo de 600 de Hp, então irei colocar na imagem, 6 corações, se fossem 700 de Hp máximo, eu colocaria 7 corações, e assim por diante...
Agora salve a imagem no seu computador, e coloque o nome dela, o mesmo nome que está no script.
Importe essa imagem para o resource manager na pasta pictures no seu projeto, e pronto!
Sua barra de energia está pronta.
O mesmo você fará com sua barra de vidas, coloque a imagem que você quiser, só que não uma igual a da barra de energia, para diferenciar energia de vida.
As medidas para a barra de vida são: 171x22.[/box]
[close]

[box class=titlebg]Sistema de Vidas:[/box]
Spoiler
[box class=catbg3]Agora, o que acontece com a barra de energia é o seguinte: o personagem no meu jogo, começa com 4 vidas e três de energia (300 de hp e 400 de mp), se ele chegar a zero em sua barra de energias, ele perde uma vida, então ele ficará com 300 de hp novamente e 300 de mp (três vidas), e assim por diante, ate´que, se ele perder 300 de hp e perder todas as vidas, o jogo dará game over.
Para que isso aconteça iremos criar o sistema de vidas, desenvolvido por mim, especialmente para você.

Toda fase teremos um mapa para ela, o mapa ''dead''.
O que isso quer dizer?
Assim: temos o mapa 1 que é a fase 1, então iremos criar mais um mapa para essa fase, nesse mapa o personagem será teleportado, e perderá uma vida, esse é o mapa da morte, digamos assim, depois de perder a vida, ele volta para o mapa anterior, só que com uma vida faltando.
Essa vida nós perdemos quando a barra de energia chega a zero, então para fazer que quando o player fica com 0 de Hp, ele seja teleportado para esse mapa e perca 100 de Mp, faça o seguinte:
Crie um evento fantasma no mapa, em processo paralelo, crie uma nova var para o personagem, e coloque a opção operando em heroi >> Hp.
Agora, chame o comando condições e selecione a var que acabou de criar, feito isso coloque a constante em 1 e menor/igual.
Dê ok. Na condição ponha para que o player seja teleportado para o mapa ''dead'', nessa opção de teleporte, marque a opção ''invisivel'' em não, seu evento deverá estar assim:


Nesse mesmo evento, criaremos a condição de que quando o player tiver zero de Mp (vida) o jogo dê o game over, para isso faça o mesmo processo do Hp, só que escolha uma var diferente, e em operando heroi, coloque Mp, e ao invés de, nas condições colocar o teleporte, chame o comando de game over.
Seu evento deve estar mais ou menos assim:


Agora é hora de configurar o mapa que nos tira uma vida, o mapa dead.
No mapa dele, deixe o que quiser, eu coloquei para que quando o player fique com zero na barra de energia, e seja teleportado para o mapa dead, uma imagem do personagem caído no chão apareça, e toque uma música de derrota, após essa imagem, o personagem perde uma vida, e volta para o mapa aonde ele estava, com a sua barra de energia cheia novamente.
Criei um evento fantasma, em processo paralelo, que mostra a imagem do personagem caído.
Depois, criei mais outro evento nesse mapa, em inicio automático e nele coloquei:
Mudar gráfico do personagem>> nada, para que ele não apareça nesse mapa.
Desativei a switch do som de pulo e ataque do heroi (caso o jogador aperte para pular nessa tela, o som não será reproduzido, porém, com a switch do evento comum do som ligada, se o jogador apertasse a tecla de pulo, iria ouvir o personagem pulando, e isso seria um tanto estranho)
Coloquei mudar Hp do heroi em constante 300, para que o personagem tenha sua barra de energia cheia outra vez.
Coloquei para diminuir o Mp do personagem em constante 100, para que ele perca uma vida.
Coloquei a SE da música de derrota.
E depois esperar 180 frames.
Agora coloquei para que a switch do som do pulo e ataque do personagem fique on novamente, coloquei o teleporte para a fase que estavamos anteriormente, coloquei a opção deletar imagem 1 (para que a imagem do personagem caído seja deletada depois que voltar pro antigo mapa) mudar gráfico do personagem>> o gráfico dele correndo novamente, e por fim o apagar evento temp. para que esse comando seja ativado outra vez, quando voltarmos para esse mapa de novo, seu evento nesse mapa deve estar mais ou menos dessa forma:


Sua fase de morte está pronta, agora cada vez que o personagem ficar com a barra de energia em zero, ele será teleportado para esse mapa, aonde irá perder uma vida, e encher sua barra de energia.
Se perder todas as vidas, dará game over!


Prontinho, barra de energia ajustada, e sistema de vidas pronto.

Nossas configurações chegaram ao fim, agora você pode criar seu jogo de plataforma com minhas dicas e tutoriais, e ainda inventar seus próprios sistemas para incrementar seu jogo de plataforma!

[/box]
[close]

[box class=titlebg]Extra?[/box]
Spoiler
[box class=catbg3]Alguns ''extras'' para implementar o tutorial:
1º se não quiser que a letra ''G'' fique do lado do script de dinheiro, simples, vá em Banco de dados>> Sistema>> Onde está escrito ''dinheiro'' terá o ''G'' apague a letra G, e pronto, ou escreva no lugar da letra o que preferir, por exemplo: ''Pontos''.

2º criei um sistema bem simples de continue, para baixar clique aqui.

Só uma pequena observação:
Não é legal num jogo de plataforma, deixar o menu do rpg maker aparecer, para evitar que o player aperte esc e o menu apareça, crie um novo evento comum com a opção ''impedir menu'' e ligue a switch desse evento comum em algum local do mapa, e pronto![/box]
[close]

[box class=titlebg]F.A.Q[/box]
Spoiler
Posso desativar o script de plataforma em determinados mapas, configurados por mim?
Não. Apesar de ser o melhor script de plataforma que já conheci, o simulador de plataforma ainda não tem a função de ativar/desativar seus comandos em determinados mapas.
Talvez em breve, algum scripter atualize o mesmo, mas por ora é impossível.

Como faço para deixar um evento sem gravidade. EX: Voando pelo mapa, sem cair.
Simples, chame o comando chamar script no seu evento e ponha isto:
$game_map.events[@event_id].gravity = 0


Posso colocar algum script ABS junto dos do pack? Ou outros scripts?
Recomendo que não. Muitos scripts do pack possuem
incompatibilidade com outros scripts, principalmente ABSs, por isso sugiro, usar meu método de danos, mostrado no tutorial de parte quatro.

Posso criar novos tipos de inimigos, além dos mostrados nesse tutorial?
Claro. Faça como quiser, use sua imaginação, o game é seu!

É obrigatório usar o sistema de vidas?
Não. Use-o se quiser.
Se preferir fazer com que o jogo se encerre ao perder todo o HP (energia) fique à vontade.


Por que usar um esquema de variáveis e coordenadas, ao invés de usar o comando: ''ao tocar evento''?
Eu já expliquei ao longo do tutorial o motivo, porém, acho que não fui muito clara.
O script de plataforma, por alguma razão, impede que esse comando funcione corretamente, ele só irá funcionar se a opção ''atravessar'' no evento estiver marcada. Porém, com essa opção marcada, o evento irá ficar repetindo seus comandos, então se, por exemplo, o inimigo estar configurado para retirar quantia tal de HP do herói ao encostar-se nele, com a opção ''atravessar'' marcada, o inimigo irá ficar retirando  Hp do herói, até que o mesmo morra, sem poder se defender. O meio mais eficaz que eu encontrei para impedir que isso ocorra, foi com o esquema das coordenadas do herói e evento.

Esse tutorial serve para outras engines? EX: RM2K~RM2K3/RMVX?
Esse tutorial deve servir de base para a construção de um jogo desse gênero, mas, somente na parte da configuração dos comandos de eventos.
Porém os scripts apresentados ao longo desse tutorial são para o Rpg Maker XP! Talvez mais para frente, alguns scripters possam estar adaptando esses scripts para o RPG MAKER VX, porém para as versões anteriores seria impossível. Mas, você pode simular algo parecido nas engines mais antigas, é só ter criatividade e paciência.


Existem muitos eventos em processo paralelo, isso pode provocar várias lags no meu jogo, como posso evitar isso?
Há vários meios de evitar lags nos jogos, os mais recomendados estão nesse tópico, criado pelo membro Raizen, onde ele ensina como evitar lags.
E acrescento mais um método, que se encaixa perfeitamente na criação de jogos de plataforma:
Crie vários mapas pequenos, para cada fase. EX: quatro mapas pequenos, para a mesma fase. O primeiro é o início de determinada fase, o segundo é sua continuação, com o mesmo panorama, tile e cenários, o terceiro e o quarto também, porém para a próxima fase, faça o mesmo, só que mude os gráficos, para que o jogador sinta a diferença entre as mudanças de stages.
Evite mapas grandes, pois mapas muito largos e altos, cheio de comandos, podem ficar com lag.

Poderia me passar a versão desencriptada da demo-test?
Claro. Peça para mim via mensagem privada. (MP)

Ué, cadê a parte seis, May?
Não postei a sexta parte do tutorial aqui no Centro Rpg Maker, pois achei que a categoria do tutorial não estivesse ligada com a dos comandos de eventos (área desse tutorial aqui no fórum.) A última parte do tutorial é apenas um extra, que se trata de encontrar/aplicar midis no seu jogo.
Você pode encontrar a sexta parte do tutorial clicando aqui.

Como faço para retirar a gravidade do personagem?
Coloque o comando chamar script em processo paralelo e ponha isto:
$game_player.gravity = 0

Porém, eu não recomendo.

Posso colocar alguma fase bônus no jogo?
Claro. Contanto que a fase bônus também seja plataforma, não haverá problemas.

Eu não quero usar determinado(s) script(s) no jogo, posso retira-lo(s)?
Sim, dependendo do script. Se não quiser usar o de check-point, ou o de plataforma em movimento, usar outro script de HUD e pauser, colocar outro menu, e não o do pack, e retirar o script de eventos atravessarem tudo, fique à vontade. Só não recomendo retirar o script de plataforma, logicamente, e o de colisão entre eventos, pois sem ele não seria possível causar danos nos inimigos.

Queria usar um script de UMS ou AMS, posso?
Recomendo que não. Eu não testei tais scripts, porém eles tem 60% de chances de ter incompatibilidade com os demais scripts do pack, fora que causaria muita lag no jogo. Além do mais, não vejo razões em usar scripts para modificar mensagens, se em jogos de plataforma há poucos diálogos. Sugiro criar uma introdução e uma história no jogo à base de pictures, é muito mais viável e não causará lags.

Como faço para os eventos não serem atravessáveis?
Se o evento for um char da parte do tile do mapa, é só você bloquear essa parte do tile no database, e no evento desmarcar a opção ''atravessar''.
Nos comandos de eventos ponha chamar script e cole isto:
self.high = false

E um comentário assim: ''event''. Pronto, seu evento não é mais passável.
Agora, se o evento for um char normal, não há como.

Como criar um loop igual os jogos do Sonic?
Deve haver um jeito sim, mas eu não me aprofundei muito nesse detalhe, pois eu não estava desenvolvendo um jogo estilo Sonic.

É possível criar jogos no estilo Mário Bros, com esse tutorial?
Sim.

O que há de errado com o script de plataforma em movimento? Toda vez que eu fico na plataforma, após a rota, o player cai.
Não há nada de errado com o script, ele é assim mesmo, e não foi eu quem desenvolveu os scripts desse tutorial, então não posso ajudar, em relação aos scripts.

Acesso inválido no local de memória, na DEMO:
Você baixou a demo-test e ela acusou o erro de acesso inválido ao local de memória?
Acalme-se e faça o seguinte:
Na pasta da demo terá um arquivo com o nome de ''game.ini''. Abra esse arquivo no bloco de notas, ou em qualquer outro editor de textos que você tiver.
Substitua essa parte: Library=RGSS102J.dll por esta: Library=RGSS103J.dll
Salve o arquivo, e tente rodar o jogo.
Conseguiu? ótimo! divirta-se! do contrário tente fazer o mesmo processo, só que desa vez ponha isto: Library=RGSS100J.dll
Salve e rode o jogo.
Se o erro persistir mesmo depois de seguir essas instruções, me procure imediatamente.

Como destruo o boss na demo?
R: Você precisa acerta-lo nove vezes, para que ele morra.
O ataque dele é duplo, ou seja, se você encostar nele, ele irá lhe retirar duas vidas, então cuidado.
Espere-o parar, e depois atinja a cabeça dele, no máximo três vezes. Esquive-se das pedras.
Repita esse processo até que ele morra.

Os meus eventos comuns não estão funcionando. Porquê?
Eles DEVEM estar funcionando se você os configurou conforme o tutorial mostrou, você deve ter se esquecido de ligar as switchs deles no mapa.
Para acabar com o problema, crie um evento em processo paralelo no mapa, com as switchs dos eventos comuns ON.
Novo evento > processo paralelo > comandos de eventos > opções de switch> deixar ON as switchs dos eventos comuns> ok.
Ou, chame o comando 'evento comum' e selecione os mesmos, num evento qualquer em processo paralelo no mapa.

Fiz um inimigo, conforme mostrado na parte quatro do tutorial, mas quando vou testar o jogo aparece o seguinte error:
Spoiler
[close]
Acalme-se, isso acontece, e já tem solução.
Na verdade é um erro num script, como você pode ver aonde não definiu-se o comando mostrado no erro, o game_map.
Este erro ocorre no comando de gravidade zero. Muitas pessoas na hora de chamar o script, se esquecem de colocar o cifrão ($) no comando, deixando- assim:
Citargame_map.events[@event_id].gravity = 0

Quando na verdade o correto seria assim:
Citar$game_map.events[@event_id].gravity = 0
Para colocar o cifrão antes de 'game_map' basta usar o atalho no teclado: shift+4.

[close]

[box class=titlebg]Encerramento:[/box]
[box class=catbg3]A parte de configurações de eventos, chegou ao fim, resta-nos agora ficar com a parte de midis que é muito interessante, que se encontra na parte 6 desse tutorial.
Mas, não irei posta-la aqui na CRM, pois a parte seis envolve o assunto de midis, e não tem nada haver com eventos, por isso, se quiser ler a última parte desse tutorial (que é extra também, fala sobre músicas do jogo)
Clique aqui!

E finalmente chegamos ao fim do tutorial: Criando seu jogo de plataforma no Rpg Maker XP!
Você agora sabe como configurar inimigos, ataques, vidas, obstáculos, danos, terrenos, tem os recursos certos para isso, sabe criar sprites e mapear um jogo de plataforma e muito mais.

Agora é sua vez! Crie seus jogos de plataformas, e mostre seus resultados.
Garanto que criar um jogo desse Gênero é bem divertido!

Obrigada à todos por acompanharem este tutorial, criado inteiramente por mim, agora quero ver as criações de vocês!!

Qualquer dúvida, sugestão, bug, ou qualquer tipo de coisa relacionada com este tutorial, entrar em contato.

Encerro esse tutorial, postando para vocês a demo-test do jogo de plataforma, mostrado nesse tutorial, que me serviu de exemplo e base, para a criação desse tuto.
[/box]


[box class=titlebg]Demo-test:[/box]
[box class=catbg3] Baixe a demo-test  do jogo de plataforma: Decap Attack criado por mim no rmxp, para esse tutorial:
Disponível em cinco servidores diferentes:
Mediafire; Fileserve; 4shared; Sendspace e Megaupload.[/box]

Demo-test encriptada, se a quiser desencriptada, entrar em contato comigo;
Para baixar a demo em algum dos servidores, basta clicar no ícone do mesmo;
Tamanho: 14. 86 MB;
Arquivo compactado sem senha;
Necessita-se do Rpg Maker XP e de seu RTP instalados em seu computador, para que se possa rodar o jogo;
Não há bugs nem lags na demo (obs: se os inimigos demorarem muito para serem mortos, eles irão morrer automaticamente);
Um pequeno erro de digitação na title-screen da demo, invés de eu escrever ''Start Game'' escrevi ''Star Game (jogo estrela) Me perdoem pelo meu erro, quando notei era tarde de mais;
Para saber os comandos do jogo clique na opção '' extras'' e depois em ''comandos'';
A partir do momento que você colocar  a demo no modo ''full screen'', não tem como retira-la desse modo, porém, se não quiser mais jogar, basta apertar a tecla do iniciar em seu computador, e depois CTRL+ALT+DEL e fechar o jogo por ai;
Quando você finaliza o jogo, ele se fecha automaticamente, após os créditos;
O jogo contém todos os sistemas usados nesse tutorial, e os créditos do autores dos scripts; nele também contem 6 fases, dois stages, cada um com três fases, um chefão, uma tela para a finalização do jogo (tenho que admitir que o final que dei para o jogo é bem chinfrim) e a tela dos créditos;
Se perceber algum bug, ou não conseguir passar nas fases, entre em contato imediatamente.
[/box]

                
(se algum link estiver fora do ar, favor avisar)

Os créditos dos autores dos scripts, encontram-se na demo!

Tags para busca:


  • Plataform
  • Sistema de plataforma
  • Decap Attack


Tutorial: MayLeone;