Checkpoints são locais onde o jogador pode renascer caso tenha morrido, assim ele não perderá o progresso que fez no jogo até aquele ponto.
Nossos checkpoints serão representados por tochas que podem ser acendidas ou apagadas. Uma tocha acendida indica que o jogador já passou por aquele checkpoint e uma tocha apagada indica que ainda não passou. Vamos dar a ideia de que o jogador está acendendo as tochas ao tocar nelas.
Por fim, quando o jogador morrer, deverá reaparecer na última tocha que acendeu.

Vamos começar pela parte visual, precisaremos de três arquivos, dois deles serão objetos do tipo Sprite (a tocha e a luz ao redor dela) e um dele será um objeto do tipo Particles (o fogo)
Vamos adicionar a tocha, adicione um novo objeto do tipo Sprite e coloque a imagem que está no arquivo Scenario/torch-sheet0.png 
Nós iremos fazer partículas que representam fogo aparecerem no topo da tocha, para isso usaremos o ponto de origem, por isso, precisamos deslocá-lo para o topo da imagem, A forma mais simples de fazer isso é indo no menu de edição dos pontos, clicar com o botão direito do moude em Origin e escolhendo a opção Quick Assign > Top

Defina o nome desse objeto como Torch
Vamos adicionar uma variável de instância ligada a cada tocha, ela indicará se a tocha está acesa ou apagada, seu nome será Activated

Clique na opção Add new instance variable, coloque o nome para a variável e defina o tipo como Boolean

Agora vamos adicionar um outro objeto do tipo Sprite para fazer o efeito de iluminação, use a imagem em Visual Effects\light-sheet0.png
Defina o nome desse objeto como LightEffect
Nela vamos aplicar alguns comportamentos e efeitos:
Os comportamentos Sine e Fade, o primeiro dará uma ondulação na quantidade de luz e o segundo tornará possível que façamos um efeito de fade-in quando a luz aparecer

O efeito Dodge para mesclar a imagem com o fundo do jogo



Nas propriedades, as seguintes alterações devem ser feitas
No comportamento Sine:

No comportamento Fade:

Agora adicione um novo objeto do tipo Particles, ele deverá se chamar FireParticles. Encontre a imagem para o objeto em Particles/col_fire.png 
Vá nas propriedades dele e coloque o seguinte:




Apenas a imagem da tocha deve ser mostrada no jogo, as outras devem estar no layout mas fora da área que o usuário pode ver.
Vamos fazer a parte da programação. Primeiramente precisamos criar duas variáveis globais do tipo number, CheckpointX e CheckpointY elas armazenarão a posição X,Y do último checkpoint que o jogador ativou permitindo que ele renasça lá caso morra.


Agora faremos com que quando o jogador tocar em uma tocha que não foi ativada ainda ela seja marcada como novo checkpoint e comece a queimar.

Esse código deve fazer:
Quando o jogador encostar em uma tocha e essa tocha não estiver ativada:
CheckpointX para a posição X da tocha que o jogador acabou de encostarCheckpointY para a posição Y da tocha que o jogador acabou de encostarQuando você fizer isso e executar verá que, no jogo, as tochas que o jogador tocar se acenderão. Mas temos um problema, onde o jogador deve renascer caso ele morra antes de tocar em qualquer tocha? Vamos fazer com que a tocha mais próxima dele seja o checkpoint assim que o jogo começar, então lembre-se de colocar uma tocha ao lado dele no seu cenário, caso contrário o jogador pode se matar no começo do jogo para aparecer num checkpoint distante.

As condições são:
Quando o layout começar, pegue o objeto Torch mais próximo da posição X,Y do jogador
O código a executar é exatamente o mesmo do bloco anterior, você pode copiar e colar. Você perceberá que a tocha mais próxima do jogador será acesa sozinha ao iniciar o jogo.
Agora precisamos introduzir alguma forma do jogador morrer para testarmos se os checkpoints funcionam, faremos com que o jogador morra caso caia fora do cenário.
Vamos adicionar um efeito visual quando o jogador renascer, precisamos criar um novo objeto do tipo Particles com a imagem Particles/torch_fireyellow.png
com o nome RespawnParticles
As propriedades devem ser as seguintes:

O programa deverá ser o seguinte:

