A colisão usada em Contra
Anos atrás, o programador Allan Blomquist produziu uma matéria falando de pontos-chave do código do Contra de NES. Já fazia um tempão que tinha guardado o link dessa matéria, mas ainda não tinha analisado ela muito bem, só ontem é que fui ver certinho. O sistema de colisão usado nesse game foi uma das revelações mais interessantes.
O hitbox retangular fica nos inimigos e nos projéteis, não no protagonista. O que tem no protagonista é só um ponto. O acerto é detectado, obviamente, quando o hitbox dos inimigos sobrepõe o ponto do protagonista. Notem que o hitbox muda de acordo com o estado do protagonista: de pé, agachado ou pulando.
Deem uma olhada em outras curiosidades na matéria:
Contra
Platform:
NES
3226
Players
36
Check-ins
Eles não falaram os motivos no texto, mas imagino que um dos motivos (o principal, provavelmente) é que a verificação de colisão entre um ponto e uma área é mais rápida do que duas áreas.
Verificar colisão entre um ponto e círculo é o mais rápido de todos (ve se a distância do ponto é menor ou igual o raio do circulo), mas no NES usavam mais retângulos mesmo (que é mais rápido do que ver colisão entre dois retangulos). Nos computadores de hoje a diferença é imperceptivel, mas nos antigos era importante economizar recursos.
E usar o hitbox do jogador posicionado no inimigo também economiza recursos pois se fosse o contrário pra cada inimigo precisaria ter 3 colisões diferentes dependendo do estado do jogador (em pé, deitado ou pulando). Mas, assim todos os inimigos usam as mesmas colisões do jogador + a colisão do inimigo.
Olha só se não é o Rick Resurgindo das cinzas com detalhes técnicos de games do NES kkkkk!