Mostrando postagens com marcador Game Maker. Mostrar todas as postagens
Mostrando postagens com marcador Game Maker. Mostrar todas as postagens

terça-feira, 11 de setembro de 2012

A lógica do jogo de labirinto (Game Maker)

Esta postagem irá comentar sobre a implementação do jogo de labirinto no Game Maker que disponibilizei no blog nesta postagem:
Jogo de Labirinto no Game Maker

O foco do artigo será na lógica dos Eventos e Ações dos Objetos do jogo.

O principal Objeto é o "jogador". A imagem abaixo mostra os Sprites que o "jogador" utiliza, sendo um Sprite para cada direção.


Cada um desses Sprites possui quatro quadros de animação (subimagens), como pode ser visto no "Sprite Editor":


Os eventos do "jogador" são os seguintes:


O movimento do "jogador" é baseado nos blocos de 32x32 do labirinto. Sendo assim, as setas do teclado só irão responder quando o jogador estiver alinhado ao labirinto. A imagem abaixo mostra as ações que são executadas quando a Seta para Direita é pressionada.


A ação "Change Sprite" possui os seguintes parâmetros:


O valor "-1" no campo subimage, significa que o valor atual da subimagem não deve ser alterado para que não atrapalhe a animação do personagem.

O valor "1/3" no campo speed representa a velocidade da animação. Se o valor fosse 1 então a cada passo (step) a subimagem do sprite seria modificada. Como temos poucos quadros na animação do sprite, queremos que a subimagem seja alterada a cada 3 passos, ou seja, a velocidade de animação será 1/3. É bem mais simples representar a velocidação de animação usando frações ao invés de usar o ponto como em: "0.3333".

O evento "Alarm 0" do jogador foi criado por dois motivos. Um dos motivos é reunir em um único lugar as Ações que devem ser executadas no final do jogo, ao invés de repeti-las em diversos outros Eventos. O outro motivo é fazer com que a tela do jogo seja desenhada pelo menos uma vez após a derrota do jogador, para que imagem do jogador seja trocada antes do jogo parar.

No jogo, os Eventos que acionam o "Alarm 0" são as colisões com os objetos "monstro" ou "explosão". Ambos iniciam o "Alarm 0" com o valor de 1, para que já seja executado no próximo passo.

As ações que são executadas no "Alarm 0" são as seguintes:


Quando o jogador pressiona a barra de espaço, é colocada na tela uma instância do objeto "dinamite". No evento Create, a dinamite cria um Alarme com o valor de 100 passos. Como o jogo está rodando a 30 passsos por segundos, o tempo que irá demorar para a dinamite explodir será de 3,33 segundos. Quando o Alarme dispara, são criados 5 instâncias do objeto "explosão", sendo uma no centro e mais 4 nas posições adjacentes. A imagem abaixo mostra as ações.


Com um propósito didático criei um objeto chamado "pai_destrutivel". É um objeto bem simples que possui apenas um evento de colisão com o objeto explosão. Neste evento a instância atual é destruída. A idéia é que todos os objetos do jogo que possam ser eliminados por uma explosão (exceto o jogador) sejam filhos do objeto "pai_destrutivel", herdando todos os eventos criados no objeto "pai_destrutivel". Este conceito é chamado de "Herança" e é muito utilizado na Programação Orientada a Objetos.

Como exemplo temos o objeto "Monstro". Na propriedade "Parent" está atribuído o objeto "pai_destrutivel". A imagem abaixo mostra as propriedades do objeto "Monstro".


Quando um "Monstro" colide com um bloco, parede ou dinamite, ele precisa escolher uma nova direção para se mover. É atribuída uma nova direção para o "Monstro" e logo em seguida é verificada se a posição para onde o "Monstro" iria se mover no próximo passo está livre. Se estiver livre então o evento é encerrado com o uso da ação "Exit this Event". Caso não esteja livre, são testadas outras direções. A imagem abaixo mostra estas ações.


Estas mesmas ações são repetidas em 3 eventos: Colisão com objeto bloco; Colisão com objeto parede e Colisão com objeto dinamite. Esta é uma boa opção para converter essas ações em um script que seria apenas chamado nos 3 eventos.

O cenário do jogo é feito de uma forma bem simples. É desenhada uma cor de fundo azul e são usados os objetos parede (nas bordas) e bloco para montar o labirinto. A edição do cenário é feita com o uso da grade que foi configurada para a dimensão 32x32. Todos os objetos estão alinhados a esta grade.


terça-feira, 14 de agosto de 2012

A lógica do jogo de introdução ao Game Maker

O objetivo desta postagem é comentar sobre a implementação do jogo de introdução ao Game Maker que disponibilizei no blog nesta postagem:
Iniciando no Game Maker