Quando o jogador estiver fora do layout
RespawnParticles aonde o jogador está
Note que o personagem deve morrer quando cair para fora do layout, isso inclui
Por isso, é necessário que você impeça ele de pular muito alto adicionando um teto ao jogo, caso contrário ele pode morrer por pular para fora do cenário. Uma outra alternativa é deixar o fim do jogo bem alto de forma que se o jogador escalar no ponto mais alto do jogo e pular, ainda não alcançará o fim do layout
Dica:
Clique na parte cinza (fora de qualquer objeto), na aba de propriedades serão mostradas as propriedades do projeto como um todo, marque a opção Show Grid, Snap to Grid e defina Grid size como 16x16 (ou o tamanho dependendo do projeto, normalmente 16x16, 32x32, 64x64 ou 128x128)

Caso ache interessante, pode ativar a opção Show Collision Polygons que mostrará os polígonos de colisão dos objetos no jogo.
Agora que temos vários dos itens que irão compor o jogo, podemos começar a pensar e construir um cenário em definitivo, algumas dicas são:
Tenha um esboço feito de antemão, com ele tente deduzir
Quando for pintar o cenário, comece do centro esquerdo


Para redimensionar, clique na parte cinza do layout (fora de qualquer objeto), as propriedades do projeto em si aparecerão na lateral.

Mude o atributo Size dependendo do tamanho do cenário que você pensou, lembre-se de que cenários muito grandes deixarão o jogo mais lento.
Vamos começar a criar um inimigo simples que patrulhará uma área. Crie um novo objeto do tipo Sprite e crie uma animação com as imagens em Enemy\PatrolSlimePatrol\



. O nome desse objeto deve ser Enemy.
Crie a caixa de colisão para ele e aplique a todos os quadros da animação

Dê um nome para a animação, defina a velocidade e marque a caixa de loop

Você precisará adicionar as seguintes variáveis de instância

A variável Direction será utilizada para definir a direção que o inimigo deve andar e a variável Hitpoints guardará a vida do inimigo.
Direction deverá receber o número 0 ou o número 1, Hitpoints deverá receber quantos pontos de vida o inimigo vai ter contando com a força do ataque do jogador. Como quero que o inimigo morra com 3 ataques de uma arma mediana, defini este valor como 9, cada ataque do jogador tirará 3 pontos de vida, assim, serão precisos 3 ataques.
Agora adicione mais um objeto do tipo Sprite e pinte-o de vermelho ou qualquer cor que se destaque.

Dê o nome de EnemyFence. Esse objeto definirá a área que um inimigo deve fazer sua patrulha, elas ficarão invisíveis no jogo e quando um inimigo tocar em uma delas irá passar a patrulhar no sentido oposto.

Algumas configurações no sprite Enemy devem ser feitas, adicione o comportamento Platform e defina as seguintes propriedades

Não se esqueça de desmarcar a opção Default Controls, assim será possível controlar o movimento do inimigo pelo programa e não com o teclado.
Coloque as barreiras ao redor da área de patrulha do inimigo e vamos começar a configurar a lógica dela. Crie estes blocos:

Caso a variável Direction seja 0 o inimigo andará para a Direita, caso seja 0 andará para a Esquerda. Precisamos fazer com que se o inimigo tocar na barreira o número em Direction mude de 0 para 1 ou de 1 para 0.
Existem duas formas de fazer isso, essa é a mais simples de entender, mas gasta mais eventos.

Quando o inimigo colidir com a barreira:
x*Se o conteúdo em `Direction` for `0`*:*Mude o valor em `Direction` para `1`**Caso contrário**Mude o valor em `Direction` para `0`*
Para adicionar a condição e o else você precisará ir em Add new > Sub event
Para adicionar a condição e o else você precisará ir em Add new > Sub event
Para adicionar a condição e o else você precisará ir em Add new > Sub event

Dessa forma o inimigo patrulhará entre as duas cercas. Se você quiser poupar a quantidade de eventos pode fazer o seguinte:

Na fórmula (Enemy.Direction + 1) % 2 estamos usando algo chamado operação modular não é fundamental que você a compreenda mas saiba que ela causa o mesmo resultado que a operação anterior.
Caso queira saber mais sobre o operador módulo veja:
Khan Academy - Aritmética modular
TI Expert - O que é a operação módulo?