Forums » RPG Maker VX Ace

Sistema de save e load automático

    • 206 posts
    28 de maio de 2015 15:28:54 ART

    Qburd.png

    Sistema de save e load automático

     

    Criado por math2607

     

     

    :mrm=linha:
     


    Introdução

     
         Quem nunca viu um game que você entra nele, não salva, não cria arquivos de saves nem diretórios, e quando você entra de novo, está tudo lá, salvo? Este tutorial tem a finalidade de mostrar a vocês, com simplicidade e clareza, como montar um sistema desse tipo. 
     

    :mrm=linha:

     

    Let's Rock


          Antes de tudo, darei um conselho: Esse sistema funcionará muito bem em telas de Título por eventos, ou pelo menos Titles por scripts bem configuráveis. Se o load e save são automáticos, irá perder o sentido utiliza-lo em um jogo cujo o Title já possui uma opção de load. Para falar a verdade, este sistema combina muito bem em mini-games, como o meu Ace Jumpers (Subway Surfers). Dito isto, vamos começar. Aconselho criar um novo mapa, onde a engine irá verificar tudo o que será carregado. O fundo pode ser todo escuro (ou transparente), e o personagem pode começar sem gráfico. Feito isso, crie um evento, e em Condição de Inicio, coloque Início Automático. Agora crie uma condição, e nela vá na última aba e marque a opção Script, e cole o seguinte código:
     

    DataManager.save_file_exists?


     
          Deixe a opção de Exceção ativa e clique em OK. Esse código verifica se tem algum save dentro da pasta do jogo. Dentro da Condição, clique duas vezes em <> e chame um script (na terceira aba). Dentro, cole outro script:
     

    DataManager.load_game(0)


     
          Esse código irá carregar um jogo salvo no primeiro slot de saves. Então, a partir daqui, todo o jogo terá que ser salvo no primeiro slot. Acione uma Switch Local A. Ok, o load automático foi feito, agora em Exceção chame outro script, e cole o seguinte código:
     

    DataManager.save_game(0)


     
          Esse código salva o jogo no primeiro slot. Agora, crie um teleport para o primeiro mapa do jogo e acione também a Switch Local A. Agora, o que resta fazer é criar uma nova página e colocar a switch local A ativada na página anterior. Simples. O que você acabou de fazer é simples. Você criou um sistema para quando ele entrar no jogo, ele vai verificar se tem algum jogo salvo. Se não tiver, ele vai salvar no primeiro slot, e vai iniciar o jogo. Se tiver, ele vai carregar o jogo salvo, sem você precisar mover o dedo. Legal né? Mas, como eu disse, fica estranho quando se usa o title da engine, pois ela já tem uma opção de load. Agora, toda vez que você quiser que o jogo seja salvo, é só chamar um script e colar o último código. Com isso dá para fazer um sisteminha de CheckPoint, como se o jogo fosse estilo Call of Duty. A seguir uma imagem de como deve ter ficado o sistema:
     

    LYncWwU.jpg

          
          Partindo desse sistema, pode-se fazer outras coisinhas muito interessantes para seu projeto. Então, veja agora algumas dicas!
     

    :mrm=linha:

     

    Dicas


    Dica 1: Diretório único para save.
          Essa sem dúvida é uma dica muito legal para todos. Muitos jogos (como Call of Duty) você escolhe um diretório quando iniciado o jogo, e no meio do jogo é salvo no diretório que você tinha escolhido. Exemplo, eu escolhi iniciar o jogo no slot 4, então, quando eu estiver no meio do jogo, vai dar um save automático no slot 4, sem ter que escolher o slot. Para isso, no primeiro mapa que a gente criou, dentro da condição, mude o script que esta sendo chamado para este:
     

    index = DataManager.last_savefile_index
    DataManager.load_game(index)


     
          Ele fará a mesma coisa de dar load automaticamente, porém não vai ser no primeiro slot, mas no último slot em que o jogador salvou o jogo. E em Exceção, exclua o chamar script e chame o menu de save (na terceira aba de <>). O sistema irá verificar se tem algum save. Se tiver, ele dará load no último slot no qual o jogador salvou o jogo. Se não tiver, aparecerá o menu de save, para o jogador escolher o slot. Feito isso, para dar save automático no meio do jogo, chame este script:
     

    index = DataManager.last_savefile_index
    DataManager.save_game(index)


     
          Ele salvará no último slot salvo, ou seja, no slot que foi escolhido pelo jogador no inicio de tudo.

     
    Dica 2: Iniciando com estilo.
         Quem nunca viu aqueles jogos em que, quando o jogador entra pela primeira vez, ele nem vai para a tela de título, mas vai direto para o primeiro mapa do jogo? Sim, jovem padawan, é possível. Para isso, no evento criado, basta na condição, em vez de chamar um script, colocar para aparecer o título (claro, se for uma por eventos ou uma bem customizável). O evento verificará se tem algum save. Se tiver, a tela de título será exibida e então o jogador pode dar load por lá. Se não tiver, ele iniciará o jogo automaticamente. Simples não?


    Dica 3: Simples, porém legal.
          Essa é bem simples. A tela de título da engine, quando iniciada, verifica se tem algum save. Se não tem, o cursor Carregar fica cinza, e não é possível clicar nele. Mas se tem, ele é liberado. Dá para fazer isso, e é só copiar essa condição que criamos no tutorial. Dentro da condição, você coloque a imagem do Carregar como a dos outros cursores. Mas, em Exceção, basta colocar ela mais acinzentada.




    :mrm=linha:

     

    Considerações Finais

     
          A base do sistema foi criado por mim, porém o agora Coordenador Shiroyasha me ajudou fornecendo os códigos. Então quero agradece-lo por todos os códigos que me passou, pois sem eles nada disso seria possível. Grande abraço, e até a próxima!