[Autor: João Neto ]
Na 1º lição de GM RPG aprendemos a criar um movimento com Clique de mouse, no estilo dos jogos atuais, porém usando um char Isométrico.
Muitas pessoas não tem muita noção e acham que um jogo Isométrico é um jogo na diagonal.
Isto é verdade em relação aos gráficos, mas o que realmente muda é a proporção do movimento.
Num jogo isométrico, o movimento na horizontal é sempre 2 vezes proporcional ao movimento na vertical, formando assim a idéia de um losango.
Todo e qualquer movimento ou cenário nesse tipo de jogo deve seguir este padrão.
Na aula passada eu disse que aprenderíamos sobre movimento de Mobs(Inimigos). A sigla Mob é muito usada hoje nos jogos Online, talvez pelo tamanho da palavra.
Você já usou Paths no GM? se não, hoje será uma boa chance de ver como funciona e como criar e modificar paths usando GML.
O que faremos será criar um Path, com GML, e fazer nosso Mob seguir o mesmo.
Pra quem já fez jogos em RPGMaker sabe que rafemos o mesmo tipo de movimento quando se cria um evento e coloca-se nele uma rota-pré-definida.
O uso de Paths nesse caso não precisa se limitar aos Mobs, ele pode ser usado para NPCs e objetos de cenário.
Vamos começar.
Antes de mais nada um detalhe: estaremos usando a mesma idéia de Sprites da aula passada. Eu ainda estou desenvolvendo a ferramenta de criação, assim que ela estiver pronta eu disponibilizarei.
Enquanto isso, use a imagem abaixo para nosso exemplo de Mob:
Crie um sprite, chame-o de Zumbi. Repita os passos de criação do Strip, como na aula passada, lembrando de deixar o ultimo quadro branco.
Vamos exercitar a criação de um Path? Crie um novo Path na pasta, e vá clicando na tela e movendo os pontos até ficarem assim:
Observe que fizemos uma elípse. na verdade esse exercício de Paths é apenas para que você saiba depois criar seus próprios paths.
Não iremos usar este que criamos. Porque? Simples: O Path funciona na tela exatamente aonde você o criou. Se tentarmos mudar as coordenadas dele em tempo de execução, TODOS os objetos que compartilharem o path irão para aquela posição.
Crie um script, chame-o de elipse_path, e adione nele o seguinte código:
A idéia é que, para cada Tipo de Path que você crie, haja um script de criação para o mesmo, de forma que vários objetos poderão compartinhar do tipo de movimento, sem compartilhar o mesmo Path e consequentemente havendo falhas no seu jogo.
Para já vermos a bagaça funcionando de várias formas, crie outro script, nomeie-o de circulo_path e adicione o seguinte código:
Crie um objeto, chame-o de MOB, coloque o Sprite do Zumbi. Adicione os Eventos Create e Draw. Agora em cada um coloque assim:
Evento Create:
Bem, vou explicar:
No evento Create, declaramos uma variável ind, que recebe o path criado pelo script circulo_path. Setamosas variáveis de movimento e de imagem, e criamos uma old_dir. Esta variável nos ajudará a saber se o mob mudou de direção, para podermos mudar também o seu sprite.
No evento Draw, encontramos a direção do objeto e usamos uma divisão por 45 para obtermos 8 direções. Fazemos uma correção nos cálculos, pois precisamos do valor entre 1 e 7, Setamos a direção. Validamos se a direção mudou e se sim, mudamos novamente o seu valor, e no final fazemos a mesma jogada que foi feita com o personagem na aula passada.
Por fim desenhamos o Sprite.
Para testar, crie uma Room, adicione vários Zumbis em lugares diferentes e rode.
Se todos os passos foram seguidos, seu mob vai andar lindo num movimento circular excelente. Para mudar o movimento, teste o script elipse_path no lugar do circulo.
Agora como execício, crie seus próprios Paths. Para ter certeza do desenho que eles descreverão, crie primeiro um path atoa e desenhe nele. Anote os valores dos pontos e use-os como nos scripts que criamos.
Algumas pessoas sempre põem dificuldade em criar, por ser mais fácil pegar pronto na Net. Eu discordo, e provo que com o Game Maker é possível fazer qualquer tipo de jogo, basta que você seja criativo e esforçado. Ninguém precisa saber tudo, até eu mesmo pesquiso as vezes para encontrar modelos de engines e adaptá-los à minha necessidade.
Na Próxima lição: Menus Flutuantes estilo Ragnarok. Até lá.
Na 1º lição de GM RPG aprendemos a criar um movimento com Clique de mouse, no estilo dos jogos atuais, porém usando um char Isométrico.
Muitas pessoas não tem muita noção e acham que um jogo Isométrico é um jogo na diagonal.
Isto é verdade em relação aos gráficos, mas o que realmente muda é a proporção do movimento.
Num jogo isométrico, o movimento na horizontal é sempre 2 vezes proporcional ao movimento na vertical, formando assim a idéia de um losango.
Todo e qualquer movimento ou cenário nesse tipo de jogo deve seguir este padrão.
Na aula passada eu disse que aprenderíamos sobre movimento de Mobs(Inimigos). A sigla Mob é muito usada hoje nos jogos Online, talvez pelo tamanho da palavra.
Você já usou Paths no GM? se não, hoje será uma boa chance de ver como funciona e como criar e modificar paths usando GML.
O que faremos será criar um Path, com GML, e fazer nosso Mob seguir o mesmo.
Pra quem já fez jogos em RPGMaker sabe que rafemos o mesmo tipo de movimento quando se cria um evento e coloca-se nele uma rota-pré-definida.
O uso de Paths nesse caso não precisa se limitar aos Mobs, ele pode ser usado para NPCs e objetos de cenário.
Vamos começar.
Antes de mais nada um detalhe: estaremos usando a mesma idéia de Sprites da aula passada. Eu ainda estou desenvolvendo a ferramenta de criação, assim que ela estiver pronta eu disponibilizarei.
Enquanto isso, use a imagem abaixo para nosso exemplo de Mob:
Crie um sprite, chame-o de Zumbi. Repita os passos de criação do Strip, como na aula passada, lembrando de deixar o ultimo quadro branco.
Vamos exercitar a criação de um Path? Crie um novo Path na pasta, e vá clicando na tela e movendo os pontos até ficarem assim:
Observe que fizemos uma elípse. na verdade esse exercício de Paths é apenas para que você saiba depois criar seus próprios paths.
Não iremos usar este que criamos. Porque? Simples: O Path funciona na tela exatamente aonde você o criou. Se tentarmos mudar as coordenadas dele em tempo de execução, TODOS os objetos que compartilharem o path irão para aquela posição.
Crie um script, chame-o de elipse_path, e adione nele o seguinte código:
- Código:
X = argument0;
Y = argument1;
ind = path_add();
path_set_kind(ind,argument2) //0 - Reta, 1 = Curva
path_add_point(ind,X,Y+32,100);
path_add_point(ind,X,Y+96,100);
path_add_point(ind,X+80,Y+128,100);
path_add_point(ind,X+144,Y+128,100);
path_add_point(ind,X+224,Y+96,100);
path_add_point(ind,X+224,Y+32,100);
path_add_point(ind,X+144,Y,100);
path_add_point(ind,X+80,Y,100);
return ind;
A idéia é que, para cada Tipo de Path que você crie, haja um script de criação para o mesmo, de forma que vários objetos poderão compartinhar do tipo de movimento, sem compartilhar o mesmo Path e consequentemente havendo falhas no seu jogo.
Para já vermos a bagaça funcionando de várias formas, crie outro script, nomeie-o de circulo_path e adicione o seguinte código:
- Código:
X = argument0;
Y = argument1;
ind = path_add();
path_set_kind(ind,argument2)//0 - Reta, 1 = Curva
path_add_point(ind,X,Y+64,100);
path_add_point(ind,X,Y+128,100);
path_add_point(ind,X+64,Y+192,100);
path_add_point(ind,X+128,Y+192,100);
path_add_point(ind,X+192,Y+128,100);
path_add_point(ind,X+192,Y+64,100);
path_add_point(ind,X+128,Y,100);
path_add_point(ind,X+64,Y,100);
return ind;
Crie um objeto, chame-o de MOB, coloque o Sprite do Zumbi. Adicione os Eventos Create e Draw. Agora em cada um coloque assim:
Evento Create:
- Código:
ind = circulo_path(x,y,1);
path_start(ind,2,1,true);
speed = 1.0;
image_speed=0.3;
image_index=6;
old_dir = 1;
- Código:
facing = round(direction / 45);
if facing == 8 then facing = 0;
direcao = (facing * 4);
if old_dir == 1 {
old_dir = direcao;
image_index = direcao;
}
if (old_dir != direcao){
old_dir = direcao;
image_index = direcao;
}
if (round(image_index) >= direcao + 4) {image_index = direcao;}
draw_sprite(sprite_index,image_index,x,y);
Bem, vou explicar:
No evento Create, declaramos uma variável ind, que recebe o path criado pelo script circulo_path. Setamosas variáveis de movimento e de imagem, e criamos uma old_dir. Esta variável nos ajudará a saber se o mob mudou de direção, para podermos mudar também o seu sprite.
No evento Draw, encontramos a direção do objeto e usamos uma divisão por 45 para obtermos 8 direções. Fazemos uma correção nos cálculos, pois precisamos do valor entre 1 e 7, Setamos a direção. Validamos se a direção mudou e se sim, mudamos novamente o seu valor, e no final fazemos a mesma jogada que foi feita com o personagem na aula passada.
Por fim desenhamos o Sprite.
Para testar, crie uma Room, adicione vários Zumbis em lugares diferentes e rode.
Se todos os passos foram seguidos, seu mob vai andar lindo num movimento circular excelente. Para mudar o movimento, teste o script elipse_path no lugar do circulo.
Agora como execício, crie seus próprios Paths. Para ter certeza do desenho que eles descreverão, crie primeiro um path atoa e desenhe nele. Anote os valores dos pontos e use-os como nos scripts que criamos.
Algumas pessoas sempre põem dificuldade em criar, por ser mais fácil pegar pronto na Net. Eu discordo, e provo que com o Game Maker é possível fazer qualquer tipo de jogo, basta que você seja criativo e esforçado. Ninguém precisa saber tudo, até eu mesmo pesquiso as vezes para encontrar modelos de engines e adaptá-los à minha necessidade.
Na Próxima lição: Menus Flutuantes estilo Ragnarok. Até lá.