1 - Criando um jogo do zero no RMVXA! Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

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

1 - Criando um jogo do zero no RMVXA!

3 participantes

Ir para baixo

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
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)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

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
Valentine
Valentine
Administrador
Administrador

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

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

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 
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)

Ir para o topo Ir para baixo

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

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos