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

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


Primeiro Jogo #1 - Movimentação em Grid e Colisões

4 participantes

Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Primeiro Jogo #1 - Movimentação em Grid e Colisões

Mensagem por dharrison Ter 09 Set 2014, 12:42

Crie seu Primeiro Jogo Completo #1
- Movimentação em Grid, Animação e Colisões -


Título: Crie seu Primeiro Jogo Completo #1 - Movimentação em Grid, Animação e Colisões.
Versão do GM: Game Maker 8.0 PRO, 8.1 PRO e também GMS:Standard
Dificuldade: Fácil
Requer Extensões: Não.
Requer DLLs: Não.
Tags: Primeiro Jogo, Top Down, Grid, Movimentação, GML, Paredes, Colisões, Importar Sprites.


Introdução

Eai pessoal, belezinha?

Hoje inicio uma série de Aulas para a criação de um game completo Top Down. Durante essas aulas abordaremos diversos assuntos importantes para o desenvolvimento de jogos desse tipo, e tentaremos recriar quase tudo que se conhece nesse gênero de jogo.

Claro que não será possível recriar tudo que existe em todos os games, mas todos os princípios serão trabalhados e certamente ao fim dessas aulas você será capaz de criar games Top Down por conta própria.

Antes de começarmos é importante que você já tenha uma noção básica sobre o Game Maker e GML, que você poderá aprender acessando essas aulas do Alex FC. Além disso, através deste tópico gracioso você poderá baixar e jogar o jogo que criaremos durante as aulas, é legal para se conhecer tudo que iremos criar (no momento da criação dessa primeira aula o jogo estava na versão 1.0, pode ser que quando você ler esse tutorial o jogo possua mais funções).


Começando...

Para começarmos, vamos Importar os Sprites para dentro do nosso novo projeto no Game Maker, baixe este arquivo e siga os passos seguintes:

1. Clique em File>Import Resources
Primeiro Jogo #1 - Movimentação em Grid e Colisões 10fq0zo

2. Selecione o local onde o arquivo primeirojogo.gmres foi salvo, clique no arquivo e selecione Abrir/Open
Primeiro Jogo #1 - Movimentação em Grid e Colisões 2ptb9g2

3. Pronto! Todos Sprites serão carregados para seu game. Estamos fazendo isso pois nosso foco é a Programação do jogo, e não seu Design, por isso estamos usando as Sprites do próprio Game Maker no projeto. Se você quiser substituir por outras sprites que possuam o mesmo tamanho (32x32) provavelmente não terá problemas, pois não precisarão ser feitos ajustes.
A Imagem é Grande! Clique para Visualizar:

Feito isso estamos prontos para a criação dos demais elementos.


Para criar Objetos, clique na Bola Azul no topo da tela.
Primeiro Jogo #1 - Movimentação em Grid e Colisões 2niyz52

Uma Janela surgirá com a propriedades do Objeto. Dê a esse primeiro Objeto o nome de obj_explo, defina o Sprite para explo_baixo, clique na caixa Solid, defina Depth para -2, defina a Mask para o sprite "mask" (Quadrado Preto). O Resultado será o seguinte.
Primeiro Jogo #1 - Movimentação em Grid e Colisões 2yy8bhg
Entendendo as Configurações:
obj_explo - nome do Objeto, usaremos esse nome como referência nos scripts, portanto é importante estar correto.
explo_baixo - sprite do explorador olhando para baixo, serve apenas para que possamos identificá-lo na Room, já que criamos um script que fará a troca de sprites. Esse campo define o sprite inicial.
Solid - define o objeto como solido, mas mesmo que ele não seja sólido as Colisões acontecem, porém algumas funções como place_free funcionam apenas com objetos sólidos.
Depth -2 - Depth é a profundidade ou "camada" na qual o objeto se encontra. Estar na camada -2 o coloca acima de todos objetos que estão em camadas maiores que -2, como -1, 0, 1, 10, 35, etc...
Mask: mask - Define o Sprite "mask" como a Máscara do Objeto. Isso significa que em Colisões e para todos os efeitos, o Explorador é um bloco de 32x32 pixels. Usar máscaras previne problemas com Colisões e permite a Movimentação em Grid.

Dúvidas? Comente Primeiro Jogo #1 - Movimentação em Grid e Colisões Konata89

Por enquanto pode dar um OK em nosso obj_explo.
Clique novamente na Bola Azul para Criar um Objeto.

Nesse novo Objeto defina o nome como obj_parede, defina o sprite como spr_parede, clique na caixa Solid, defina a Mask como o Sprite "mask", e de OK. A seguir uma imagem apenas para evitar enganos.
Primeiro Jogo #1 - Movimentação em Grid e Colisões 312xpjl

A explicação sobre esses elementos já foi dada acima.


Definindo as Variáveis do obj_explo

Agora vamos definir as variáveis do obj_explo, serão 4 variáveis, sendo que uma delas é Built-in do próprio Game Maker, isso significa que não precisamos nos preocupar em programá-la, basta definir. Acesse novamente nosso obj_explo dando um clique duplo sobre ele, a janela de propriedades se abrirá. Siga os passos:

1. Clique em Add Event > Create Event Create
2. Clique na aba Control e arraste um Piece of Code para o campo Actions
Primeiro Jogo #1 - Movimentação em Grid e Colisões Fd7syx

3. O Editor de Script do Game Maker se abrirá (já viu as aulas do Alex FC não é? bravo ). Dentro do Editor digite o código:
Código:
//Variáveis
parado=true //Define se o Explorador está parado ou andando. True=Parado, False=Andando
direcao=0 //Ele se moverá em 4 Direções, cada uma corresponderá a um número.
arma=false //O Jogador inicia a fase desarmado.
image_speed=0 //Define a velocidade da animação, essa é uma Built-in Variable do Game Maker, por isso fica colorida.

Digite exatamente como está acima, lembrando que tudo que vem depois do // é comentário e deverá ficar colorido (geralmente verde). A explicação do uso de cada variável está no próprio código.

IMPORTANTE: Esse código foi definido no Evento CREATE Event Create do Objeto, isso significa que ele Define variáveis que não existam antes, porém toda vez que o Objeto for Criado (Create né...) essas variáveis serão redefinidas, além disso o Create acontece antes mesmo da Room carregar completamente. Se seu game está dando algum bug antes de iniciar uma Room, provavelmente este erro está no Create. Tenha sempre isso em mente quando usar o Create. Exemplo: na próxima fase, mesmo se o jogador tinha pego a Arma, ele começará a fase novamente desarmado, pois arma voltará a ser 0.

4. Após isso, clique no "V" Verde para confirmar seu script.

Dessa forma definimos as Variáveis que nosso obj_explo usará.


Criando a Movimentação em GRID

A Movimentação em Grid é um tipo de movimentação de objetos que se alinha totalmente a "grade" definida. No nosso caso usaremos um grid de 32 x 32 pixels, isso significa que nosso objeto sempre está andando de 32 em 32 pixels, mesmo que soltemos a tecla, ele se moverá até estar alinhado. Este tpo de movimentação facilita a jogabilidade de Maze Games (Jogos de Labirinto, como Pac Man).

Para criar essa movimentação, clique sobre Add Event > Step Event Step e então arraste um Piece of Code para o campo Actions, igual acabamos de fazer com o Create.
O Editor se abrirá novamente, insira nele este cóigo um pouco mais complexo:
Código:
//Variaveis do Sprite e Movimento
switch keyboard_key
{
case not vk_down and not vk_right and not vk_up and not vk_left: if place_snapped(32,32){speed=0}; parado=true; break; //Parar se nenhuma direção estiver pressionada
case vk_right: if place_snapped(32,32){direction=0; speed=4}; direcao=1; parado=false; break;
case vk_up: if place_snapped(32,32){direction=90; speed=4}; direcao=2; parado=false; break;
case vk_left: if place_snapped(32,32){direction=180; speed=4}; direcao=3; parado=false; break;
case vk_down: if place_snapped(32,32){direction=270; speed=4}; direcao=0; parado=false; break;
}

Nesse caso usamos a declaração Switch para definir a movimentação, juntamente com keyboard_key (variável Built-in do Game Maker).
Não sabe usar Switch? Já falei para ver as aulas do Alex FC bravo

O primeiro caso (case) verifica se nenhuma das Setas do Teclado estão pressionadas e pára o objeto alinhando-o com a grid usando place_snapped(32,32). E também define a variável parado como verdadeiro (true).
Os demais casos fazem a movimentação do objeto, alinhando com a grid 32x32, definindo a direction que o objeto seguirá, definindo a speed como 4 e as variáveis direcao e parado de acordo com o necessário.

Não sabe usar direction? Clique Aqui e Aprenda!


Animando o Personagem

Neste game usei um padrão de animação que costumo usar todos meus jogos, sei que não é o melhor modo de fazer, mas é o jeito que me acostumei. Se quiser modificar fique a vontade Happy

Para aplicar esse script, adicione um novo Piece of Code Action Code dentro do Step Event Step do obj_explo e insira o seguinte código:
Código Enooorme:

Sim, é enorme!! affraid
Já testei essa mesma lógica dentro de um Switch e não funciona.

Bom vamos ao entendimento do código:
- a cada if direcao=n inicia uma declaração "se a variável direcao do objeto for tal..."
- o laço if parado=true{talcoisa}else{outracoisa} diz ao Game Maker que se a variável parado for true, o objeto volta a imagem 0 do sprite  (image_index=0) e pára a animação (image_speed=0), e redefine o sprite do objeto (sprite_index=tal)
- o laço if arma!=0{umasprite}else{outrasprite} faz com que nosso Explorador tenha 2 sprites diferentes: Armado e Desarmado.

Bom pessoal, se esse trecho do código ficar complicado, não se preocupem em decifrá-lo agora, apenas copie e cole pois ele é meio tenso mesmo...


Colisão Simples com a Parede

Depois daquela animação complicada, vamos a algo bem mais simples!
Para criar a colisão com a Parede, que será única colisão verdadeiro do explorador (mais informações na próxima aula Razz ), faça o seguinte:

1. Clique em Add Event > Collision Event Collision  > com o obj_parede
2. Na aba Main, selecione o botão (Drag'n'Drop) Move Fixed Action Move Fixed
3. Configure como a imagem abaixo:
Primeiro Jogo #1 - Movimentação em Grid e Colisões 6s89si

É só isso! Esse é tipo de colisão mais simples, e escolhemos usá-la por um bom motivo: porque funciona!
Não há razão para complicar algo que funciona do modo mais simples  u.u


Criando a Room de Teste

Em seguida, clique duas vezes sobre a Room0 e configure-a da seguinte maneira:
Primeiro Jogo #1 - Movimentação em Grid e Colisões Xlbej4

Salve o Projeto como Aula01.gmk e clique no Play Verde para testar. Tudo deve estar funcionando correntamente.


Fim da Aula 01

Pois é pessoal! Com isso finalizamos a Engine da Aula 01, realmente me desculpem por não dar uma boa explicação sobre a Animação do Personagem, mas é que realmente está complicado, em uma aula futura (quando provavelmente vocês estarão mais preparados) entraremos em laços de if complexos.

Obrigado por acompanhar essa aula e comente para dar uma força pro tópico!


E lembre-se:  Dúvidas? Comente!
Primeiro Jogo #1 - Movimentação em Grid e Colisões Konata89

Ir para a Próxima Aula


Última edição por dharrison em Ter 23 Set 2014, 11:48, editado 5 vez(es)
dharrison
dharrison

Games Ranking : Nota B

Notas recebidas : A - B
Data de inscrição : 04/02/2009
Reputação : 120
Número de Mensagens : 1363
Prêmios : Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty

Medalhas x 0 Tutoriais x 9 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 2.0
  • C#


Ir para o topo Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Re: Primeiro Jogo #1 - Movimentação em Grid e Colisões

Mensagem por manobrother Ter 09 Set 2014, 12:56

Caramba Dharrison tutorial ótimo vai ser muito útil para os iniciantes, e essa coisa do grid não sabia mexer e agora sei.O tutorial ficou muito bom, muito bem explicado, nota 100000!
manobrother
manobrother

Data de inscrição : 31/10/2013
Reputação : 10
Número de Mensagens : 206
Prêmios : Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Re: Primeiro Jogo #1 - Movimentação em Grid e Colisões

Mensagem por dharrison Ter 09 Set 2014, 12:58

vlw manobrother Laughing
E nem completei o tutorial ainda, tenho que ir para o trabalho agora.

Essa é apenas a parte #1, em breve abordarei outros assuntos, até mesmo a criação de um Highscore Online ;)

abraço!
dharrison
dharrison

Games Ranking : Nota B

Notas recebidas : A - B
Data de inscrição : 04/02/2009
Reputação : 120
Número de Mensagens : 1363
Prêmios : Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty

Medalhas x 0 Tutoriais x 9 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 2.0
  • C#


Ir para o topo Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Re: Primeiro Jogo #1 - Movimentação em Grid e Colisões

Mensagem por Mateus O de Andrade Ter 09 Set 2014, 13:06

dharrison escreveu:Em Construção...
Tive que ir trabalhar, a noite completo o tutorial.

Que falta de comprometimento cara....deixar as coisas incompletas por ISSO!!! lol!

Muito bacana seu tutorial cara, só pelo fato de eu ter aprendido umas coisas novas eu mal posso esperar pelo resto!!
Mateus O de Andrade
Mateus O de Andrade

Games Ranking : Nota D

Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios : Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Re: Primeiro Jogo #1 - Movimentação em Grid e Colisões

Mensagem por dharrison Ter 09 Set 2014, 23:48

Tutorial Completo - Tópico Atualizado
dharrison
dharrison

Games Ranking : Nota B

Notas recebidas : A - B
Data de inscrição : 04/02/2009
Reputação : 120
Número de Mensagens : 1363
Prêmios : Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty

Medalhas x 0 Tutoriais x 9 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 2.0
  • C#


Ir para o topo Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Re: Primeiro Jogo #1 - Movimentação em Grid e Colisões

Mensagem por fredcobain Qua 10 Set 2014, 17:33

Agora sim.
=)

Movido com louvor para a área de tutoriais aprovados.

Obrigado, Dharrison.
fredcobain
fredcobain

Games Ranking : Sem avaliações

Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios : Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty

Medalhas x 0 Tutoriais x 3 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Re: Primeiro Jogo #1 - Movimentação em Grid e Colisões

Mensagem por dharrison Sex 12 Set 2014, 09:56

Atualização:
Compatível com Game Maker Studio Standard
dharrison
dharrison

Games Ranking : Nota B

Notas recebidas : A - B
Data de inscrição : 04/02/2009
Reputação : 120
Número de Mensagens : 1363
Prêmios : Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty

Medalhas x 0 Tutoriais x 9 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 2.0
  • C#


Ir para o topo Ir para baixo

Primeiro Jogo #1 - Movimentação em Grid e Colisões Empty Re: Primeiro Jogo #1 - Movimentação em Grid e Colisões

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