2022-05-07 – Sistema de Colisões Píxel-a-Píxel no meu Game Engine, em C++, e vídeo do meu Shooter de testes…

Aqui mostro como funciona a pixel-level detection no meu game engine.

Como não tenho tido tempo nenhum ultimamente, mostrei isto que ainda não tinha mostrado antes.

E aproveito para dizer que usei para as naves e torres inimigas, sprites fornecidas por um amigo Vitor Bonifácio que é artista na área, e desenhou estas naves, e as torres são naves inimigas todas contorcidas para fazer de torres hehehe.

É um sistema de testes que me mostra sempre todos os píxeis que estão a colidir entre dois sprites, ou seja, por exemplo, entre a nossa nave e uma nave ou aparelho inimigo.

Digamos que é uma intersecção de píxeis entre sprites.

O meu trading system está preparado para detectar automaticamente quais são os píxeis importantes de cada imagem, e o que não importa, e por isso podem ver que ele coloca com brilho apenas as partes que são comuns a ambos, não é algo mal feito como os sistemas de colisões de rectângulos usados por alguns jogos, em especial os antigos.

Aqui ou há mesmo nem que seja um único píxel a colidir, ou não há colisão!

Não há margem para falhas, tal como eu gosto.

O vídeo está é com 2 ou 3 FPS para o GIF animado ficar pequeno, daí parece horrível, mas ele tem centenas de FPS no jogo, é muito fluído, isto aqui é só para poupar espaço.

Se quiserem ver como é ao vivo, sem atrasos, e com tiros e sons e música, mostro o vídeo abaixo, que mostra o que aconteceu na semana passada, que devido a um bug, os inimigos disparavam na direcção contrária (contra eles mesmos) e se matavam, chamei-lhe de “suicidal enemies”, e relembro sempre que os sons dos tiros fiz eu com a boca hehehe:

Claro que neste caso tive de desabilitar as colisões, ou seja, se há colisões, não perdemos a vida, simplesmente vemos as mesmas.

Eu vou mais tarde criar um sistema, com tempo, que me permite calcular quantos píxeis colidem, e assim, se uma bala passar a raspar a nave, ao invés de lhe tirar uns 100%, se raspou, ou melhor, se só colidiu 10% da bala, só tiraria 10%, por exemplo.

Com isto, poderei ter danos mínimos se foi a raspar, ou danos totais.

Será um sistema de colisões perfeito, para um jogo perfeito.

O primeiro jogo que vou criar como remake de plataformas será o Batman the Movie, mas o primeiro remake que criarei no estilo de Shoot’Em Up será o do R-Type, e já podem ser pelo sprite da nossa nave, que vem do jogo R-Type (é desenhada por um autor na Internet cujo nome de momento não me lembro).

De qualquer das formas já vêem o sistema de colisões píxel-a-píxel, perfeito, sem falhas, só falta depois fazer o cálculo de quanta percentagem do embate existe, cálculo de danos, etc, para retirar os danos à nossa nave.

Para não me cansar, vou deixar o jogo de plataformas de lado uns tempos e focar-me no shooter, neste de naves, ao desenvolver o meu Game Engine. 🙂

Um dia quando tiver mais tempo partilho novidades!

Hasta!

2022-05-07.

Partilhado no LinkedIn em 2022-05-09:

«Só para mostrar como funciona a detecção de colisões a nível de píxeis no meu game engine, que está a ser desenvolvido do 0 em C++.

Tenho andado super ocupado ultimamente, por isso não partilho nada de novo, mas como não tinha partilhado isto antes, fica aqui isto, é o Shoot’Em Up de testes que criei para o meu game engine, estilo R-Type.

Criarei um remake do R-Type um dia talvez.

Esta detecção a nível de píxeis faz com que a nave sinta se levou com uma bala inteira ou só de raspão, e quanta % de dano retirar, etc.

A imagem acima está lenta porque é um gif com poucos frames para ser pequeno.

No site abaixo podem ver como é com sons (criados por mim em voz) e movimento fluído.

2022-05-09.»

In: https://www.linkedin.com/posts/goncalopt_s%C3%B3-para-mostrar-como-funciona-a-detec%C3%A7%C3%A3o-activity-6929493886817951744-dT2o?utm_source=linkedin_share&utm_medium=member_desktop_web

2022-05-07 - Sistema de Colisões Píxel-a-Píxel no meu Game Engine, em C++, e vídeo do meu Shooter de testes...
2022-05-07 – Sistema de Colisões Píxel-a-Píxel no meu Game Engine, em C++, e vídeo do meu Shooter de testes…

Leave a Reply

Your email address will not be published. Required fields are marked *

RSS
Follow by Email
LinkedIn
Share
WhatsApp