Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


3 participantes

    1 - Criando um jogo do zero no RMVXA!

    Paulo Soreto
    Paulo Soreto
    Lenda
    Lenda


    Mensagens : 1980
    Créditos : 367

    Ficha do personagem
    Nível: 1
    Experiência:
    1 - Criando um jogo do zero no RMVXA! Left_bar_bleue0/01 - Criando um jogo do zero no RMVXA! Empty_bar_bleue  (0/0)
    Vida:
    1 - Criando um jogo do zero no RMVXA! Left_bar_bleue30/301 - Criando um jogo do zero no RMVXA! Empty_bar_bleue  (30/30)

    1 - Criando um jogo do zero no RMVXA! Empty 1 - Criando um jogo do zero no RMVXA!

    Mensagem por Paulo Soreto Qua Nov 22, 2017 6:46 pm

    Quando comecei a programar eu tentei muito desenvolver um jogo estilo tower defense mas infelizmente não tinha conhecimento suficiente na época. Mas hoje, alguns bons anos depois essa ideia voltou a mente e me pareceu uma boa oportunidade pra trazer pra Aldeia um tutorial um pouco diferente.

    Vamos criar um novo projeto no RPG Maker VX Ace e apagar todos os scripts dele com exceção do main, deve ficar mais ou menos assim:
    1 - Criando um jogo do zero no RMVXA! Xy3OzJ6
    Se executarmos o jogo agora vai dar um erro por que dentro do main é usado o SceneManager (que nós acabamos de apagar :o). O método chamado é o SceneManager.run, vamo dar uma olhada no que ele faz para podermos fazer o mesmo.
    1 - Criando um jogo do zero no RMVXA! KUxHmGnFTamhJnTNv_kkMw
    Apenas olhando por cima da pra entender um pouco do que cada linha faz, os nomes são bem explicativos. Na primeira linha o módulo responsável por gerenciar o "banco de dados" do jogo é inicializada. O que nos importa agora são as linhas 22 e 23, nelas podemos ver que é criada uma instância da 'scene' inicial e após isso ele entra em um loop que se encerra somente quando a variável que guarda essa scene for nil. Ou seja, enquanto a scene existir o método main dentro dela vai ser chamado.

    Nós precisamos dar uma recapitulada nesses pontos básicos do jogo por que precisamos trabalhar de modo semelhante pra criar esse tower defense! Um detalhe, para consultar os scripts recomendo criar um novo projeto e deixar ele sem alteração nenhuma. Dar uma olhada na Ajuda do RPG Maker também é muito útil já que todo o RGSS3 está documentado.

    Enfim, vamos agora para o método main dentro da classe Scene_Base. Nosso objetivo, para quem ainda não entendeu, é chegar ao ciclo principal de atualização do jogo.
    1 - Criando um jogo do zero no RMVXA! GXq9Tt8
    O método update entra em loop, logo é ele que nós buscamos. Se formos nele veremos que chama o método update_basic, que é onde iremos parar.
    1 - Criando um jogo do zero no RMVXA! PnwHYcH
    Nota-se que os módulos Graphics e Input são atualizados a cada frame. Vamos então adicionar eles ao nosso projeto:
    1 - Criando um jogo do zero no RMVXA! RQrjD27
    Agora se testarmos o jogo veremos apenas uma tela preta. Nós vamos então criar uma classe chamada Title, que será a nossa tela de título. Lembrando que todos os scripts que adicionarmos no jogo deve ficar acima do main.

    Precisamos que essa classe Title mantenha o ciclo de atualizações do jogo, então vamos copiar as linhas 8 a 11 do main e vamos criar um método chamado main dentro da classe Title, onde colocaremos o código copiado. Agora que já temos o main, falta instanciar essa classe lá no main do jogo (confuso -.Glad. Vamos ao script Main, caso não tenha entendido bem o que precisamos fazer é só analisar o print.
    1 - Criando um jogo do zero no RMVXA! F2rTyiY
    Mais limpo, certo? Mas não funciona kkkkkk
    Precisamos chamar o método main dentro da classe Title para que funcione e o jogo permaneça aberto. Nós precisamos então criar um método construtor para a classe Title e dentro dele podemos chamas o main. Método construtor é um método que é chamado automaticamente ao instanciar uma classe. Em ruby o método construtor é o initialize, quando usamos: Classe.new o método initialize dentro dessa classe é chamado.
    A classe Title fica da seguinte maneira:
    1 - Criando um jogo do zero no RMVXA! 3fczik3
    Agora podemos executar o jogo que ele vai permanecer aberto. Mas meio que foda-se a tela de título por enquanto, vamos focar logo no jogo em si. Criaremos uma classe chamada Map, podem dar Ctrl + C na Title e Ctrl + V depois já que a estrutura é a mesma, mudando apenas o nome da classe.

    Espera um pouco! Se formos copiar esse códigos repetidos toda vez que formos criar uma tela diferente dentro do jogo mais pra frente vai dar um puta trabalhar fazer isso. Vamos usar um pouco dos recursos que o Ruby nos oferece para lidar com essa situação de maneira mais inteligente.

    Precisamos então criar uma classe chamas Base pois ela servirá como base para as nossas telas. O mesmo processo de novo (ctrl + c....). Agora nossa lista de scripts deve estar assim:
    1 - Criando um jogo do zero no RMVXA! SkoKyxz
    Todos os 3 primeiros scripts são iguais com exceção apenas do nome. Vamos ao script Base agora, precisamos criar um método chamado start, que será chamado antes do main, criaremos também um método chamado terminate que chamaremos após o main, se ficou um pouco confuso:
    1 - Criando um jogo do zero no RMVXA! LheloWU
    Seu código deve ser mais ou menos como esse dai de cima. Agora vamos para o script Title (leiam com atenção, farão o mesmo com a classe Map), precisamos fazer com que ele herde os método da classe Base, para fazer isso em ruby precisamos definir da seguinte forma: class Title < Base. Agora que herdamos todos os métodos da classe base, ao invés de reescrever o main e o initialize dentro da classe Title vamos apenas deixar os métodos start e terminate lá sem nenhum código dentro.
    1 - Criando um jogo do zero no RMVXA! KNg1MDP
    O nosso projeto continua funcionando perfeitamente após essas mudanças, caso tenha dado algum erro ai reveja os passos anteriores. Lembrando que devem fazer o mesmo com a classe Map!

    Vamos dar os primeiros passos dentro da classe Map, pelo menos desenhar um chão pra diferenciar desse fundo preto.
    Dentro da classe Map vamos criar um método chamado create_ground. Esse método criará uma instância da classe Sprite e armazenará o chão. No momento ele será apenas um fundo verde.

    1 - Criando um jogo do zero no RMVXA! 6JAXfph
    Precisamos também desenhar o mapa, certo? Criaremos um método chamado draw_ground logo abaixo do anterior. Nele nós limparemos o bitmap e desenharemos um fundo verde. Se tiverem alguma noção de inglês compreender o código não deve ser complicado, pra quem não entende muito bem:
    13 - Variável chamada width que armazena o valor da largura do bitmap
    14 - Variável chamada height que armazena o valor da altura do bitmap
    15 - Variável chamada  color que armazena uma cor no formato RGB
    17 - Limpa o bitmap
    18 - Preenche uma área dentro do bitmap (x: 0, y: 0, largura: width, altura: height) com uma cor.
    1 - Criando um jogo do zero no RMVXA! OP2pcGf
    Esse método deve ser chamado no final do create_ground e o método create_ground deve ser chamado dentro do método start. O código final ficou da seguinte forma:
    1 - Criando um jogo do zero no RMVXA! MCspTND
    Um pequeno erro de digitação que não será corrigido no print por que to com preguiça, o nome do método é draw_ground, não groud.

    Se testarmos o jogo agora não continuaremos naquela tela preta infeliz. Isso por que não chegamos a criar uma instância da classe Map então devemos fazer isso dentro da classe Title.
    1 - Criando um jogo do zero no RMVXA! PJZFpbm
    Testando agora obteremos o seguinte resultado:
    1 - Criando um jogo do zero no RMVXA! T2XYc2w


    _________________
    1 - Criando um jogo do zero no RMVXA! FwYnoXI
    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : 1 - Criando um jogo do zero no RMVXA! ZgLkiRU
    Mensagens : 5336
    Créditos : 1163

    1 - Criando um jogo do zero no RMVXA! Empty Re: 1 - Criando um jogo do zero no RMVXA!

    Mensagem por Valentine Qua Nov 22, 2017 6:53 pm

    Show, em

    + 1 crédito
    OFWGKTA
    OFWGKTA
    Experiente
    Experiente


    Mensagens : 408
    Créditos : 27

    Ficha do personagem
    Nível: 1
    Experiência:
    1 - Criando um jogo do zero no RMVXA! Left_bar_bleue5/501 - Criando um jogo do zero no RMVXA! Empty_bar_bleue  (5/50)
    Vida:
    1 - Criando um jogo do zero no RMVXA! Left_bar_bleue30/301 - Criando um jogo do zero no RMVXA! Empty_bar_bleue  (30/30)

    1 - Criando um jogo do zero no RMVXA! Empty Re: 1 - Criando um jogo do zero no RMVXA!

    Mensagem por OFWGKTA Qui Nov 23, 2017 5:05 pm

    Bom


    _________________
    1 - Criando um jogo do zero no RMVXA! 112898
    EVANGELION 

    Conteúdo patrocinado


    1 - Criando um jogo do zero no RMVXA! Empty Re: 1 - Criando um jogo do zero no RMVXA!

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui maio 09, 2024 10:56 pm