Vou manter o foco deste artigo apenas na lógica dos Eventos e Ações que estão dentro dos Objetos do jogo que são apenas quatro conforme a imagem abaixo:


É importante que esteja bem claro a diferença entre os termos "Objeto" e "Instância" dentro do Game Maker.

No Game Maker, quando você define um Objeto, ele representa um modelo que será usado para gerar várias Instâncias dentro do jogo. Por exemplo, neste jogo de introdução temos um único objeto que define o "Dinheiro". Mas durante o jogo podemos observar que o Dinheiro aparece em vários locais diferentes ao mesmo tempo na tela. Cada uma dessas aparições representa uma Instância do Objeto Dinheiro. 

A lógica de um jogo feito no Game Maker é organizada na forma de Eventos e Ações. Os objetos são informados sobre os mais diversos Eventos que ocorrem durante o jogo podendo responder a certos Eventos através do uso das Ações.

Vamos começar analisando o objeto "jogador":



A imagem acima mostra as Ações que serão executados no momento da criação (Evento Create) de uma Instância do Objeto "jogador". São 3 ações, a primeira apenas inicia a música do jogo e as outras duas ações iniciam o Alame 1 com o valor 30 e o Alarme 2 com o valor 300.

Os Alarmes são Eventos que podemos utilizar para que sejam executados depois de um determinado período de tempo. Este jogo está usando o valor padrão do Game Maker de 30 passos (steps) por segundo. Este valor pode ser modificado nas propriedades da Room, aba Settings, campo Speed. Sendo assim, o Alarme 1 que contém o valor de 30 passos equivale a 1 segundo e é usado para criar uma nova Instância de Dinheiro. O Alarme 2 com o valor 300 equivale a 10 segundos e é usado para criar uma nova Instância de Pedra.

O Evento de Colisão com o Bloco pára o movimento do jogador, evitando que ele saia da área do jogo.

Os outros Eventos são relacionados ao teclado e movimentam o jogador para esquerda e para direita de acordo com a tecla pressionada. O Evento de teclado "no key" é acionado quando o jogador não pressiona nenhuma tecla.

O objeto "dinheiro" possui os seguintes Eventos:



No Evento Create, a instância do dinheiro é colocada em uma posição aleatória no topo da tela e dentro da área do jogo. Após isso é definido seu movimento que consiste apenas em ir para baixo com velocidade 6.

No Evento de colisão com o jogador, um som é tocado para indicar que o jogador coletou o dinheiro, depois a pontuação do jogador aumenta em 10 pontos e então esta instância atual do dinheiro é eliminada.

O último Evento do dinheiro é o "Outside Room" que é acionado quando a instância sai da tela. A única ação que é executada é a que elimina a instância do dinheiro.

O objeto "pedra" possui os seguintes Eventos:



Estes Eventos possuem Ações bem simples. Vou comentar apenas sobre o Evento de colisão com o jogador. Neste Evento a música do jogo é parada e um som indicando a Derrota é tocado, após isso é exibida uma mensagem de "Fim de Jogo" e também a Tabela de Pontos. Quando o jogador fechar a Tabela de Pontos o jogo será reiniciado.

O objeto "bloco" não possui Eventos.

sexta-feira, 3 de junho de 2011

Jogo feito com Game Maker Language

Refiz o meu jogo de introdução no Game Maker, só que agora usando apenas GML e scripts. Ele está disponível neste arquivo: gm030611.zip

O arquivo de edição está disponível junto com o jogo. Ele pode ser aberto no Game Maker para ver como foi feito.

quarta-feira, 25 de maio de 2011

Jogo de Plataforma no Game Maker

Fiz um jogo de plataforma no Game Maker que está disponível neste arquivo: gm250511.zip

O arquivo de edição está disponível junto com o jogo. Ele pode ser aberto no Game Maker para ver como foi feito.

quarta-feira, 18 de maio de 2011

Jogo de Nave no Game Maker

Fiz um jogo de nave no Game Maker que está disponível neste arquivo: gm180511.zip

O arquivo de edição está disponível junto com o jogo. Ele pode ser aberto no Game Maker para ver como foi feito.

quarta-feira, 11 de maio de 2011

Jogo de Labirinto no Game Maker

Fiz um jogo de labirinto no Game Maker que está disponível neste arquivo: gm110511.zip

O arquivo de edição está disponível junto com o jogo. Ele pode ser aberto no Game Maker para ver como foi feito.

quarta-feira, 4 de maio de 2011

Iniciando no Game Maker

O Game Maker é um excelente editor que simplifica bastante a criação de jogos em 2D. É uma ótima opção para quem quer começar a fazer algo com jogos e não sabe programar.

Eu fiz um jogo simples no Game Maker que está disponível neste arquivo: gm040511.zip

O arquivo de edição está disponível junto com o jogo. Ele pode ser aberto no Game Maker para ver como foi feito.